【问题标题】:dim(X) must have a positive length when using mice function使用鼠标功能时,dim(X) 必须具有正长度
【发布时间】:2023-03-27 17:22:01
【问题描述】:

我正在对一系列序数变量进行缺失值插补。

我首先读入数据框并进行一些清理:

dietgp1m<-read.csv(file='1 Month data-diet.csv',header=TRUE,na.strings=c(""," ","NA","."))
for (i in 1:ncol(dietgp1m)) {dietgp1m[,i]<-as.factor(dietgp1m[,i])}
dietgp1m<-dietgp1m[!is.na(dietgp1m$Patient.Trial.ID),]
dietgp1m["count"]<-0
for (i in 1:nrow(dietgp1m)) {dietgp1m$count[i]<-0; for (j in 9:298) {if (!is.na(dietgp1m[i,j])) {dietgp1m$count[i]<-dietgp1m$count[i]+1}}}
dietgp1m<-dietgp1m[dietgp1m$count!=0,]

然后我创建一个用于缺失值插补的函数,对数据集进行子集化并运行该函数:

# Imputation
imputation<-function(A){
  B<-mice(data = A, m = 5, method = "polr", maxit = 50, seed = 500)
  C<-complete(B, 'long', include=TRUE) #include=TRUE if include the original dataset with missing values
print(colnames(C))
###pool imputed data
for (i in 4:ncol(C)) {C[,i]<-as.numeric(as.character(C[,i]))}
for (j in 4:ncol(C)) {for (i in 1:159) {if (is.na(C[i,j])) {C[i,j]<-round((C[i+159,j]+C[i+159*2,j]+C[i+159*3,j]+C[i+159*4,j]+C[i+159*5,j])/5)}}}
print(nrow(C)); print(ncol(C))
}

# Quality of life
# Diet group 1 month
seb<-subset(df3, select=c(Patient.Trial.ID, Q32a:Q32j))
missinganalysis(seb)
imputation(seb)

然后我收到一条错误消息:

 iter imp variable
  1   1  Q32a
Error in apply(draws, 2, sum) : dim(X) must have a positive length
Called from: apply(draws, 2, sum)

请帮忙!谢谢!

【问题讨论】:

    标签: imputation


    【解决方案1】:

    我也多次收到此错误消息。经过一些代码实验后,我发现了收到这样一条消息的原因:(a)变量中的缺失案例数量非常少(仅在该变量中的一个案例缺失值)和(b)的罕见/奇怪组合为该变量分配“错误”的估算方法(例如,使用 polr 方法估算二进制变量)。一旦我解决了这个问题,将那个二进制变量的插补方法设置为“logreg”,我就不再收到错误消息了。

    但不确定这是您的情况。我建议进行一些数据筛选,以检查每种情况下缺失值的数量,并为每个变量分配“正确”的插补方法(如果您不使用 pmm - pmm 适用于许多不同类型的变量,请参阅 Van Buuren 的此处的 cmets:https://statisticalhorizons.com/predictive-mean-matching)。

    例如,如果您有 V1(二进制)、V2(有序)、V3(连续)、V4(多模)和 V5(有序),您可以将方法设置为:

    method=c('logreg', 'polr', 'pmm', 'polyreg', 'polr')
    

    希望这会有所帮助。

    【讨论】:

    • 当我遇到这个错误时,我发现了同样的事情(它是针对只有 1 个缺失变量的列)。只需要删除一个案例,否则所有插补都很顺利。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    相关资源
    最近更新 更多