直交多項式回帰から生の係数と分散を回復する


14

それは私のような回帰モデルを持っている場合と思われるyβ0+β1バツ+β2バツ2+β3バツ3生の多項式を当てはめて信頼性の低い結果を得るか、直交多項式を当てはめて直接的な物理的解釈のない係数を得ることができます(たとえば、元のスケールで極値の位置を見つけるのに使用できません)。私は両方の長所を持ち、フィットした直交係数とその分散を元のスケールに変換できるようになっているようです。私は応用線形回帰の大学院コースを受講し(Kutner、5edを使用)、Draperの多項式回帰の章(3ed、Kutnerによって参照)を調べましたが、これを行う方法についての議論は見つかりませんでした。のヘルプテキストpoly()Rの関数はそうではありません。ここを含め、ウェブ検索で何も見つかりませんでした。直交多項式に当てはめられた係数から生の係数を再構築しています(そしてその分散を取得しています)...

  1. 不可能で、時間を無駄にしています。
  2. おそらく可能ですが、一般的な場合の方法はわかりません。
  3. 「誰がしたいのか?」
  4. 可能ですが、「明らか」だから議論されていません。

答えが3または4の場合、これを行う方法を説明したり、そうするソースを指摘したりする忍耐があれば、非常に感謝します。それが1または2の場合、私はまだ障害が何であるかを知りたいです。これを読んでくれてありがとう、そして明白な何かを見落としているなら、私は前もって謝罪する。


1
あなたのポイントがわかりません。x、x 2およびx 3は直交していません。したがって、それらは相関しており、回帰パラメーターは不安定になる可能性がありますが、信頼性が低いとは限りません。直交多項式への変換の方が信頼性が高い場合があります。しかし、元のxのべき乗の係数を直交多項式の係数よりも解釈可能なものにしているのはなぜですか?モデルy = a + bxのようにxが唯一の変数である場合、∆y = yi-yi-1 = b∆xであり、bはxの単位変化あたりのyの変化として解釈できます。しかし、関係する権限では、そのような解釈は失われます。23
マイケルR.チャーニック

単純にするために変数としてxだけを使用したモデルを使用しましたが、実際には治療グループ間で曲線を比較しています。したがって、重要な用語とその大きさに応じて、それら解釈することができます。たとえば、全体的な上昇/下降シフト、または初期勾配の増減です。また、私の質問が言うように、曲線間で行う自然な比較は最大値/最小値の位置であり、元のスケールである場合は解釈が容易です。だから、あなたの投票は選択肢3、私はそれを取る?
f1r3br4nd

いいえ、まだ可能かどうかはわかりません。私はあなたがそれをしたい理由を理解しました。
マイケルR.チャーニック

4
さて、直交多項式でのモデル適合は、生の多項式項でのモデル適合とまったく同じ適合(つまり、同じ、同じ適合値など)になることに注意してください。したがって、これを元のデータに関連付けたい場合は、生の項の係数を調べますが、直交多項式を使用して、それらの間の依存関係を「説明する」方法で個々の項の推論を行います。 。R2
マクロ

1
結局のところ、キュービックスプラインとBスプラインはすべて単独でクラスに属し、2つの世界の中で最高です。
カール

回答:


6

はい、可能です。

ましょから計算直交多項式の非定常部分であるX I。(各列は列ベクトルです。)これらをx iに対して回帰すると、完全に適合する必要があります。直交多項式を計算する手順を文書化していない場合でも、ソフトウェアこれを実行できます 回帰Z j個の利回り係数γ I jのためのz1z2z3バツバツzjγj

zj=γj0+バツγj1+バツ2γj2+バツ3γj3

結果は行列Γで、右乗算すると、設計行列X = 1 ; x ; x 2 ; x 3Z = 1 ; z 1 ; z 2 ; z 3に変換します4×4Γバツ=1;バツ;バツ2;バツ3

(1)Z=1;z1;z2;z3=バツΓ

モデルをフィッティングした後

EY=Zβ

推定係数を求めますββ^(4要素列ベクトル)は、置換していてもよい取得するために1

Y^=Zβ^=バツΓβ^=バツΓβ^

したがって、Γ(生、非直交)オリジナルの点での力モデルの推定係数ベクトルであるXΓβ^バツ

次のRコードは、これらの手順を示し、合成データでテストします。

n <- 10        # Number of observations
d <- 3         # Degree
#
# Synthesize a regressor, its powers, and orthogonal polynomials thereof.
#
x <- rnorm(n)
x.p <- outer(x, 0:d, `^`); colnames(x.p) <- c("Intercept", paste0("x.", 1:d))
z <- poly(x, d)
#
# Compute the orthogonal polynomials in terms of the powers via OLS.
#
xform <- lm(cbind(1, z) ~ x.p-1)
gamma <- coef(xform)
#
# Verify the transformation: all components should be tiny, certainly
# infinitesimal compared to 1.
#
if (!all.equal(as.vector(1 + crossprod(x.p %*% gamma - cbind(1,z)) - 1), 
    rep(0, (d+1)^2)))
  warning("Transformation is inaccurate.")
#
# Fit the model with orthogonal polynomials.
#
y <- x + rnorm(n)
fit <- lm(y ~ z)
#summary(fit)
#
# As a check, fit the model with raw powers.
#
fit.p <- lm(y ~ .-1, data.frame(x.p))
#summary(fit.p)
#
# Compare the results.
#
(rbind(Computed=as.vector(gamma %*% coef(fit)), Fit=coef(fit.p)))

if (!all.equal(as.vector(gamma %*% coef(fit)), as.vector(coef(fit.p))))
  warning("Results were not the same.")

いい答え、特に。コードの8行目に、(1 + cross ...-1)があります。+1-1.が必要な理由 Γ
pauljohn32

110161

2年後... @whuber、これを係数の95%CIにも拡張することは可能ですか?
user2602640

@ user2602640はい。あなたは(使用係数の分散共分散行列を抽出するために必要vcovR、新たな基礎のばらつきに1つのベースで計算された分散変換すること)した後、通常の方法で手動でCIを計算します。
whuber

@whuber私は途中であなたのコメントをフォローし、それからあなたを完全に失いました...あなたは数学的に挑戦された生物学者に同情して、コードでそれを書きますか?
user2602640
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.