按组回归并以python

时间:2019-06-17 15:03:49

标签: python group-by regression coefficients

嗨〜我想问一个有关python回归分析的快速问题。我有以下dataframe

group      Y        X
 1         9        3
 1         5        4
 1         3        1
 2         1        6
 2         2        4
 2         3        9

Y是因变量,X是自变量。我想按组运行回归Y=a + bx,并输出另一个包含系数,t统计和R平方的dataframe。因此,数据框应类似于:

group   coefficient   t-stats    intercept    r-square
  1        0.25         1.4        4.3         0.43
  2        0.30         2.4        3.6         0.49
 ...        ...         ...        ...         ...

有人可以帮忙吗?预先非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我将展示一些模型,以便您可以构建其余模型。它主要是建立您的自定义回归函数并使用apply传递数据框。

让我知道您的想法。

import pandas as pd
import statsmodels.api as sm 

def GroupRegress(data, yvar, xvars):
    Y = data[yvar]
    X = data[xvars]
    X['intercept'] = 1.
    result = sm.OLS(Y, X).fit()
    return result.params

import pandas as pd
df = pd.DataFrame({'group': [1,1,1,2,2,2], 
                   'Y': [9,5,3,1,2,3],
                  'X': [3,4,1,6,4,9]
                  })
df


df.groupby('group').apply(GroupRegress, 'Y', ['X'])

以下结果:

X   intercept
group       
1   1.000000    3.0
2   0.236842    0.5