對於我的數據,我很難獲取由R包估算的模型。如何從套索線性模型(lars R包)中獲取截取線
例如我創建一個假數據集x和相應的整數y是這樣的:
x = cbind(runif(100),rnorm(100))
colnames(x) = c("a","b")
y = 0.5 + 3 * x[,1,drop = FALSE]
接着我訓練使用套索正規化使用拉斯函數的模型:
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
(對象$畝)均值爲使用,但我找不到一個簡單的方法來獲取我正在尋找的攔截的價值。我怎麼弄到的?
嗨,你可以用'cbind(1代替'x',X )'添加一列並使用'intercept = FALSE'選項。 –
...但這不是一個好主意,因爲lasso可以設置截取值爲0 –