Không thể phù hợp với hồi quy nhị thức âm trong R (cố gắng sao chép các kết quả được công bố)


8

Cố gắng sao chép các kết quả từ bài báo được xuất bản gần đây,

Aghion, Philippe, John Van Reenen và Luigi Zingales. 2013. "Đổi mới và quyền sở hữu thể chế." Tạp chí kinh tế Mỹ, 103 (1): 277-304.

(Dữ liệu và mã stata có sẵn tại http://www.aeaweb.org/aer/data/feb2013/20100973_data.zip ).

Không có vấn đề gì khi tạo lại 5 hồi quy đầu tiên trong R (sử dụng phương pháp OLS và poisson), nhưng đơn giản là không thể tạo lại kết quả hồi quy nhị thức âm của chúng trong R, trong khi đó, hồi quy hoạt động tốt.

Cụ thể, đây là mã R tôi đã viết, không chạy được hồi quy nhị thức âm trên dữ liệu:

library(foreign)
library(MASS)
data.AVRZ <- read.dta("results_data2011.dta",
                  convert.underscore=TRUE)
sicDummies <- grep("Isic4", names(data.AVRZ), value=TRUE)
yearDummies <- grep("Iyear", names(data.AVRZ), value=TRUE)
data.column.6 <- subset(data.AVRZ, select = c("cites",
                                 "instit.percown",
                                 "lk.l",
                                 "lsal",
                                 sicDummies,
                                 yearDummies))
data.column.6 <- na.omit(data.column.6)

glm.nb(cites ~ .,
   data = data.column.6,
   link = log,
   control=glm.control(trace=10,maxit=100))

Chạy ở trên trong R, tôi nhận được đầu ra sau:

Initial fit:
Deviance = 1137144 Iterations - 1 
Deviance = 775272.3 Iterations - 2 
Deviance = 725150.7 Iterations - 3 
Deviance = 722911.3 Iterations - 4 
Deviance = 722883.9 Iterations - 5 
Deviance = 722883.3 Iterations - 6 
Deviance = 722883.3 Iterations - 7 
theta.ml: iter 0 'theta = 0.000040'
theta.ml: iter1 theta =7.99248e-05
Initial value for 'theta': 0.000080
Deviance = 24931694 Iterations - 1 
Deviance = NaN Iterations - 2 
Step halved: new deviance = 491946.5 
Error in glm.fitter(x = X, y = Y, w = w, etastart = eta, offset = offset,  : 
NA/NaN/Inf in 'x'
In addition: Warning message:
step size truncated due to divergence

Đã thử sử dụng một số giá trị ban đầu khác nhau cho theta, cũng như thay đổi số lần lặp tối đa không có may mắn. Mã stata được cung cấp của các tác giả hoạt động tốt, nhưng tôi dường như vẫn không thể ép buộc R làm cho mô hình hoạt động. Có phương pháp phù hợp thay thế nào cho glm.nb () có thể mạnh mẽ hơn đối với vấn đề tôi gặp phải không?


1
Nó sẽ hội tụ ít biến hơn nhưng không phải tất cả chúng - có rất nhiều biến và biến kết quả rất xấu. Có lẽ hãy thử gửi email r-help@r-project.org để được giúp đỡ về vấn đề này nếu không có câu trả lời trong một hoặc hai ngày.
20650

3
Cuối cùng đã có thể ước tính điều này bằng cách chạy hồi quy poisson để có được các giá trị tham số bắt đầu, sau đó đưa chúng vào MLE trên hàm khả năng đăng nhập. Sẽ đăng giải pháp này sớm.
jayb

2
@jayb Rất muốn xem giải pháp của bạn
Andy

1
@jayb Tôi rất muốn xem giải pháp của bạn :)
KH Kim

1
@jayb Câu hỏi này đã chết hay được trả lời ở nơi khác là vẫn còn sự quan tâm?
dave Fournier

Câu trả lời:


2

Mpμ

μ= =điểm kinh nghiệm(Mp)
Σ
M= =ÔiΣ
Ôi
Mp= =ÔiΣp
q
p= =Σq
μ= =điểm kinh nghiệm(Ôiq)
qp. Tôi đã sử dụng kỹ thuật này để phù hợp với mô hình với AD Model Builder, nhưng nó có thể hoạt động với R. Trong mọi trường hợp, khi phù hợp với mô hình, người ta phải nhìn vào "phần dư" là sự khác biệt bình phương giữa mỗi quan sát và ý nghĩa của nó chia cho ước tính cho phương sai. Dường như là phổ biến cho loại mô hình này, có một số dư lớn. Tôi nghĩ rằng những điều này nên được kiểm tra trước khi kết quả của bài báo được thực hiện nghiêm túc.
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.