我正在分析欧洲社会调查的数据。由于大量丢失数据,我使用了amelia软件包进行插补。因值是具有4个值的序数,因此我计划使用Zelig软件包中的“ ologit”函数执行有序逻辑回归:
z.out <- zelig(as.factor(Y) ~ X1 + X2, model = "ologit", data = ameliadata)
该代码将运行,但是当我询问结果时,将显示以下错误代码:
z.out:
模型:se [i,]中的归因归类错误<-sqrt(diag(vcovlist [[i]])):要替换的项目数不是 替换长度的倍数
我有五个独立的估算数据集。分别进行分析,我可以将Zelig和“ ologit”功能用于这五个功能。仅当使用组合的amelia数据对象时,才会出现问题。我试图估计具有相同amelia输出的不同模型,但是我似乎只对与有序回归相关的模型有问题。例如,“ ls”模型运行得很好,如果我将因变量更改为二分法,那么我也可以运行“ logit”模型而不会出现问题。
因此,我想知道以前是否有人能够使用zelig对amelia数据运行“ ologit”,或者是否有人对可能的问题有任何了解?我将不胜感激任何想法和建议。 非常感谢您的时间和帮助。
PS:我很抱歉没有提供示例。我认为这可能无关紧要,因为问题在于估算数据集和zelig-package之间的兼容性,但是如果有人觉得有必要提供相关示例,我将在稍后提供。
答案 0 :(得分:1)
看起来zilig
函数(模型=“ ologit”)无法与amelia对象配合使用。
为此,您可以使用zilig
包分别对5个估算数据集中的每个数据集调用amelia
函数。下面我们可以看到两个估算数据集的拟合模型。
z.out1 <- zelig(rating ~ contact + temp, model = "ologit", data = w.amelia$imputations$imp1)
z.out2 <- zelig(rating ~ contact + temp, model = "ologit", data = w.amelia$imputations$imp2)
接收每个估算数据的输出:
> summary(z.out1)
Model:
Call:
z5$zelig(formula = rating ~ contact + temp, data = w.amelia$imputations$imp1)
Coefficients:
Value Std. Error t value
contactyes 1.973 0.4937 3.997
tempwarm 1.493 0.4617 3.235
Intercepts:
Value Std. Error t value
1|2 -1.2246 0.4425 -2.7675
2|3 1.0072 0.3884 2.5931
3|4 2.8052 0.5101 5.4987
4|5 4.0133 0.6135 6.5411
Residual Deviance: 189.7068
AIC: 201.7068
Next step: Use 'setx' method
> summary(z.out2)
Model:
Call:
z5$zelig(formula = rating ~ contact + temp, data = w.amelia$imputations$imp2)
Coefficients:
Value Std. Error t value
contactyes 1.73 0.4760 3.635
tempwarm 1.69 0.4774 3.539
Intercepts:
Value Std. Error t value
1|2 -0.6469 0.4850 -1.3338
2|3 1.3290 0.4659 2.8525
3|4 2.8718 0.5571 5.1547
4|5 4.2483 0.6751 6.2932
Residual Deviance: 198.7817
AIC: 210.7817
Next step: Use 'setx' method