【发布时间】:2017-01-12 09:29:41
【问题描述】:
我有两个关于使用 GLMNET 进行预测的问题 - 特别是关于拦截的问题。
我做了一个关于火车数据创建、GLMNET 估计和预测火车数据的小例子(我稍后将更改为测试数据):
# Train data creation
Train <- data.frame('x1'=runif(10), 'x2'=runif(10))
Train$y <- Train$x1-Train$x2+runif(10)
# From Train data frame to x and y matrix
y <- Train$y
x <- as.matrix(Train[,c('x1','x2')])
# Glmnet model
Model_El <- glmnet(x,y)
Cv_El <- cv.glmnet(x,y)
# Prediction
Test_Matrix <- model.matrix(~.-y,data=Train)[,-1]
Test_Matrix_Df <- data.frame(Test_Matrix)
Pred_El <- predict(Model_El,newx=Test_Matrix,s=Cv_El$lambda.min,type='response')
我想在估计的公式中有一个截距。此代码给出有关 Test_Matrix 矩阵维度的错误,除非我删除矩阵的 (Intercept) 列 - 如
Test_Matrix <- model.matrix(~.-y,data=Train)[,-1]
我的问题是:
当我希望预测公式包含截距时,这样做是否是正确的方法以获得预测?
如果是正确的方法:为什么我必须去除矩阵中的截距?
提前致谢。
【问题讨论】:
标签: r prediction intercept glmnet