2015-12-22 2 views
1

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

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)) 

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

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

+0

Вы не представили пример. но 'formula' - это функция, которая вам нужна. – Jimbou

ответ

0

Обычно 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]) 

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

Смежные вопросы