如何使用 python statsmodel 计算 Cooks Distance、DFFITS
How to calculate Cooks Distance, DFFITS using python statsmodel
我想使用 statsmodel 在 Python 中计算 Cooks_d
和 DFFITS
。
这是我在 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 Distance
和 DFFITS
:
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_d
和 dffits
。
我想使用 statsmodel 在 Python 中计算 Cooks_d
和 DFFITS
。
这是我在 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 Distance
和 DFFITS
:
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_d
和 dffits
。