Ошибка при вводе большого фрейма данных с помощью мыши

Я пытался определить набор данных с помощью пакета mice, используя следующий код:

my_imp <- mice(train, m=5, method="pmm", maxit=50)

и я получил эту ошибку:

iter imp variable
  *1   1  existence.expectancy.indexError in solve.default(xtx + diag(pen)) : 
  system is computationally singular: reciprocal condition number = 3.96306e-17*

Вот пример из моего фрейма данных (dput). Ошибка, вероятно, возникает из-за столбца existence.expectancy.index.

structure(list(galactic.year = c(990025L, 990025L, 990025L, 990025L, 
990025L), galaxy = c("Large Magellanic Cloud (LMC)", "Camelopardalis B", 
"Virgo I", "UGC 8651 (DDO 181)", "Tucana Dwarf"), existence.expectancy.index = c(0.628656922579983, 
0.818082166933375, 0.659443179243005, 0.555861648365899, 0.991196351622249
)), class = "data.frame", row.names = c(NA, -5L))

Пожалуйста, дайте мне идеи о том, как решить ошибку.


person Afrikan_patriot    schedule 09.06.2020    source источник
comment
Здравствуйте и добро пожаловать в SO, не могли бы вы поделиться образцом своих данных. Без этого будет очень трудно найти, в чем проблема. Используйте can dput() или dput(head()), если набор данных большой. Пожалуйста, помогите нам помочь вам.   -  person Jan    schedule 09.06.2020
comment
Привет, прочитайте связанные вопросы и ответы: stackoverflow.com/a/58832614/6574038 Возможный дубликат.   -  person jay.sf    schedule 09.06.2020
comment
@Afrikan_patriot В чем отличие вашего случая от того, что предложенный подход к изоляции ошибок не сработает?   -  person jay.sf    schedule 09.06.2020
comment
@Afrikan_patriot Спасибо за обновление. Однако, когда вы используете dput, лучше не изменять вывод при его предоставлении. Я попытался исправить это в редактировании вашего вопроса. Если вы хотите dput подмножество ваших данных, используйте, например. dput(dtrain[1:30, ]). Во всяком случае, я попробовал ваш код и данные и не смог воспроизвести вашу ошибку. Также вопрос моего последнего комментария все еще может быть открытым.   -  person jay.sf    schedule 09.06.2020
comment
@jay.sf спасибо за совет и редактирование   -  person Afrikan_patriot    schedule 09.06.2020
comment
@jay.sf у меня есть решение. Проблема с использованием мышей для импутации здесь заключается в большом количестве несбалансированных факторных переменных в этом наборе данных. Когда они превращаются в фиктивные переменные, существует высокая вероятность того, что один столбец будет линейной комбинацией другого. Поскольку методы вменения по умолчанию включают линейную регрессию, это приводит к тому, что X-матрица не может быть инвертирована. Одним из решений является изменение метода вменения по умолчанию на не стохастический.   -  person Afrikan_patriot    schedule 09.06.2020
comment
@Afrikan_patriot Вы можете дать собственный ответ на свой вопрос.   -  person jay.sf    schedule 09.06.2020


Ответы (1)


Проблема с использованием мышей для импутации здесь заключается в большом количестве несбалансированных факторных переменных в этом наборе данных. Когда они превращаются в фиктивные переменные, существует высокая вероятность того, что один столбец будет линейной комбинацией другого. Поскольку методы вменения по умолчанию включают линейную регрессию, это приводит к тому, что X-матрица не может быть инвертирована.

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

person Afrikan_patriot    schedule 09.06.2020