回复 第8楼 的 ustcpc:
原始函数怎么用需要看文档。他是把整个筛选建模组合过程封装起来了。只言片语很难概括啊。
你也可以模仿他自己写一个独立函数:
<br />
ScreenLasso = function (Y, X, family, nlambda = 100, alpha = 1,<br />
minscreen = 2, nfolds = 10, ...) {</p>
<p> require(glmnet)</p>
<p> if (!is.matrix(X)) X = model.matrix(~-1 + ., X)</p>
<p> fitCV = cv.glmnet(x = X, y = Y, lambda = NULL, type.measure = "deviance",<br />
nfolds = nfolds, family = family, alpha = alpha,<br />
nlambda = nlambda, ...)</p>
<p> whichVariable = (as.numeric(coef(fitCV$glmnet.fit,<br />
s = fitCV$lambda.min))[-1] != 0)</p>
<p> if (sum(whichVariable) < minscreen) {</p>
<p> warning("fewer than minscreen variables passed the glmnet screen,<br />
increased lambda to allow minscreen variables")</p>
<p> sumCoef = apply(as.matrix(fitCV$glmnet.fit$beta), 2,<br />
function(x) sum((x != 0)))</p>
<p> newCut = which.max(sumCoef >= minscreen)</p>
<p> whichVariable = as.matrix(fitCV$glmnet.fit$beta)[, newCut] != 0</p>
<p> }</p>
<p> return(whichVariable)</p>
<p>}<br />
</p>
<br />
require(mlbench)<br />
data(Sonar)<br />
Selected = ScreenLasso(Y = Sonar[, 61], X = Sonar[, -61], family = 'binomial',<br />
nlambda = 50, minscreen = 10, nfolds = 5)<br />
SonarSelected = Sonar[, Selected]<br />
</p>
SonarSelected 就是由选出来的变量组成的结果数据。