Cara menghitung dfbetas secara manual

8

Saya mencoba untuk meniru apa fungsi dfbetas()tidak dalam R .

dfbeta() bukan masalah ... Ini adalah sekumpulan vektor:

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

Jika saya cocok dengan dua model regresi sebagai berikut:

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

Saya melihat bahwa menghilangkan titik terakhir menghasilkan kemiringan yang sangat berbeda (garis biru - lebih curam):

masukkan deskripsi gambar di sini

Ini tercermin dalam perubahan lereng:

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

yang bertepatan dengan dfbeta(fit1)untuk nilai kelima:

   (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

Sekarang jika saya ingin menstandarkan perubahan kemiringan ini (memperoleh dfbetas ) dan saya menggunakan:

Williams, DA (1987) Diagnosis model linier umum menggunakan penyimpangan dan penghapusan satu kasus. Statistik Terapan 36, 181–191

yang menurut saya mungkin menjadi salah satu referensi dalam dokumentasi R di bawah paket {stats} . Di sana rumus untuk dfbetas adalah:

dfbetSebuahs(saya,fsayat)=(b^-b^-saya)SEb^-saya

Ini dapat dengan mudah dihitung dalam R:

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

menghasilkan: -6.79799

Pertanyaannya adalah mengapa saya tidak mendapatkan nilai kelima untuk lereng di:

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!

Apa persamaan yang tepat untuk beralih dari dfbeta ke dfbetas ?

Antoni Parellada
sumber

Jawaban:

10

DFBETSEBUAHSk(saya) dihitung dengan:

bk-bk(saya)M.SE(saya)ckk, untuk k= 1, 2,. . . ,hal.

dimana bk adalah kKoefisien regresi th yang menggunakan semua data dan bk(saya) adalah koefisien yang sama dengan sayacase th dihapus. M.SE(saya) di sini adalah mean-square error dari regresi mana saya kasing dihapus dan ckk adalah kelemen diagonal th dari matriks kovarians tidak berskala (XX)-1.

Jadi kamu bisa menghitung DFBETSEBUAHSk(saya) secara manual dengan kode R berikut:

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 
StatsStudent
sumber
jika tidak jelas, p adalah jumlah parameter regresi atau koefisien. Maaf untuk notasi yang ceroboh. ;-)
StatsStudent