Я хотел бы принудительно включить определенные переменные в регрессии glm без полного определения каждой из них. В моем реальном наборе данных ~ 200 переменных. Мне пока не удалось найти образцы этого в моем онлайн-поиске.
Например (всего с 3 переменными):
n=200
set.seed(39)
samp = data.frame(W1 = runif(n, min = 0, max = 1), W2=runif(n, min = 0, max = 5))
samp = transform(samp, # add A
A = rbinom(n, 1, 1/(1+exp(-(W1^2-4*W1+1)))))
samp = transform(samp, # add Y
Y = rbinom(n, 1,1/(1+exp(-(A-sin(W1^2)+sin(W2^2)*A+10*log(W1)*A+15*log(W2)-1+rnorm(1,mean=0,sd=.25))))))
Если я хочу включить все основные термины, это будет простой ярлык:
glm(Y~., family=binomial, data=samp)
] Но скажем, я хочу включить все основные термины (W1, W2 и A) плюс W2 ^ 2:
glm(Y~A+W1+W2+I(W2^2), family=binomial, data=samp)
Есть ли для этого ярлык?
[редактирование себя перед публикацией:] Это работает! glm (формула = Y ~. + I (W2 ^ 2), family = binomial, data = samp)
Хорошо, а что насчет этого!
Я хочу опустить одну переменную основных терминов и включить только два основных термина (A, W2) и W2 ^ 2 и W2 ^ 2: A:
glm(Y~A+W2+A*I(W2^2), family=binomial, data=samp)
Очевидно, что всего с несколькими переменными никакого ярлыка не требуется, но я работаю с данными большого размера. Текущий набор данных содержит «всего» 200 переменных, но в некоторых других есть тысячи и тысячи.
Анико ответила на ваш вопрос. Чтобы немного расширить:
Вы также можете исключить переменные, используя - :
glm(Y~.-W1+A*I(W2^2), family=binomial, data=samp)
Для больших групп переменных я часто делаю рамку для группировки переменных, что позволяет вам делать что-то вроде:
vars <- data.frame(
names = names(samp),
main = c(T,F,T,F),
quadratic =c(F,T,T,F),
main2=c(T,T,F,F),
stringsAsFactors=F
)
regform <- paste(
"Y ~",
paste(
paste(vars[vars$main,1],collapse="+"),
paste(vars[1,1],paste("*I(",vars[vars$quadratic,1],"^2)"),collapse="+"),
sep="+"
)
)
> regform
[1] "Y ~ W1+A+W1 *I( W2 ^2)+W1 *I( A ^2)"
> glm(as.formula(regform),data=samp,family=binomial)
Используя все виды условия (по имени, по структуре, что угодно) для заполнения фрейма данных позволяют мне быстро выбирать группы переменных в больших наборах данных.