gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 22:41:33 25 4
gpt4 key购买 nike

我有一个像这样的 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*Rain + 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()

所以,我可以获得 Rain 的 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()

等等,有什么办法可以自动打印所有类型的多模型的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。

关于python - 如何编写动态代码让多元回归模型自动计算r方值并输出数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42483683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com