R “拉尔斯”;套索“;不选择显著解释变量的回归分析

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之间。不知道为什么会这样

我在一个大数据集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是一个函数,用于生成通过设定阈值的系数。我已经在问题的代码部分包含了函数的代码。