5

我很难获得 R 包lars为我的数据估计的模型。

例如,我创建了一个假数据集 x 和相应的值 y,如下所示:

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

接下来,我使用 lars 函数训练一个使用 lasso 正则化的模型:

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

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

我试图检查 的代码predict.lars,其中的拟合是这样完成的:

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

我可以看到变量被缩放,并且使用了y(object$mu) 的平均值,但是我找不到一种简单的方法来获得我正在寻找的截距的值。我怎么能得到那个?

4

1 回答 1

6

intercept=Tinlars具有使 x 变量和 y 变量居中的效果。它不包括带有系数的显式截距项。

话虽如此,predict(m,data.frame(a=0,b=0),s=2)$fit当协变量为 0(传统截距的定义)时,您可以得到 y 的预测值

于 2014-01-30T21:23:25.117 回答