我想使用GLM和Elastic Net来选择那些相关功能+建立一个线性回归模型(即预测和理解,因此最好保留相对较少的参数)。输出是连续的。这是每基因50的情况。我一直在阅读有关该软件包的信息,但是我不确定要执行的步骤:glmnet
执行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)如果CV选择了lambda,为什么需要此步骤nlambda=
?
(Q5)使用lambda.min
还是更好lambda.1se
?获取系数,看看哪些参数掉了(“。”):
predict(model, type="coefficients")
在帮助页面有很多种
predict
方法(例如predict.fishnet
,predict.glmnet
,predict.lognet
等)。但是,正如我在一个示例中看到的那样,任何“简单”的预测都是如此。
(Q6)我应该用predict
或者predict.glmnet
还是其他?
尽管我已经读过有关正则化方法的文章,但我在R和这些统计软件包中还是一个新手,因此很难确定我是否正在使我的问题适应代码。任何建议都将受到欢迎。
更新
基于 “如前所述,类train的对象包含一个称为的元素finalModel
,这是具有通过重采样选择的调整参数值的拟合模型。该对象可以按传统方式用于生成新样本的预测,模型的预测功能。”
使用caret
调整α和拉姆达:
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")
完全有意义还是我错误地混合了两个包装词汇?