请问R语言如何用lars包中的LASSO方法进行变量选择?我在做的过程中出现Cp值为空,R-square为1,但是参数估计值并不接近真实值,正确的做法应该怎么做?
library(MASS) #generate random number
library(lars)#LASSO
cov_mat<-function(p)
{
covm<-matrix(0,p,p)
for (i in 1:p)
{
for (j in 1:p)
{
covm[i,j]<-0.5^(abs(i-j))
}
}
return(covm)
}
p<-10
n<-200
set.seed(666)
epsilon<-rnorm(n,0,1)
beta<-c(1,1.5,2,1,0,0,0,0,0,0)
set.seed(666)
x<-mvrnorm(n,rep(0,p),cov_mat(p))
y<-x%*%beta+epsilon
LASSOres<-lars(as.matrix(x),as.matrix(y),type="lasso")
结果如下
LASSOres
Call:
lars(x = as.matrix(x), y = as.matrix(y), type = "lasso")
R-squared: 1
Sequence of LASSO moves:
Var 3 2 1 4 7 9 8 6 5 10
Step 1 2 3 4 5 6 7 8 9 10
LASSOres$beta[10,]
[1] 0.81909408 1.28566343 1.71271692 0.52252613 -0.02578134 -0.19780722 -0.19525537 -0.12094906
[9] -0.16279040 0.00000000