我想使用 GLM 和 Elastic Net 来选择那些相关的特征 + 建立一个线性回归模型(即预测和理解,所以最好保留相对较少的参数)。输出是连续的。它是每个基因案例。我一直在阅读有关该glmnet
软件包的信息,但我不能 100% 确定要遵循的步骤:
执行 CV 以选择 lambda:
cv <- cv.glmnet(x,y,alpha=0.5)
(Q1)给定输入数据,您会选择不同的 alpha 值吗?
(Q2)在构建模型之前我需要做其他事情吗?拟合模型:
model=glmnet(x,y,type.gaussian="covariance",lambda=cv$lambda.min)
(Q3)有什么比“协方差”更好的吗?
(Q4)如果 lambda 被 CV 选择,为什么这一步需要nlambda=
?
(Q5)lambda.min
使用还是更好lambda.1se
?获取系数,以查看哪些参数已失效(“.”):
predict(model, type="coefficients")
在帮助页面中有许多
predict
方法(例如,predict.fishnet
、predict.glmnet
、predict.lognet
等)。但是,正如我在一个例子中看到的那样,任何“简单”的预测。
(Q6)我应该使用predict
orpredict.glmnet
还是other?
尽管我读过关于正则化方法的内容,但我在 R 和这些统计包中还是很新的,所以很难确定我是否正在使我的问题适应代码。任何建议都将受到欢迎。
更新
基于“如前所述,类 train 的对象包含一个finalModel
名为模型的预测函数。”
caret
用于调整 alpha 和 lambda :
trc = trainControl(method=cv, number=10)
fitM = train(x, y, trControl = trC, method="glmnet")
是否fitM
替换之前的步骤 2?如果是这样,现在如何指定 glmnet 选项(type.gaussian="naive",lambda=cv$lambda.min/1se
)?
接下来的predict
步骤,我可以替换model
为fitM
吗?
如果我做
trc = trainControl(method=cv, number=10)
fitM = train(x, y, trControl = trC, method="glmnet")
predict(fitM$finalModel, type="coefficients")
这是否有意义,还是我错误地混合了两个包词汇?