R - Импутация с использованием мышей () не работает должным образом в сильно коррелированных настройках - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь вписать значения в сильно коррелированные переменные, используя функцию mice() в R (из пакета мышей).

Я случайно выбрал x, и затем пусть y будет линейной функцией x (без перехвата) вместе с некоторым шумом. Затем я удаляю некоторые случайные значения x и хочу вменять их, используя y.

Приведенный ниже код хорошо работает, когда beta (наклон) меньше 7, но когда я его увеличиваю, функция mice всегда дает только 5 различных значений. (Различные значения различаются при каждом запуске).

n <- 500
beta <- 8

# Generate data
x <- runif(n)
y <- beta * x + runif(n)

# Remove random x-values.
df <- data.frame(x=x, y=y)
R <- sample(c(TRUE, FALSE), n, replace=TRUE)
df$x[R] <- NA

imp <- mice(df, method="pmm", formulas=list(formula(x ~ y)))

# This value is always 5 when beta >= 8.
length(unique(complete(imp)$x[R]))

Глядя на loggedEvents из функции, я получаю следующую таблицу:

> imp$loggedEvents
   it im dep meth                                                       out
1   1  1   x  pmm All predictors are constant or have too high correlation.
2   1  2   x  pmm All predictors are constant or have too high correlation.
...
24  5  4   x  pmm All predictors are constant or have too high correlation.
25  5  5   x  pmm All predictors are constant or have too high correlation.

Я уже пробовал использовать разныераспределения при выборке x и y (хотя только симметричные распределения, которые необходимы для моделирования), и я попробовал все различные методы, доступные в mice. Только "pmm" (прогнозирующее среднее совпадение) кажется правильным, когда beta меньше 7.

Есть ли способ заставить это работать в mice или есть другой пакет, более подходящий для этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...