此問題擴展了this的問題,但現在我想爲單獨的羣組添加殘差。將預測殘差附加到熊貓數據框 - 按羣組
那麼,當你想爲單獨的組運行迴歸時如何追加殘差?
這裏是數據幀:
df = pd.DataFrame({'gp': [1,1,1,1,1,2,2,2,2,2],
'x1': [3.17, 4.76, 4.17, 8.70, 11.45, 3.17, 4.76, 4.17, 8.70, 11.45],
'x2': [23, 26, 73, 72, 16, 26, 73, 72, 16, 25],
'y': [880.37, 716.20, 974.79, 322.80, 1054.25, 980.37, 816.20, 1074.79, 522.80, 1254.25]},
index=np.arange(10, 30, 2))
現在,我想運行的兩個組(GP)分開的迴歸,並在一個單獨的列追加的殘差。
我嘗試這樣的代碼,但它僅填充最後迴歸組的殘差(GP = 2):
import numpy as np
import pandas as pd
import statsmodels.formula.api as sm
def groupreg(df, regmodel):
groups = df.groupby('gp')
for item, group in groups:
df['residual'] = sm.ols(formula=regmodel, data=group).fit().resid
return (df)
regmodel = 'y ~ x1 + x2'
df = groupreg(df,regmodel)
我發現一種方法來破解該問題,但是代碼是長烯看起來低效:
def groupreg2(df, regmodel):
groups = df.groupby('gp')
i = 0
resname='residual'
for item, group in groups:
data = group.copy()
data[resname] = sm.ols(formula=regmodel, data=data).fit().resid
if i == 0:
i = 1
dout = data[resname].copy()
else:
dout = dout.append(data[resname].copy())
df = pd.concat([df,dout],axis=1)
return (df)
df = groupreg2(df,regmodel)
有什麼建議要改進?
在我的Python你的建議不工作:這是執行代碼時我收到:值是嘗試將被設置在來自DataFrame的切片的副本上。 嘗試使用.loc [row_indexer,col_indexer] =值改爲 –