dfbetasを手動で計算する方法


8

Rでの関数のdfbetas()動作を再現しようとしています。

dfbeta() 問題ではありません...ここに一連のベクトルがあります:

x <- c(0.512, 0.166, -0.142, -0.614, 12.72)
y <- c(0.545, -0.02, -0.137, -0.751, 1.344)

次のように2つの回帰モデルを当てはめる場合:

fit1 <- lm(y ~ x)
fit2 <- lm(y[-5] ~ x[-5])

最後のポイントを削除すると、非常に異なる勾配(青い線-急)になることがわかります。

ここに画像の説明を入力してください

これは、勾配の変化に反映されています。

fit1$coeff[2] - fit2$coeff[2]
-0.9754245

これdfbeta(fit1)は、5番目の値のと一致します。

   (Intercept)            x
1  0.182291949 -0.011780253
2  0.020129324 -0.001482465
3 -0.006317008  0.000513419
4 -0.207849024  0.019182219
5 -0.032139356 -0.975424544

この勾配の変化を標準化したい場合(dfbetasを取得)、次の方法を使用します。

ウィリアムズ、DA(1987)逸脱度と単一ケースの削除を使用した一般化線形モデル診断。応用統計36、181–191

これは、パッケージ{stats}の下のRドキュメントの参照の1つかもしれません。dfbetasの式は次のとおりです。

dfbetasft=b^b^SEb^

これは、Rで簡単に計算できます。

(fit1$coef[2] - fit2$coef[2])/summary(fit2)$coef[4]

降伏: -6.79799

問題は、なぜ私が勾配の5番目の値を取得しないのかです。

dfbetas(fit1)

  (Intercept)            x
1  1.06199661  -0.39123009
2  0.06925319  -0.02907481
3 -0.02165967   0.01003539
4 -1.24491242   0.65495527
5 -0.54223793 -93.81415653!

dfbetaからdfbetas移行するための正しい方程式は何ですか?

回答:


10

DFBETSk

bkbkMSEckkkp

bkkbkMSEckkkバツバツ1

DFBETSk

numerator<-(fit1$coef[2] - fit2$coef[2])
denominator<-sqrt((summary(fit2)$sigma^2)*diag(summary(fit1)$cov.unscaled)[2])
DFBETAS<-numerator/denominator
DFBETAS
        x 
-93.81416 

明らかでない場合、pは回帰パラメーターまたは係数の数です。ずさんな表記でごめんなさい。;-)
StatsStudent 2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.