为什么套索估计的所有系数都为零?

时间:2017-08-26 04:12:50

标签: r lasso

我是R的新手,想在我的数据上实现套索,以便根据此算法估算的系数进行特征选择。我的数据库很大,有40个预测变量(连续和分类)。当我使用glmnet包应用套索回归时,除了截距之外,该算法中每个预测器估计的所有系数都为零,为什么会发生这种情况?模型是否适合?我该如何解决?我在本节中使用的代码是:

#Transforming categorical variables: 
xfactors <- model.matrix(Bill_TotalCharge ~addNA(P_AgeGroup) + 
addNA(ADT_ConditionOnDischarge) + addNA(Provider_Profession) + 
addNA(ADT_HospitalName) + addNA(ADT_Province) + addNA(ADT_City) + 
addNA(DiagnosisValueGroup) + addNA(DiagnosisGroupLevel1) + 
addNA(DiagnosisGroupLevel2) + addNA(Bill_Insurer) + addNA(Bill_InsurerType1) 
+ addNA(Bill_InsurerType2) + addNA(Bill_InsurerBox) + 
addNA(ADT_AdmissionType) + addNA(Bill_RecordType) + addNA(P_MaritalStatus) + 
addNA(Gender) + addNA(MonthNumberOfYear) + addNA(CalenderYear) , 
na.action=na.exclude)[,-1]

#Creating matrix of combination of contniuous and categorical varriables
x <- as.matrix(data.frame(Bill_TotalBasicInsurance, Bill_TotalPatient 
,Bill_TotalCost1,Bill_TotalCost2, Bill_TotalCost3 , Bill_TotalCost4 , 
Bill_TotalCost5 , Bill_TotalCost6 , Bill_TotalCost7 , Bill_TotalCost8 
,Bill_TotalCost9 ,Bill_TotalCost10 ,Bill_TotalCost11 ,Bill_TotalCost12 , 
P_Age, xfactors))

#Running lasso 
glmmod <- glmnet(x, y=Bill_TotalCharge, family="gaussian",alpha=1)

然后我想使用cv.glmnet函数来确定带有交叉验证的min_lambda,令人难以置信的是它返回一个6_digits数字作为最小lambda(lambda,随后alpha应该在0和1之间)。问题是什么,怎么能我解决了吗?我使用的代码是:

 cv.glmmod <- cv.glmnet(x, y=Bill_TotalCharge, alpha=1)
 best.lambda <- cv.glmmod$lambda.min

我提前很感激你的帮助。

0 个答案:

没有答案