以下是一个示例代码,展示如何按组别计算具有滞后预测变量的线性模型的残差作为新变量。
import pandas as pd
import numpy as np
from statsmodels.api import OLS
# 创建示例数据集
data = pd.DataFrame({
'group': ['A', 'A', 'A', 'B', 'B', 'B'],
'x': [1, 2, 3, 4, 5, 6],
'y': [2, 4, 6, 8, 10, 12]
})
# 按组别计算残差
residuals = []
for group, df_group in data.groupby('group'):
x = df_group['x']
y = df_group['y']
# 创建线性模型
model = OLS(y, x)
results = model.fit()
# 计算残差
residuals.extend(results.resid.tolist())
# 将残差作为新变量添加到数据集中
data['residuals'] = residuals
print(data)
在上述代码中,我们首先创建了一个示例数据集data
,其中包含了组别列group
、自变量列x
和因变量列y
。然后,我们使用groupby
函数按组别对数据进行分组。
在每个组别中,我们通过使用statsmodels
库中的OLS
类创建了一个线性模型,并使用该模型拟合了因变量y
和自变量x
。然后,我们提取了模型拟合的残差,并将其添加到一个列表residuals
中。
最后,我们将residuals
列表作为新变量residuals
添加到原始数据集data
中,并打印结果。
请注意,上述示例代码仅供参考,具体的实现方式可能因数据集的特征而异。
上一篇:按组别进行条件计数计算