使用QR分解(相关特征)的Python线性回归
我需要在某些功能相关的数据集上应用Python线性回归。
Scikit的线性回归使用奇异值分解,以最大程度地减少平方误差。但是,此方法没有考虑变量之间的相关性。 r使用QR分解,这是一种使用“ LM”方法去相关协变量的技术。相关变量的系数返回为NAN值,这对于我想做的方便。
我想知道是否有一种内置方法可以在Python中复制这些结果。如果没有,该怎么办?
Call:
lm(formula = y ~ ., data = dataset)
Residuals:
Min 1Q Median 3Q Max
-5.891e-17 -6.610e-18 -1.280e-18 3.280e-18 7.294e-16
Coefficients: (106 not defined because of singularities)
Estimate Std. Error t value Pr(>|t|)
(Intercept) -6.000e-03 2.291e-18 -2.619e+15 <2e-16 ***
V1 NA NA NA NA
V2 NA NA NA NA
V3 1.000e+00 4.423e-17 2.261e+16 <2e-16 ***
V4 NA NA NA NA
V5 NA NA NA NA
V6 2.130e-16 3.128e-16 6.810e-01 0.496
V7 NA NA NA NA
V8 NA NA NA NA
V9 9.876e-17 6.708e-16 1.470e-01 0.883
V10 NA NA NA NA
V11 NA NA NA NA
V12 NA NA NA NA
V13 NA NA NA NA
V14 NA NA NA NA
V15 -4.318e-16 1.452e-15 -2.970e-01 0.766
V16 NA NA NA NA
V17 NA NA NA NA
V18 -1.699e-15 2.550e-15 -6.660e-01 0.506
V19 NA NA NA NA
V20 NA NA NA NA
V21 NA NA NA NA
V22 NA NA NA NA
V23 NA NA NA NA
V24 6.521e-16 2.441e-15 2.670e-01 0.789
V25 NA NA NA NA
V26 NA NA NA NA
V27 2.411e-15 6.448e-15 3.740e-01 0.709
V28 NA NA NA NA
V29 NA NA NA NA
V30 NA NA NA NA
V31 NA NA NA NA
V32 NA NA NA NA
V33 NA NA NA NA
V34 NA NA NA NA
V35 NA NA NA NA
V36 NA NA NA NA
V37 NA NA NA NA
V38 NA NA NA NA
V39 NA NA NA NA
V40 NA NA NA NA
V41 NA NA NA NA
V42 5.873e-16 2.896e-15 2.030e-01 0.839
V43 NA NA NA NA
V44 NA NA NA NA
V45 3.060e-15 4.833e-15 6.330e-01 0.527
V46 NA NA NA NA
V47 NA NA NA NA
V48 NA NA NA NA
V49 NA NA NA NA
V50 NA NA NA NA
V51 2.714e-15 3.917e-15 6.930e-01 0.489
V52 NA NA NA NA
V53 NA NA NA NA
V54 -1.438e-14 1.023e-14 -1.406e+00 0.160
V55 NA NA NA NA
V56 NA NA NA NA
V57 NA NA NA NA
V58 NA NA NA NA
V59 NA NA NA NA
V60 NA NA NA NA
V61 NA NA NA NA
V62 NA NA NA NA
V63 NA NA NA NA
V64 NA NA NA NA
V65 NA NA NA NA
V66 NA NA NA NA
V67 NA NA NA NA
V68 NA NA NA NA
V69 -3.462e-15 4.663e-15 -7.420e-01 0.458
V70 NA NA NA NA
V71 NA NA NA NA
V72 2.390e-15 9.911e-15 2.410e-01 0.810
V73 NA NA NA NA
V74 NA NA NA NA
V75 NA NA NA NA
V76 NA NA NA NA
V77 NA NA NA NA
V78 1.894e-15 9.962e-15 1.900e-01 0.849
V79 NA NA NA NA
V80 NA NA NA NA
V81 2.810e-14 2.967e-14 9.470e-01 0.344
V82 NA NA NA NA
V83 NA NA NA NA
V84 NA NA NA NA
V85 NA NA NA NA
V86 NA NA NA NA
V87 NA NA NA NA
V88 NA NA NA NA
V89 NA NA NA NA
V90 NA NA NA NA
V91 NA NA NA NA
V92 NA NA NA NA
V93 NA NA NA NA
V94 NA NA NA NA
V95 NA NA NA NA
V96 NA NA NA NA
V97 NA NA NA NA
V98 NA NA NA NA
V99 NA NA NA NA
V100 NA NA NA NA
V101 NA NA NA NA
V102 NA NA NA NA
V103 NA NA NA NA
V104 NA NA NA NA
V105 NA NA NA NA
V106 NA NA NA NA
V107 NA NA NA NA
V108 NA NA NA NA
V109 NA NA NA NA
V110 NA NA NA NA
V111 NA NA NA NA
V112 NA NA NA NA
V113 NA NA NA NA
V114 NA NA NA NA
V115 NA NA NA NA
V116 NA NA NA NA
V117 NA NA NA NA
V118 NA NA NA NA
V119 NA NA NA NA
V120 NA NA NA NA
V121 NA NA NA NA
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 3.439e-17 on 984 degrees of freedom
Multiple R-squared: 1, Adjusted R-squared: 1
F-statistic: 8.757e+32 on 15 and 984 DF, p-value: < 2.2e-16
您可以在这里看到重要系数:
Analysis of Variance Table
Response: y_EC
Df Sum Sq Mean Sq F value Pr(>F)
V3 1 15.536 15.536 1.3136e+34 < 2e-16 ***
V6 1 0.000 0.000 1.1225e+00 0.28965
V9 1 0.000 0.000 4.2900e-01 0.51265
V15 1 0.000 0.000 2.3800e-02 0.87741
V18 1 0.000 0.000 5.7980e-01 0.44655
V24 1 0.000 0.000 2.2500e-02 0.88070
V27 1 0.000 0.000 1.3820e-01 0.71017
V42 1 0.000 0.000 4.0400e-02 0.84074
V45 1 0.000 0.000 1.3070e-01 0.71783
V51 1 0.000 0.000 1.9925e+00 0.15840
V54 1 0.000 0.000 3.9217e+00 0.04795 *
V69 1 0.000 0.000 5.6850e-01 0.45104
V72 1 0.000 0.000 8.2600e-02 0.77386
V78 1 0.000 0.000 8.8000e-02 0.76684
V81 1 0.000 0.000 8.9710e-01 0.34378
Residuals 984 0.000 0.000
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
I need to apply a Python linear regression on a dataset in which some features are correlated.
Scikit's linear regression uses the singular value decomposition in order to minimize the squared error. However, this method doesn't take into account the correlation between variables. R uses the QR decomposition, which is a technique for decorrelating covariates with the 'lm' method. The coefficients of the correlated variables are returned as NaN values, which is convenient for what I want to do.
I want to know if there is a built-in method to replicate these results in Python. If not, how can it be done ?
Call:
lm(formula = y ~ ., data = dataset)
Residuals:
Min 1Q Median 3Q Max
-5.891e-17 -6.610e-18 -1.280e-18 3.280e-18 7.294e-16
Coefficients: (106 not defined because of singularities)
Estimate Std. Error t value Pr(>|t|)
(Intercept) -6.000e-03 2.291e-18 -2.619e+15 <2e-16 ***
V1 NA NA NA NA
V2 NA NA NA NA
V3 1.000e+00 4.423e-17 2.261e+16 <2e-16 ***
V4 NA NA NA NA
V5 NA NA NA NA
V6 2.130e-16 3.128e-16 6.810e-01 0.496
V7 NA NA NA NA
V8 NA NA NA NA
V9 9.876e-17 6.708e-16 1.470e-01 0.883
V10 NA NA NA NA
V11 NA NA NA NA
V12 NA NA NA NA
V13 NA NA NA NA
V14 NA NA NA NA
V15 -4.318e-16 1.452e-15 -2.970e-01 0.766
V16 NA NA NA NA
V17 NA NA NA NA
V18 -1.699e-15 2.550e-15 -6.660e-01 0.506
V19 NA NA NA NA
V20 NA NA NA NA
V21 NA NA NA NA
V22 NA NA NA NA
V23 NA NA NA NA
V24 6.521e-16 2.441e-15 2.670e-01 0.789
V25 NA NA NA NA
V26 NA NA NA NA
V27 2.411e-15 6.448e-15 3.740e-01 0.709
V28 NA NA NA NA
V29 NA NA NA NA
V30 NA NA NA NA
V31 NA NA NA NA
V32 NA NA NA NA
V33 NA NA NA NA
V34 NA NA NA NA
V35 NA NA NA NA
V36 NA NA NA NA
V37 NA NA NA NA
V38 NA NA NA NA
V39 NA NA NA NA
V40 NA NA NA NA
V41 NA NA NA NA
V42 5.873e-16 2.896e-15 2.030e-01 0.839
V43 NA NA NA NA
V44 NA NA NA NA
V45 3.060e-15 4.833e-15 6.330e-01 0.527
V46 NA NA NA NA
V47 NA NA NA NA
V48 NA NA NA NA
V49 NA NA NA NA
V50 NA NA NA NA
V51 2.714e-15 3.917e-15 6.930e-01 0.489
V52 NA NA NA NA
V53 NA NA NA NA
V54 -1.438e-14 1.023e-14 -1.406e+00 0.160
V55 NA NA NA NA
V56 NA NA NA NA
V57 NA NA NA NA
V58 NA NA NA NA
V59 NA NA NA NA
V60 NA NA NA NA
V61 NA NA NA NA
V62 NA NA NA NA
V63 NA NA NA NA
V64 NA NA NA NA
V65 NA NA NA NA
V66 NA NA NA NA
V67 NA NA NA NA
V68 NA NA NA NA
V69 -3.462e-15 4.663e-15 -7.420e-01 0.458
V70 NA NA NA NA
V71 NA NA NA NA
V72 2.390e-15 9.911e-15 2.410e-01 0.810
V73 NA NA NA NA
V74 NA NA NA NA
V75 NA NA NA NA
V76 NA NA NA NA
V77 NA NA NA NA
V78 1.894e-15 9.962e-15 1.900e-01 0.849
V79 NA NA NA NA
V80 NA NA NA NA
V81 2.810e-14 2.967e-14 9.470e-01 0.344
V82 NA NA NA NA
V83 NA NA NA NA
V84 NA NA NA NA
V85 NA NA NA NA
V86 NA NA NA NA
V87 NA NA NA NA
V88 NA NA NA NA
V89 NA NA NA NA
V90 NA NA NA NA
V91 NA NA NA NA
V92 NA NA NA NA
V93 NA NA NA NA
V94 NA NA NA NA
V95 NA NA NA NA
V96 NA NA NA NA
V97 NA NA NA NA
V98 NA NA NA NA
V99 NA NA NA NA
V100 NA NA NA NA
V101 NA NA NA NA
V102 NA NA NA NA
V103 NA NA NA NA
V104 NA NA NA NA
V105 NA NA NA NA
V106 NA NA NA NA
V107 NA NA NA NA
V108 NA NA NA NA
V109 NA NA NA NA
V110 NA NA NA NA
V111 NA NA NA NA
V112 NA NA NA NA
V113 NA NA NA NA
V114 NA NA NA NA
V115 NA NA NA NA
V116 NA NA NA NA
V117 NA NA NA NA
V118 NA NA NA NA
V119 NA NA NA NA
V120 NA NA NA NA
V121 NA NA NA NA
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 3.439e-17 on 984 degrees of freedom
Multiple R-squared: 1, Adjusted R-squared: 1
F-statistic: 8.757e+32 on 15 and 984 DF, p-value: < 2.2e-16
You can see here the significant coefficients :
Analysis of Variance Table
Response: y_EC
Df Sum Sq Mean Sq F value Pr(>F)
V3 1 15.536 15.536 1.3136e+34 < 2e-16 ***
V6 1 0.000 0.000 1.1225e+00 0.28965
V9 1 0.000 0.000 4.2900e-01 0.51265
V15 1 0.000 0.000 2.3800e-02 0.87741
V18 1 0.000 0.000 5.7980e-01 0.44655
V24 1 0.000 0.000 2.2500e-02 0.88070
V27 1 0.000 0.000 1.3820e-01 0.71017
V42 1 0.000 0.000 4.0400e-02 0.84074
V45 1 0.000 0.000 1.3070e-01 0.71783
V51 1 0.000 0.000 1.9925e+00 0.15840
V54 1 0.000 0.000 3.9217e+00 0.04795 *
V69 1 0.000 0.000 5.6850e-01 0.45104
V72 1 0.000 0.000 8.2600e-02 0.77386
V78 1 0.000 0.000 8.8000e-02 0.76684
V81 1 0.000 0.000 8.9710e-01 0.34378
Residuals 984 0.000 0.000
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以检查此-Quote 计算矩阵的QR分解
https://docs.scipy.orgg/doc/ scipy/reference/oferated/scipy.linalg.qr.html
You can check this -quote Compute QR decomposition of a matrix
https://docs.scipy.org/doc/scipy/reference/generated/scipy.linalg.qr.html