多索引 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分别是啥意思

从R中的单个数据帧运行几个线性回归

使用线性回归为 R 中的一个变量和多个国家/地区估算缺失数据

python进行数据分析----线性回归

python线性回归按日期预测