python pandas中的分组回归
Posted
技术标签:
【中文标题】python pandas中的分组回归【英文标题】:Regression by group in python pandas 【发布时间】:2018-09-28 10:01:48 【问题描述】:我想问一个与 python pandas 中的回归分析相关的快速问题。 所以,假设我有以下数据集:
Group Y X
1 10 6
1 5 4
1 3 1
2 4 6
2 2 4
2 3 9
我的目标是进行回归; Y 是因变量,X 是自变量。问题是我想按组运行此回归并在新数据集中打印系数。所以,结果应该是这样的:
Group Coefficient
1 0.25 (lets assume that coefficient is 0.25)
2 0.30
我希望我能解释我的问题。 非常感谢您的帮助。
【问题讨论】:
只适合每个组的单独回归模型... 就算我有一百万个群? 嗯,这取决于你的目标......你打算如何处理这些系数? 为什么我的目标在这里很重要?重要的一点是我需要所有这些系数。实际上,我认为我无法进行单独的回归。它很耗时,因为我有大量的团体。它是逐个滴答数据。 知道你的目标,我们可能会给你更好的建议......目前我不明白为什么你需要在每个组中进行回归,而不是使用@对整个数据集进行一次回归987654323@ 和X
作为输入 X
数据集和 Y
作为目标
【参考方案1】:
我不确定您需要的回归类型,但这就是您执行 OLS(普通最小二乘法)的方式:
import pandas as pd
import statsmodels.api as sm
def regress(data, yvar, xvars):
Y = data[yvar]
X = data[xvars]
X['intercept'] = 1.
result = sm.OLS(Y, X).fit()
return result.params
#This is what you need
df.groupby('Group').apply(regress, 'Y', ['X'])
您可以定义您的回归函数并按照上述方式向其传递参数。
【讨论】:
以上是关于python pandas中的分组回归的主要内容,如果未能解决你的问题,请参考以下文章
使用 Python(Pandas 和 Numpy)进行线性回归
使用 Python(Pandas 和 Numpy)进行线性回归