我正在尝试使用约60个预测变量和30个观察值来拟合多元线性回归模型,所以我使用glmnet软件包进行正则回归,因为p> n。
我一直在研究文档和其他问题,但仍然无法解释结果,这是示例代码(为简化起见,有20个预测变量和10个观察值):
我创建了一个矩阵x,其中num行=观察值,cols =预测变量,向量y表示响应变量
> x=matrix(rnorm(10*20),10,20)
> y=rnorm(10)
我适合一个glmnet模型,将alpha保留为默认值(套索罚分= 1)
> fit1=glmnet(x,y)
> print(fit1)
我了解随着lambda值的降低(即罚款),我得到了不同的预测
Call: glmnet(x = x, y = y)
Df %Dev Lambda
[1,] 0 0.00000 0.890700
[2,] 1 0.06159 0.850200
[3,] 1 0.11770 0.811500
[4,] 1 0.16880 0.774600
.
.
.
[96,] 10 0.99740 0.010730
[97,] 10 0.99760 0.010240
[98,] 10 0.99780 0.009775
[99,] 10 0.99800 0.009331
[100,] 10 0.99820 0.008907
现在,我预测我的Beta值会选择,例如,从 glmnet
> predict(fit1,type="coef", s = 0.008907)
21 x 1 sparse Matrix of class "dgCMatrix"
1
(Intercept) -0.08872364
V1 0.23734885
V2 -0.35472137
V3 -0.08088463
V4 .
V5 .
V6 .
V7 0.31127123
V8 .
V9 .
V10 .
V11 0.10636867
V12 .
V13 -0.20328200
V14 -0.77717745
V15 .
V16 -0.25924281
V17 .
V18 .
V19 -0.57989929
V20 -0.22522859
如果相反,我选择lambda与
cv <- cv.glmnet(x,y)
model=glmnet(x,y,lambda=cv$lambda.min)
所有变量都是(。)。
疑问和问题:
- 我不确定如何选择lambda。
- 我应该使用非变量(。)来适应其他模型吗?就我而言,我想保留尽可能多的变量。
- 我如何知道p值,即哪些变量可以显着预测响应?
很抱歉,我的统计知识不佳!并感谢您的任何帮助。