如何编写多元回归模型的动态代码自动计算r平方值并输出数据

How to write dynamic code for multiple regression model automatically calculate r-square values and output data

我有一个这样的 csv 文件,

T_yield Rain    PH  EC  OC  N   P   K   S   Zn  Fe  
6854.5  85.25   1   0   0   0   2   2   2   1   1   
4494.2  75.475  1   0   0   0   2   2   2   2   1   
1449    43.56   1   0   0   0   2   2   2   2   1   
4024.3  127.9   1   0   0   0   2   2   2   2   2   
2659.2  81.89   1   0   0   0   2   2   2   2   2   
4807.1  49.02   1   0   0   0   1   2   2   1   1   
1845.8  37.35   1   0   0   0   1   2   2   1   0   
4599.2  98.26   1   0   0   0   2   2   2   2   2   
4811.7  82.36   1   0   0   0   2   2   2   2   1   
4796.6  66.52   1   0   0   0   1   2   2   1   1   
1806.7  41.75   1   0   0   0   1   2   2   1   1   

其中 T_yield 是因变量,Rain , EC , OC ....Fe 是自变量。

我想检查哪个多模型适合计算 T_yield。

例如:
1) T_yield = b0 + b1* 雨

2) T_yield = b0 + b1 *PH

3) T_yield = b0 + b1 * Ec

:

:

11)T_yield = b0 + b1*雨 + b2*PH

12) T_yield = b0 + b1*雨 + b2*EC

: :

T_yield = b0 + b1*Rain + b2*PH + b3*Ec + b4*OC + b5*N +b6*P + b7*K ....等等。 那么,如何为多元回归编写一个动态代码,它将显示所有类型的组合与 r 平方值,

我正在使用此代码:

import pandas as pd
data = pd.read_csv('/home/desktop/regression.csv')
import statsmodels.formula.api as smf
lm = smf.ols(formula='Total_yield ~ Rain', data=data).fit() 
lm.summary()

所以,我可以获得雨的 r 平方值。 接下来我添加下一个自变量。

import statsmodels.formula.api as smf
lm = smf.ols(formula='Total_yield ~ Rain+ PH', data=data).fit() 
lm.summary()

接下来我可以得到 Rain +PH 的 r 平方值

下一步再次添加另一个变量。

import statsmodels.formula.api as smf
lm = smf.ols(formula='Total_yield ~ Rain+ PH+EC', data=data).fit() 
lm.summary()

所以 on.So 有什么方法可以自动打印所有类型的多模型的 r 平方值吗?

我和@PeterE 的建议是,不要对不同的自变量使用多行和多次训练,而是对所有自变量只使用一次。

import pandas as pd
data = pd.read_csv('/home/desktop/regression.csv')
import statsmodels.formula.api as smf
lm = smf.ols(formula='Total_yield ~ Rain+PH+EC+OC+N+P+K+S+Zn+Fe', data=data).fit() 
lm.summary()

即所有自变量只使用一次。 不要为所有不同的组合手动执行此操作。该算法足够聪明,可以决定保留哪些变量,不保留哪些变量。

这导致输出:

                            OLS Regression Results                            
==============================================================================
Dep. Variable:                T_yield   R-squared:                       0.609
Model:                            OLS   Adj. R-squared:                  0.348
Method:                 Least Squares   F-statistic:                     2.335
Date:                Tue, 28 Feb 2017   Prob (F-statistic):              0.169
Time:                        10:40:16   Log-Likelihood:                -91.598
No. Observations:                  11   AIC:                             193.2
Df Residuals:                       6   BIC:                             195.2
Df Model:                           4                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [95.0% Conf. Int.]
------------------------------------------------------------------------------
Intercept    237.3697    150.151      1.581      0.165      -130.037   604.776
Rain          46.8455     27.206      1.722      0.136       -19.726   113.417
PH           237.3697    150.151      1.581      0.165      -130.037   604.776
EC          3.591e-13    2.4e-13      1.499      0.185     -2.27e-13  9.45e-13
OC          5.245e-15   2.75e-13      0.019      0.985     -6.67e-13  6.77e-13
N                   0          0        nan        nan             0         0
P           1970.3552   1727.567      1.141      0.298     -2256.848  6197.558
K            474.7395    300.302      1.581      0.165      -260.073  1209.552
S            474.7395    300.302      1.581      0.165      -260.073  1209.552
Zn         -2877.5614   1582.540     -1.818      0.119     -6749.898   994.775
Fe          -575.9214   1194.274     -0.482      0.647     -3498.205  2346.362
==============================================================================
Omnibus:                        2.245   Durbin-Watson:                   2.342
Prob(Omnibus):                  0.325   Jarque-Bera (JB):                0.892
Skew:                           0.010   Prob(JB):                        0.640
Kurtosis:                       1.605   Cond. No.                     1.68e+35
==============================================================================

如您所见,ECOCNcoef 值为 0 或非常接近 0。这意味着 T_yield 基本上独立于它们。这可以从你的数据中得到证实,因为 EC、OC 和 N 中的所有值都是 0。