R “拉尔斯”;套索“;不选择显著解释变量的回归分析
我在一个大数据集n=1918,p=85上运行lasso回归,回归确定为重要的系数——当实际放入线性模型时——非常不重要。另一方面,lasso认为非常重要的解释性“模型”变量具有接近0的系数,而不是为其选择。进入LAR的数据帧已经缩放。你知道为什么会发生这种情况吗?下面是一个LARS可能会选择的示例,也是我使用完全相同的数据集创建的一个模型,其中包含了非常好的解释变量 更新: 我注意到lasso选择了我所有的温度变量,并赋予它们相对较高的系数(>1),而其余的变量都在0到1之间。不知道为什么会这样R “拉尔斯”;套索“;不选择显著解释变量的回归分析,r,large-data,feature-selection,lasso-regression,lars,R,Large Data,Feature Selection,Lasso Regression,Lars,我在一个大数据集n=1918,p=85上运行lasso回归,回归确定为重要的系数——当实际放入线性模型时——非常不重要。另一方面,lasso认为非常重要的解释性“模型”变量具有接近0的系数,而不是为其选择。进入LAR的数据帧已经缩放。你知道为什么会发生这种情况吗?下面是一个LARS可能会选择的示例,也是我使用完全相同的数据集创建的一个模型,其中包含了非常好的解释变量 更新: 我注意到lasso选择了我所有的温度变量,并赋予它们相对较高的系数(>1),而其余的变量都在0到1之间。不知道为什么会这样
signif.coefs <- function(lasso, threshold=1){
coefs <- coef(lasso)
signif <- which(abs(coefs[nrow(coefs),]) > threshold)
return(setNames(coefs[nrow(coefs),signif], signif))
}
signif.coefs(lasso)
4 45
4.855257 -3.020055
lm(response ~ SP.MTMEAN + YEAR, data=df, na.action=na.pass) ###Terrible Lasso Chosen Model
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.16710 0.07190 -2.324 0.02022 *
SP.MTMEAN 0.09889 0.02313 4.275 2.01e-05 ***
YEAR 0.14097 0.04580 3.078 0.00211 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.9903 on 1915 degrees of freedom
Multiple R-squared: 0.01678, Adjusted R-squared: 0.01576
F-statistic: 16.34 on 2 and 1915 DF, p-value: 9.167e-08
###variables chosen by me with model output from same data frame as above
lm(response~log1p.PTL_RESULT+log1p.NTL_RESULT+log1p.PH_RESULT+log1p.EPI.T+SU.MPPT, data=df, na.action=na.pass)
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.01200 0.01972 0.608 0.54301
log1p.PTL_RESULT 0.20672 0.03104 6.660 3.58e-11 ***
log1p.NTL_RESULT 0.21219 0.03335 6.362 2.49e-10 ***
log1p.PH_RESULT 0.15543 0.02543 6.113 1.18e-09 ***
log1p.EPI.T 0.09869 0.02189 4.508 6.93e-06 ***
SU.MPPT -0.06002 0.02135 -2.811 0.00499 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.8596 on 1912 degrees of freedom
Multiple R-squared: 0.2603, Adjusted R-squared: 0.2583
F-statistic: 134.5 on 5 and 1912 DF, p-value: < 2.2e-16
signif.coefs | t |)
(截距)0.01200 0.01972 0.608 0.54301
log1p.PTL_结果0.20672 0.03104 6.660 3.58e-11***
log1p.NTL_结果0.21219 0.03335 6.362 2.49e-10***
log1p.PH_结果0.15543 0.02543 6.113 1.18e-09***
log1p.EPI.T 0.09869 0.02189 4.508 6.93e-06***
SU.MPPT-0.06002 0.02135-2.811 0.00499**
---
签名。代码:0'***'0.001'***'0.01'*'0.05'.'0.1''1
剩余标准误差:1912自由度的0.8596
倍数R平方:0.2603,调整后的R平方:0.2583
F-统计量:5和1912 DF上的134.5,p值:<2.2e-16
hmmm这真的很奇怪。您使用了哪个软件包?signif.coefs来自哪里?它使用的是lars软件包v1.2。抱歉,singnif.coefs是一个函数,用于生成通过设定阈值的系数。我在问题的代码部分包含了函数的代码。嗯,这真的很奇怪。您使用了哪个软件包?signif.coefs来自哪里?它使用的是lars软件包v1.2。抱歉,singnif.coefs是一个函数,用于生成通过设定阈值的系数。我已经在问题的代码部分包含了函数的代码。