Функция mice :: pool выдает случайную ошибку в R при выполнении mfp-анализа: «Duplicate row.names» - PullRequest
0 голосов
/ 18 декабря 2018

Я провел многократное вменение для набора данных, затем подогнал некоторые модели, используя with (), и, наконец, объединил результаты.Однако в некоторых из этих моделей функция пула выдает ошибку.

imp <- mice(data, seed = 120189)

mod1 <- with(imp, mfp(tri ~ fp(waist, df = 4, select = 0.05) + age + sedentary + drinker + smoker, family = gaussian))

summary(mice::pool(mod1))

Работает какШарм!Но когда я моделирую другую зависимую переменную:

mod2 <- with(imp, mfp(hdl ~ fp(waist, df = 4, select = 0.05) + age + sedentary + drinker + smoker, family = gaussian))

summary(mice::pool(mod2))

я получаю ошибку, подобную этой: Error in data.frame(pooled[, -1L], row.names = pooled$term) : duplicate row.names: (Intercept)

В болееподробно, вот как выглядит трассировка:

6. stop(gettextf("duplicate row.names: %s", paste(unique(row.names[duplicated(row.names)]), collapse = ", ")), domain = NA) 5. data.frame(pooled[, -1L], row.names = pooled$term) 4. pool.fitlist(getfit(object), dfcom = dfcom) 3. mice::pool(mod2) 2. summary(mice::pool(mod2))

Мне трудно представить воспроизводимый пример, но я подумал, не сталкивался ли кто-нибудь с той же ошибкой и знает, как ее исправить.Это?Я прочитал несколько подобных вопросов здесь и у меня сложилось впечатление, что что-то не так в том, как читается data.frame, но ни один из других вопросов не был специально для функции пула.

После некоторого устранения неполадок, я полагаю, проблема в том, что в моделях, где пул не работает, 5 различных вмененных наборов данных генерируют разные дробные степени полинома - то есть, row.names в пяти моделях не совпадают(mfp меняет имя строки на преобразованный предиктор).Например, I((waist_s1/100)^2)+I((waist_s1/100)^3) против I((waist_s1/100)^2)+I((waist_s1/100)^2*log((waist_s1/100)))

Следовательно, проблема, вероятно, связана с использованием mfp, то есть с нестабильностью в fp power.У кого-нибудь есть мысли по этому поводу?

...