dim(X) должен иметь положительную длину при использовании функции мыши

Я выполняю вменение отсутствующих значений для ряда порядковых переменных.

Сначала я читаю во фрейме данных и делаю некоторую очистку:

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)

Пожалуйста помоги! Благодарю вас!


person user6566348    schedule 04.05.2017    source источник


Ответы (1)


Я также получил это сообщение об ошибке несколько раз. После некоторых экспериментов с кодом я выяснил причину, по которой я получил такое сообщение: редкая/странная комбинация (а) очень небольшого количества отсутствующих случаев в переменной (отсутствующее значение для одного случая только в этой переменной) и (б) назначение «неправильного» метода вменения для этой переменной (например, использование метода опроса для вменения бинарной переменной). Как только я исправил это, установив метод вменения «logreg» для этой двоичной переменной, я перестал получать сообщение об ошибке.

Хотя не уверен, что это ваш случай. Я бы порекомендовал некоторую проверку данных, чтобы проверить количество пропущенных значений для каждого случая и назначить «правильный» метод вменения для каждой переменной (если вы не используете pmm — pmm хорошо работает для многих различных типов переменных, см. комментарии здесь: https://statisticalhorizons.com/predictive-mean-matching).

Например, если у вас есть V1 (двоичный), V2 (упорядоченный), V3 (непрерывный), V4 (мультиномный) и V5 (упорядоченный), вы можете установить метод следующим образом:

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

Надеюсь это поможет.

person FabF    schedule 08.08.2017
comment
Я обнаружил то же самое, когда у меня была эта ошибка (это было для столбца только с 1 отсутствующей переменной). Просто пришлось удалить этот случай, и в противном случае все вменения прошли гладко. - person Brandon; 14.02.2020