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])
Примечание: вы можете сообщить об этом сопровождающему пакета мышей.