R:如何让glmnet包含我知道的重要变量?

时间:2019-01-28 09:53:14

标签: glmnet lasso

很抱歉,我无法在此处提供可复制的代码或数据,我只是在寻找可以帮助我了解如何使R中的glmnet更好地工作的人。

我有一个很大的数据集,其中包含很多变量,我已经知道其中一些应该包含在“完美”模型中。但是我希望glmnet为我挑选出最佳变量。

我的数据称为:Data,响应变量称为resp,我有一列用来对响应变量进行加权,因为这是泊松回归,权重称为{{1} }。

当我删除响应变量并使用所有可用变量时,我得到:

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.1se”),则不包含

没有变量。

另一方面,如果我只是手动选择三个变量:

coef(cvfit, s = "lambda.min")
如果我选中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.1se ”)。

为什么在同时评估所有变量的第一次尝试中不包含这三个变量,我该怎么做才能使尝试更可靠?

编辑:忘了说我有很多数据,即30,000行。

EDIT 2 :似乎当我添加越来越多的变量时,系数变得越来越小...

0 个答案:

没有答案