Ошибка при использовании пакета MICE

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

Импутация mice() работала нормально для всех моих наборов данных, кроме одного. Я получаю следующую ошибку, когда пытаюсь использовать mice():

Error in cor(xobs[, keep, drop = FALSE], use = "all.obs") : 'x' is empty

Я попытался решить проблему следующим образом:

  • Изменение формата данных на массив и матрицу
  • Выбор подмножеств данных.

Но вышеуказанные подходы не дали мне никаких результатов.

Вот воспроизводимый пример:

#library used
library(mice)

#Generate dataset
Repdata <- matrix(data = c(1    , 40546,  0.0016,   -0.0053,    -0.0003, -0.0012,  0.0012,   0.0051, -0.0005,   -0.0008,  0.0057, -0.0068,
                       2    , 40547,  0.012 ,  0.0047,   0.0139,  NA      ,  0.0026,    -0.0073, -0.0001,    0.0087,  0.0058, -0.0049,
                       3    , 40548,  0.0067,    0.0009,     0.0157, -0.0009,  0.0118,   0.0047,  0.0003,    0.0079,  0.0102,   0.0006,
                       4    , 40549,  0.0045,   -0.0022,     0.0046,  0.0037,  0.0106,   0.0029,  0.0004,   -0.0022,  0.0041, -0.0017,
                       5    , NA,     0.0007,   -0.0027,     NA   ,   0.0002,  0.0073,  -0.0023, -0.0003,    0.0023,  0.0003,   0.0019,
                       6    , 40551,  0.0005,    0.0006,     0.0005,  NA      ,  NA    ,    0.001,  NA    , -0.0013,  0.0013,   0.0001,
                       7    , 40553,  0.0014,    0.0008,     0.0008,  0.0009, -0.0004,  -0.0031,  0.0006,    0.0029, -0.0059,   0.0016,
                       8    , 40554,  0.0069,   -0.0034,     0.0052, -0.002 , -0.0024,  -0.0029, -0.0001,   -0.007 , 0.0045 , -0.005,
                       9    , 40555,  NA    ,   -0.0046,    -0.0018, -0.0028, -0.0085,  -0.0059, -0.0003,   -0.0017, -0.0003,   NA,
                       10   , 40556, -0.0057,    0.0026,    -0.0038,  0.0001, -0.0185,  -0.0086,  NA      ,  0.0013, -0.0045,   0.0003), nrow = 10, byrow = TRUE)

 #Impute missing values:
 mice(Repdata)

Ошибка:

Error in cor(xobs[, keep, drop = FALSE], use = "all.obs") : 'x' is empty

person Schalk Burger    schedule 21.11.2017    source источник
comment
Это может помочь   -  person nghauran    schedule 21.11.2017
comment
Спасибо @АНГ. Я посмотрел на этот конкретный вопрос, но на этот вопрос нет четкого ответа.   -  person Schalk Burger    schedule 21.11.2017
comment
Конечно, но вы должны предоставить минимальный воспроизводимый пример? Попробуйте использовать подмножество ваших данных.   -  person nghauran    schedule 21.11.2017
comment
Лучше всего предположить, что корреляция между V1 и V2 просто слишком высока (почти идеально коррелированы, r = 0,9975), что приводит к тому, что алгоритм каким-то образом ломается, поскольку V2 точно предсказывается V1. Исключение V2 из набора данных устраняет ошибку.   -  person Niek    schedule 21.11.2017
comment
Нужно ли вменять V2? Понятно, что в примере отсутствует значение 40550. Если ваши реальные данные содержат подобную переменную, я предлагаю удалить ее, а затем заменить.   -  person Niek    schedule 21.11.2017
comment
@Niek, это всего лишь пример (mtcars), но в моих реальных данных мне нужно указать все переменные. Я тестирую методы вменения и сделал почти все вменения, с которыми столкнулся.   -  person Schalk Burger    schedule 21.11.2017
comment
Вы изучали корреляции между переменными в вашем наборе данных? Возможно ошибка вызвана похожей проблемой   -  person Niek    schedule 21.11.2017
comment
@Ник, да, есть. Самая большая корреляция составляет 0,66. Я не думаю, что это достаточно велико, чтобы быть удаленным.   -  person Schalk Burger    schedule 21.11.2017