如何使用Lasso(LARS R软件包)从线性模型中获取截距



我很难获取由r pakect lars估算我的数据的模型。

例如,我创建一个假数据集X和相应的值y这样:

x = cbind(runif(100),rnorm(100))
colnames(x) = c("a","b")
y = 0.5 + 3 * x[,1,drop = FALSE]

接下来,我训练使用LARS函数使用套索正则化的模型:

m = lars(x,y,type = "lasso", normalize = FALSE, intercept = TRUE)

现在我想知道什么是估计模型(that I know to be: y = 0.5 + 3 * x[,1] + 0 * x[,2]

我只对最后一步中获得的系数感兴趣:

cf = predict(m, x, s=1, mode = "fraction", type = "coef")$coef
cf
a b 
3 0

这些是我期望的系数,但是我找不到从m中获得拦截(0.5)的方法。

我试图检查predict.lars的代码,在此完成拟合:

fit = drop(scale(newx, 
           object$meanx, FALSE) %*% t(newbetas)) + object$mu)

我可以看到变量是缩放的,并且使用了y(对象$ MU)的平均值,但是我找不到一种简单的方法来获得我想要的截距的值。我怎么能得到吗?

lars中的 intercept=T具有核心x变量和y变量的效果。它不包括带有系数的显式拦截术语。

话虽如此,当协变量为0时(传统拦截的定义)

,您可以进行predict(m,data.frame(a=0,b=0),s=2)$fit以获取y的预测值

最新更新