- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
假设我有一个 DataFrame
,其中有一列 y
变量和许多列 x
变量。我希望能够运行 y
与 x1
、y
与 x2
的多个单变量回归,.. ., 等等,并将预测存储回 DataFrame
。我还需要通过组变量来执行此操作。
import statsmodels.api as sm
import pandas as pd
df = 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 sm.OLS(y, x).fit().predict()
df.groupby('grp').apply(ols_res) # This does not work
上面的代码显然是行不通的。我不清楚如何在 apply
遍历 x
列时正确地将固定的 y
传递给函数(x1
, x2
, ...)。我怀疑可能有一个非常聪明的单线解决方案来做到这一点。有什么想法吗?
最佳答案
传递给 apply
的函数必须将 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
虽然上面的解决方案有效,但我认为下面的解决方案更像 pandas-y
import statsmodels.api as sm
import pandas as pd
import numpy as np
df = 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
在索引中没有组标签。
关于 python Pandas : how to run multiple univariate regression by group,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24544805/
我想求以下两个常量cons1和cons2的区间我写了下面的代码 from sympy import Poly from sympy import Abs from sympy.solvers.i
我有一个简单的数据集,我想使用茎叶图/箱线图进行分析,但我只想要文本图,而不是输出表。这是数据步骤: DATA CLINIC; INPUT ID $ 1-3 GENDE
假设我有一个 DataFrame,其中有一列 y 变量和许多列 x 变量。我希望能够运行 y 与 x1、y 与 x2 的多个单变量回归,.. ., 等等,并将预测存储回 DataFrame。我还需要通
我正在尝试优化 R 中的一个函数 该函数是仅估计 mu 参数时负二项式的似然函数。这应该不是问题,因为该函数显然只有一个最大值。但是,我无法达到理想的结果。 需要优化的功能是: EMV 2 x[wh
我正在对一个杂乱无章的文件进行每小时降水量分析。但是,我设法清理它并将其存储在数据帧(称为 CA1)中,其形式如下: Station_ID Guage_Type Lat Long
我有一个不平衡的单变量时间序列数据,0类实例=7898,1类实例=1371我使用以下LSTM模型,绘制ROC-AUC曲线,并找到最佳评估阈值。但该模型的表现比随机猜测要差/仅略好一些。这不是学习。数据
我是一名优秀的程序员,十分优秀!