Rに負の二項回帰を適合させることができません(公開された結果を複製しようとしています)


8

最近公開された記事の結果を再現しようとすると、

アギオン、フィリップ、ジョンヴァンリーネン、ルイージジンガレス。2013.「イノベーションと制度的所有権」。American Economic Review、103(1):277-304。

(データとスタタのコードは、http: //www.aeaweb.org/aer/data/feb2013/20100973_data.zipで入手できます)。

Rの最初の5つの回帰を(OLSとポアソン法を使用して)再作成しても問題はありませんが、Rで負の二項回帰結果を再作成できません。

具体的には、ここで私が作成したRコードは、データに対して負の二項回帰を実行できません。

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

上記をRで実行すると、次の出力が得られます。

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

シータにいくつかの異なる初期値を使用したり、運のない最大反復回数を変えたりしてみました。著者が提供したstataコードは問題なく機能しますが、モデルを機能させるためにRを強制することはできません。glm.nb()の代替のフィッティングメソッドはありますか?


1
少ない変数で収束しますが、すべてではありません-変数が多く、非常に醜い結果変数があります。おそらく1日か2日以内に返信がない場合は、r-help @ r-project.orgに電子メールを送信してください。
user20650 2013年

3
最終的に、ポアソン回帰を実行して開始パラメーター値を取得し、これらを対数尤度関数のMLEに供給することで、これを推定することができました。これに対する解決策を間もなく投稿します。
jayb

2
@jaybあなたの解決策を見てみたい
アンディ

1
@jayb私はあなたの解決策を見てみたい:)
KH Kim

1
@jaybこの質問は死んでいるか、他の場所で回答されていますか?
デイブフルニエ、2015年

回答:


2

Mpμ

μ=exp(Mp)
Σ
M=OΣ
O
Mp=OΣp
q
p=Σq
μ=exp(Oq)
qp。この手法を使用してモデルをADモデルビルダーで近似しましたが、Rでも機能する可能性があります。いずれの場合も、モデルを近似した後、各観測値の二乗差とその平均をで割った「残差」を確認する必要があります分散の推定。このタイプのモデルでは一般的であるように、いくつかの大きな残差があります。これらは、論文の結果を真剣に受け止める前に検討する必要があると思います。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.