Python Pandas:如何按组运行多个单变量回归

Python Pandas:如何按组运行多个单变量回归,第1张

Python Pandas:如何按组运行多个单变量回归

传递给的函数

apply
必须以a
pandas.Dataframe
作为第一个参数。您可以将其他关键字或位置参数
apply
传递给该参数或传递给应用函数。因此,您的示例将进行少量修改即可工作。更改
ols_res

def ols_res(df, xcols,  ycol):    return sm.OLS(df[ycol], df[xcols]).fit().predict()

然后,你可以使用

groupby
apply
喜欢这个

df.groupby('grp').apply(ols_res, xcols=['x1', 'x2'], ycol='y')

要么

df.groupby('grp').apply(ols_res, ['x1', 'x2'], 'y')

编辑

上面的代码并 没有 运行多个 单变量 回归。相反,它每组运行一个 多元 回归。但是(稍作修改)它将实现。

def ols_res(df, xcols,  ycol):    return pd.Dataframe({xcol : sm.OLS(df[ycol], df[xcol]).fit().predict() for xcol in xcols})

编辑2

虽然上述解决方案有效,但我认为以下内容更实用-

import statsmodels.api as smimport pandas as pdimport numpy as npdf = pd.Dataframe({  'y': np.random.randn(20),  'x1': np.random.randn(20),   'x2': np.random.randn(20),  'grp': ['a', 'b'] * 10})def ols_res(x, y):    return pd.Series(sm.OLS(y, x).fit().predict())df.groupby('grp').apply(lambda x : x[['x1', 'x2']].apply(ols_res, y=x['y']))

由于某种原因,如果我

ols_res()
按原样定义,则结果
Dataframe
在索引中没有组标签。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5650105.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-16
下一篇2022-12-16

发表评论

登录后才能评论

评论列表(0条)

    保存