Cách tính thủ công dfbetas


8

Tôi cố gắng để tái tạo những gì các chức năng dfbetas()làm trong R .

dfbeta() không phải là một vấn đề ... Đây là một tập các vectơ:

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

Nếu tôi phù hợp với hai mô hình hồi quy như sau:

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

Tôi thấy rằng việc loại bỏ điểm cuối cùng dẫn đến độ dốc rất khác (đường màu xanh - dốc hơn):

nhập mô tả hình ảnh ở đây

Điều này được phản ánh trong sự thay đổi về độ dốc:

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

trùng với dfbeta(fit1)giá trị thứ năm:

   (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

Bây giờ nếu tôi muốn tiêu chuẩn hóa sự thay đổi độ dốc này (có được dfbetas ) và tôi dùng đến:

Williams, DA (1987) Chẩn đoán mô hình tuyến tính tổng quát bằng cách sử dụng độ lệch và xóa trường hợp đơn. Thống kê áp dụng 36, 181 Từ1919

mà tôi nghĩ có thể là một trong những tài liệu tham khảo trong tài liệu R theo gói {stats} . Có công thức cho dfbetas là:

dfbetas(i,fit)=(b^b^i)SEb^i

Điều này có thể dễ dàng tính được trong R:

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

năng suất: -6.79799

Câu hỏi là tại sao tôi không nhận được giá trị thứ năm cho độ dốc trong:

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!

Phương trình đúng để đi từ dfbeta đến dfbetas là gì?

Câu trả lời:


10

DFBETASk(i) được tính bằng:

bkbk(i)MSE(i)ckk , với = 1, 2 ,. . . , .pkp

Trong đó là hệ số hồi quy thứ sử dụng tất cả dữ liệu và là cùng hệ số với trường hợp thứ bị xóa. ở đây là lỗi bình phương trung bình từ hồi quy trong đó trường hợp bị xóa và là phần tử đường chéo thứ của ma trận hiệp phương sai không được tính . k b k ( i ) i M S E ( i ) i c k k k ( X X ) - 1bkkbk(i)iMSE(i)ickkk(XX)1

Vì vậy, bạn có thể tính toán theo cách thủ công với mã R sau:DFBETASk(i)

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 

nếu nó không rõ ràng, p là số lượng tham số hồi quy hoặc hệ số. Xin lỗi vì ký hiệu cẩu thả. ;-)
StatsStudent 11/03/2015
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.