我想使用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'对象没有属性'结果'。
有人能帮我找到我错的地方吗?
我遇到了同样的问题,所以我必须找到解决办法。我没有太多经验,这不能解决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'
as自变量。为简单起见,让我们考虑简单的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
列。