R: как заставить glmnet включать переменные, которые, как я знаю, значимы? - PullRequest
0 голосов
/ 28 января 2019

К сожалению, я не могу предоставить воспроизводимый код или данные здесь, я просто ищу кого-нибудь, кто бы помог мне понять, как заставить glmnet в R работать лучше.

У меня большой набор данных смножество переменных, некоторые из которых я уже знаю, должны быть включены в «идеальную» модель.Но я хочу, чтобы glmnet выбрал для меня лучшие переменные.

Мои данные называются: Data, а переменная ответа называется resp, и у меня есть столбец для взвешивания переменной ответа, так как эторегрессия Пуассона, и веса называются weight.

Когда я удаляю свою переменную ответа и использую все доступные переменные, я получаю:

library(glmnet)
resp_variables = c("resp", "weight")
x_train <- model.matrix( ~ .-1, Data[,!colnames(Data) %in% resp_variables]) #191 columns
y_train <- Data$resp
weight  <- Data$weight
cvfit <- glmnet::cv.glmnet(x_train, y_train, intercept=FALSE, family="poisson",standardize=TRUE, alpha=1, weights = weight)

Нет изпеременные включаются, если я проверяю coef(cvfit, s = "lambda.min") или `coef (cvfit, s =" lambda.1se ").

С другой стороны, если я просто выберу три переменные вручную:

cvfit  <- glmnet::cv.glmnet(model.matrix(~Data$var1+ Data$var2+ Data$var3-1), Data[,"resp"], weights = Data$weight, standardize=TRUE, alpha=1)

Все переменных включены, если я проверю coef(cvfit, s = "lambda.min"), но нет включены, когда я использую `coef (cvfit, s =" lambda.1se ").

Почему эти три переменные не включены в мою первую попытку оценить все переменные одновременно, и что я могу сделать, чтобы мои попытки были более надежными?

РЕДАКТИРОВАТЬ : забыл сказать, что у меня много данных, то есть 30 000 строк.

РЕДАКТИРОВАТЬ 2 : кажется, что когда я добавляю все больше и больше переменных, коэффициенты становятся все меньше и меньше...

...