Я пытаюсь вписать значения в сильно коррелированные переменные, используя функцию 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
или есть другой пакет, более подходящий для этого?