Хотя @kith проложил путь, можно сделать еще больше. Собственно, весь процесс можно автоматизировать. Сначала создадим данные:
x1 <- rnorm(10)
x2 <- rnorm(10)
x3 <- rnorm(10)
y <- rnorm(10)
x4 <- y + 5 # this will make a nice significant variable to test our code
(mydata <- as.data.frame(cbind(x1,x2,x3,x4,y)))
Тогда наша модель:
model <- glm(formula=y~x1+x2+x3+x4,data=mydata)
И логический вектор коэффициентов действительно может быть извлечен следующим образом:
toselect.x <- summary(model)$coeff[-1,4] < 0.05 # credit to kith
Но это не все! Кроме того, мы можем это сделать:
# select sig. variables
relevant.x <- names(toselect.x)[toselect.x == TRUE]
# formula with only sig variables
sig.formula <- as.formula(paste("y ~",relevant.x))
РЕДАКТИРОВАТЬ: как указывалось на последующих плакатах, последняя строка должна быть sig.formula <- as.formula(paste("y ~",paste(relevant.x, collapse= "+")))
, чтобы включать все переменные.
И запустите регрессию только со значимыми переменными, как изначально хотел OP:
sig.model <- glm(formula=sig.formula,data=mydata)
В этом случае оценка будет равна 1, поскольку мы определили x4 как y + 5, подразумевая идеальную связь.
person
Maxim.K
schedule
22.04.2013