我要执行以下操作:
1)OLS回归(无惩罚项)以获得beta系数;代表用于回归的变量。我这样做 Ĵ
lm.model = lm(y~ 0 + x)
betas = coefficients(lm.model)
2)带惩罚项的套索回归,选择标准应为贝叶斯信息标准(BIC),由
其中代表变量/回归数,代表观察数,代表步骤1)中获得的初始beta。我想获得此特定值的回归结果,该值对于使用的每个回归变量都不同。因此,如果存在三个变量,则将存在三个不同的值。Ť b * Ĵ λ Ĵ λ Ĵ
然后通过以下公式给出OLS-Lasso优化问题
我该如何在Lars或glmnet软件包中使用R?我找不到指定lambda的方法,而且我不确定100%如果运行可以得到正确的结果
lars.model <- lars(x,y,type = "lasso", intercept = FALSE)
predict.lars(lars.model, type="coefficients", mode="lambda")
感谢您的帮助。
更新:
我现在使用了以下代码:
fits.cv = cv.glmnet(x,y,type="mse",penalty.factor = pnlty)
lmin = as.numeric(fits.cv[9]) #lambda.min
fits = glmnet(x,y, alpha=1, intercept=FALSE, penalty.factor = pnlty)
coef = coef(fits, s = lmin)
在第1行中,我将交叉验证与指定的惩罚因子()配合使用,每个回归变量均不同。第2行选择fits.cv的“ lambda.min”,它是给出最小平均交叉验证误差的lambda。第3行对数据执行套索拟合()。我再次使用惩罚因子。第4行从拟合中提取系数,该系数属于在第2行中选择的“最优”。λλalpha=1
现在我有了回归系数的beta系数,它描述了最小化问题的最佳解决方案
惩罚因子。最佳的系数集很可能是我最初使用的回归器的子集,这是拉索方法的结果,该方法减少了使用的回归器的数量。
我的理解和代码正确吗?
$\alpha$
变成。请这样做,因为它将使人们更容易理解您的问题,并因此回答。