RでWLS回帰の重みを決定する方法


8

DNAメチル化マーカーのセットの関数として年齢を予測しようとしています。これらの予測子は0から100まで連続しています。OLS回帰を実行すると、年齢とともに分散が増加することがわかります。

したがって、私は加重回帰モデルを当てはめることにしました。ただし、モデルの重みを定義する方法を決定するのに苦労しています。私は次のようにfGLSメソッドを使用しました:

OLSressq <- OLSres^2                 # Square residuals
lnOLSressq <- log(OLSressq)          # Take natural log of squared residuals
aux <- lm(lnOLSressq~X)              # Run auxillary model
ghat <- fitted(aux)                  # Predict g^
hhat <- exp(ghat)                    # Create h^
fGLS <- lm(Y~X, weights = 1/hhat)    # Weight is 1/h^

そして、これらは私の結果でした:

Call:
lm(formula = Y ~ X, weights = 1/hhat)

Weighted Residuals:
    Min      1Q  Median      3Q     Max 
-4.9288 -1.2491 -0.1325  1.2626  5.1452 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept) 23.1009494  5.2299867   4.417 1.64e-05 ***
XASPA       -0.1441404  0.0474738  -3.036  0.00271 ** 
XPDE4C       0.6421385  0.0812891   7.899 1.83e-13 ***
XELOVL2     -0.2040382  0.0866564  -2.355  0.01951 *  
XELOVL2sq    0.0088532  0.0009381   9.438  < 2e-16 ***
XEDARADD    -0.1965472  0.0348989  -5.632 5.98e-08 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Residual standard error: 1.762 on 200 degrees of freedom
Multiple R-squared:  0.9687,    Adjusted R-squared:  0.9679 
F-statistic:  1239 on 5 and 200 DF,  p-value: < 2.2e-16

ただし、fGLSメソッドの実行方法を理解する前に、何が発生するかを確認するためだけに、さまざまな重みをいじっていました。重みとして1 /(OLSモデルの2乗残差)を使用して、次のようになりました。

Call:
lm(formula = Y ~ X, weights = 1/OLSressq)

Weighted Residuals:
    Min      1Q  Median      3Q     Max 
-1.0893 -0.9916 -0.7855  0.9998  2.0238 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept) 30.8756737  1.1355861   27.19   <2e-16 ***
XASPA       -0.1956188  0.0116329  -16.82   <2e-16 ***
XPDE4C       0.6168490  0.0102149   60.39   <2e-16 ***
XELOVL2     -0.1596969  0.0116723  -13.68   <2e-16 ***
XELOVL2sq    0.0078459  0.0001593   49.26   <2e-16 ***
XEDARADD    -0.2492048  0.0068751  -36.25   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Residual standard error: 1 on 200 degrees of freedom
Multiple R-squared:      1, Adjusted R-squared:      1 
F-statistic: 1.133e+06 on 5 and 200 DF,  p-value: < 2.2e-16

残留標準誤差は小さく、R²は1(それは可能ですか?)に等しく、F統計ははるかに高いので、このモデルはfGLSメソッドで達成したものよりも優れていると思いがちです。ただし、試行錯誤によってランダムに重みを選択すると、実際に数学的に正しい重みを推定しようとする場合よりも常に悪い結果が得られるように思えます。

誰かがモデルに使用する重みについてアドバイスをくれますか?また、OLS回帰を実行するときと同じようにR²を解釈することはできないことも、ここで読みました。しかし、それをどのように解釈する必要がありますか?それでも、それを使用して、WLSモデルをOLSモデルと何らかの形で比較できますか?


2
それについては非常に慎重になるでしょうR-squared = 1。潜在的な重みがどうあるべきかについての考えはありますか?まるで1/(squared residuals of OLS model)推測のように聞こえます。重みがわからない場合は、GLSまたは反復加重最小二乗法を使用することをお勧めします。
Jon

同じモデルをトレーニングセット(元のデータの半分)に当てはめると、R二乗が1から0,9983に減少したことを追加する必要があります。それは確かに単なる推測でした。そのため、上記で説明したように、最終的にfGLSを使用しました。「GLSの使用をお勧めします」とはどういう意味ですか?重みを推測するだけで作成したモデルが、fGLSを使用して重みを推定して作成したモデルよりも適切であると思われる理由について、私は混乱しています。反復加重最小二乗法についてはまだ聞いたことがありませんが、詳しく見ていきます。ありがとうございました。
I. Smeers

@ジョン、実行可能なGLSでは重みを指定する必要があります(理論的に最適な重みを使用する実行不可能なGLSは実行可能な推定量ではないため、実際には使用できません)。
Richard Hardy

それは正解です。ただし、nlme::gls関数で相関構造を指定できます。nlme::corClasses異なる相関構造体のリストを提供します。
Jon

回答:


0

なぜFLGSを使用しているのですか?残差間の異分散性と相関関係がありますか?そして、行列var-cov行列は不明ですか?試してみbptest(your_model)て、p値がアルファ(0.05など)より小さい場合は、異分散性があります。そして、ダービンワトソン検定で残差の間に相関関係があるかどうかを理解しようとする必要があります。dwtest(your_model)統計量Wが1〜3の場合、相関関係はありません。したがって、異分散性しかない場合は、次のようにWLSを使用する必要があります。

mod_lin <- lm(Price~Weight+HP+Disp., data=df)
wts     <- 1/fitted( lm(abs(residuals(mod_lin))~fitted(mod_lin)) )^2
mod2    <- lm(Price~Weight+HP+Disp., data=df, weights=wts)

そう mod2今WLSと、古いモデルです。

R-square = 1、それは奇妙すぎる。多分共線性があります。


1
なぜDWテストが適切なのでしょうか。私はそれを自己相関のためだけに使用されていると思います、そしてそれがこの場合どのように適用されるかわかりません。
me

1
xvalidatedへようこそ!パッケージ・ファンクションを指定してくださいbptestdwtest、彼らは標準Rディストリビューションの一部ではないとしてから来ます。
Helix123

WLS、のFGL、オール電気ショック療法...のように:あなたは最適な推定を理解する必要がありますので
ロレンツォFamiglini
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.