R:具有多个插补数据的有序逻辑回归(阿米莉亚软件包)

时间:2019-04-20 21:44:25

标签: r regression imputation ordinal r-zelig

我正在分析欧洲社会调查的数据。由于大量丢失数据,我使用了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之间的兼容性,但是如果有人觉得有必要提供相关示例,我将在稍后提供。

1 个答案:

答案 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