多索引 df 中的线性回归
Posted
技术标签:
【中文标题】多索引 df 中的线性回归【英文标题】:Linear Regression in a multiindex df 【发布时间】:2021-08-16 20:22:14 【问题描述】:给定下面的多索引多列数据框,我想将 LinearRegression 应用于此数据框的每个块,例如,对于每个 Station_Number,我想在 LST 和 Value 之间运行回归。 df 看起来像这样:
Latitude Longitude LST Elevation Value
Station_Number Date
RSM00025356 2019-01-01 66.3797 173.33 -31.655008 78.0 -28.733333
2019-02-02 66.3797 173.33 -17.215009 78.0 -17.900000
2019-02-10 66.3797 173.33 -31.180006 78.0 -19.500000
2019-02-26 66.3797 173.33 -19.275007 78.0 -6.266667
2019-04-23 66.3797 173.33 -12.905004 78.0 -4.916667
之后还有更多的站点。理想情况下,输出只是每个站号的回归结果
【问题讨论】:
【参考方案1】:您可以使用 groupby
拆分 DataFrame,然后运行组内的每个回归。您可以将结果存储在字典中,其中键是“Station_Number”。我将使用 statsmodels 进行回归,但有许多可能的库,这取决于您对标准错误和推理的关心程度。
import statsmodels.formula.api as smf
d =
for station,gp in df.groupby('Station_Number'):
mod = smf.ols(formula='LST ~ Value', data=gp)
d[station] = mod.fit()
回归结果:
d['RSM00025356'].params
#Intercept -11.676331
#Value 0.696465
#dtype: float64
d['RSM00025356'].summary()
OLS Regression Results
==============================================================================
Dep. Variable: LST R-squared: 0.660
Model: OLS Adj. R-squared: 0.547
Method: Least Squares F-statistic: 5.831
Date: Fri, 28 May 2021 Prob (F-statistic): 0.0946
Time: 11:17:51 Log-Likelihood: -14.543
No. Observations: 5 AIC: 33.09
Df Residuals: 3 BIC: 32.30
Df Model: 1
Covariance Type: nonrobust
==============================================================================
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
Intercept -11.6763 5.143 -2.270 0.108 -28.043 4.690
Value 0.6965 0.288 2.415 0.095 -0.221 1.614
==============================================================================
Omnibus: nan Durbin-Watson: 2.536
Prob(Omnibus): nan Jarque-Bera (JB): 0.299
Skew: 0.233 Prob(JB): 0.861
Kurtosis: 1.895 Cond. No. 35.9
==============================================================================
【讨论】:
以上是关于多索引 df 中的线性回归的主要内容,如果未能解决你的问题,请参考以下文章
excel数据分析线性回归中MS,SS,F,DF分别是啥意思