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