R: Построение формул из строк в with.mids()

Я хочу иметь возможность запустить регрессию на mids объект, возвращенный mice()на основе формулы, построенной из строки. Для обычной регрессии (без вменения) это легко:

library(mice)
for (x in c('age','hyp','chl')) {
  regx <- lm(data=nhanes2,paste('bmi ~',x))
  print(summary(regx)$coefficients)
}

Я думаю, что делать то же самое на вменяемом наборе данных должно выглядеть примерно так:

imp <- mice(nhanes2,printFlag = FALSE)
for (x in c('age','hyp','chl')) {
  regx <- with(data=imp,exp=lm(paste('bmi ~',x)))
  summary(pool(regx))
}

R говорит мне, однако, что object 'bmi' was not found,

reg <- with(data=imp,exp=lm(bmi ~ age))
summary(pool(reg))

работает просто отлично, но требует, чтобы я жестко кодировал имена столбцов вместо предоставления строковой переменной.

Есть ли способ сделать это?

1 ответ

Решение

Обычно lm действительно принимает символьную строку вместо формулы, но, кажется, не в пределах with.mids так что переведите его в формулу самостоятельно:

f <- function(nm) {
     s <- paste("bmi", nm, sep = "~")
     regx <- with(imp, lm(as.formula(s)))
     summary(pool(regx))
}
Map(f, names(nhanes)[-2])

Примечание: вы можете сообщить об этом сопровождающему пакета мышей.

Другие вопросы по тегам