Tidak dapat mencocokkan regresi binomial negatif dalam R (berusaha mereplikasi hasil yang dipublikasikan)

8

Mencoba untuk mereplikasi hasil dari artikel yang baru diterbitkan,

Aghion, Philippe, John Van Reenen, dan Luigi Zingales. 2013. "Inovasi dan Kepemilikan Institusional." American Economic Review, 103 (1): 277-304.

(Data dan kode stata tersedia di http://www.aeaweb.org/aer/data/feb2013/20100973_data.zip ).

Saya tidak memiliki masalah untuk menciptakan 5 regresi pertama dalam R (menggunakan metode OLS dan poisson), tetapi saya tidak dapat membuat kembali hasil regresi binomial negatif dalam R, sedangkan di stata, regresi berfungsi dengan baik.

Secara khusus, inilah kode R yang saya tulis, yang gagal menjalankan regresi binomial negatif pada data:

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))

Menjalankan di atas dalam R, saya mendapatkan output berikut:

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

Telah mencoba menggunakan sejumlah nilai awal yang berbeda untuk theta, serta memvariasikan jumlah iterasi maksimum tanpa keberuntungan. Kode stata yang disediakan penulis berfungsi dengan baik, tetapi saya masih belum bisa memaksa R agar model ini berfungsi. Apakah ada metode pemasangan alternatif untuk glm.nb () yang mungkin lebih kuat untuk masalah yang saya temui?

jayb
sumber
1
Ini akan menyatu untuk variabel yang lebih sedikit tetapi tidak semuanya - ada banyak variabel dan variabel hasil yang sangat jelek. Mungkin coba mengirim email ke [email protected] untuk mendapatkan bantuan jika tidak ada balasan dalam satu atau dua hari.
user20650
3
Akhirnya bisa memperkirakan ini dengan menjalankan regresi poisson untuk mendapatkan mulai nilai parameter, kemudian memasukkannya ke dalam MLE pada fungsi log likelihood. Akan memposting solusi untuk ini segera.
jayb
2
@jayb Ingin melihat solusi Anda
Andy
1
@ Jay Saya ingin melihat solusi Anda :)
KH Kim
1
@ Jayb Apakah pertanyaan ini mati atau dijawab di tempat lain apakah masih ada minat?
dave fournier

Jawaban:

2

Ada banyak literatur tentang parameterisasi model nonlinier yang stabil. Untuk beberapa alasan ini tampaknya sebagian besar diabaikan dalam R. Dalam hal ini "matriks desain" untuk manfaat prediktor linier dari beberapa pekerjaan. Biarkan menjadi matriks desain dan menjadi parameter model. Prediktor linier untuk mean diberikan oleh Reparameterisasi dilakukan dengan modifikasi gram-Schmidt yang menghasilkan matriks persegi sehingga mana kolom adalah ortonormal. (Sebenarnya beberapa kolom dalam hal ini adalah 0 sehingga metode ini harus dimodifikasi sedikit untuk menangani ini.) Kemudian Mpμ

μ=exp(Mp)
Σ
M=OΣ
O
Mp=OΣp
Biarkan parameter baru memuaskan Sehingga persamaan untuk rata-rata menjadi ini jauh lebih stabil dan satu dapat cocok dengan model untuk dan kemudian menyelesaikan untuk . Saya menggunakan teknik ini agar sesuai dengan model dengan AD Model Builder, tetapi mungkin berhasil dengan R. Dalam hal apa pun, setelah mencocokkan model, kita harus melihat "residual" yang merupakan perbedaan kuadrat antara setiap pengamatan dan rata-rata dibagi dengan memperkirakan varians. Seperti yang biasa terjadi pada model jenis ini ada beberapa residu besar. Saya pikir ini harus diperiksa sebelum hasil kertas dianggap serius.q
p=Σq
μ=exp(Oq)
qp
dave fournier
sumber