如何使用 python statsmodel 计算 Cooks Distance、DFFITS

How to calculate Cooks Distance, DFFITS using python statsmodel

我想使用 statsmodel 在 Python 中计算 Cooks_dDFFITS

这是我在 Python 中的代码:

X = your_str_cleaned[param]
y = your_str_cleaned['Visitor']
X = sm.add_constant(X)
model = sm.OLS(y, X)
results = model.fit()

我尝试使用它来获取 Cooks DistanceDFFITS:

import statsmodels.stats.outliers_influence as st_inf
st_inf.OLSInfluence.summary_frame(results)

但是我收到这个错误:

'OLSResults' object has no attribute 'results'.

谁能帮我找出我哪里出错了?

我遇到了同样的问题,所以我不得不想办法解决。我没有太多经验,这并不能解决 OLSInfluence 的根本问题。但它给你 summary_frame.

我将使用 pandas 数据帧作为数据源。即使你在其他对象(如数组)中有它,你也可以相对轻松地将它们转换为数据框。为了展示它是如何工作的,我将从 sklearn.datasets:

导入波士顿房价数据集
import pandas as pd
from sklearn.datasets import load_boston

#imports dataset
boston = load_boston()

#generates DataFrame bos
bos = pd.DataFrame(boston.data)

#adds columns names to bos
bos.columns = boston.feature_names 

#adds column 'PRICE' to bos
bos['PRICE'] = boston.target

现在让我们考虑'RM'列和'PRICE'列之间的关系,以'RM'作为自变量。为简单起见,让我们考虑简单的 OLS。真正的答案来了:

from statsmodels.formula.api import ols

m = ols('PRICE ~ RM',bos).fit()
infl = m.get_influence()
sm_fr = infl.summary_frame()

sm_fr 包含您要查找的列 cooks_ddffits