2

我正在分析来自欧洲社会调查的数据。由于相当多的数据丢失,我使用了 amelia 包进行插补。依赖值是具有 4 个值的序数,因此我计划使用 Zelig 包中的“ogit”函数执行有序逻辑回归:

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”模型。

因此,我想知道之前是否有人能够在 amelia 数据上使用 zelig 运行“ologit”,或者是否有人知道可能是什么问题?我将不胜感激任何想法和建议。非常感谢您的时间和帮助。

这是一个使用 ordinal 包中的 wine 数据集的示例:

library(Amelia)
library(Zelig)
library(ordinal)

data(wine)
w <- wine

set.seed(10)
w[sample(1:nrow(w), 20), "response"] <- NA
w[sample(1:nrow(w), 20), "rating"] <- NA
w[sample(1:nrow(w), 20), "temp"] <- NA
w[sample(1:nrow(w), 5), "contact"] <- NA
w[sample(1:nrow(w), 5), "bottle"] <- NA


w.amelia <- amelia(w, m = 5, idvars="bottle", ords = c("rating","judge"),
                     noms = c("contact", "temp"),
                     incheck = TRUE)

z.out <- zelig(rating ~ contact + temp, model = "ologit", data = w.amelia)

summary(z.out)
4

1 回答 1

1

看起来该zilig函数(带有模型=“ogit”)不适用于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
于 2019-09-23T14:57:02.553 回答