Aka*_*wal 3 python statistics statsmodels
我想计算Cooks_d和DFFITS使用Python中statsmodel。
这是我在 Python 中的代码:
X = your_str_cleaned[param]
y = your_str_cleaned['Visitor']
X = sm.add_constant(X)
model = sm.OLS(y, X)
results = model.fit()
Run Code Online (Sandbox Code Playgroud)
我尝试使用它来获取Cooks Distance和DFFITS:
import statsmodels.stats.outliers_influence as st_inf
st_inf.OLSInfluence.summary_frame(results)
Run Code Online (Sandbox Code Playgroud)
但我收到此错误:
'OLSResults' 对象没有属性 'results'。
有人可以帮我找出我哪里出错了吗?
小智 5
我遇到了同样的问题,所以我不得不想办法解决。我没有太多经验,这并不能解决OLSInfluence. 但它给了你summary_frame。
我将使用熊猫数据帧作为数据源。即使您在其他对象(如数组)中拥有它,您也可以相对轻松地将它们转换为数据帧。为了展示它是如何工作的,我将从以下位置导入波士顿房价数据集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
Run Code Online (Sandbox Code Playgroud)
现在让我们考虑 column'RM'和 column之间的关系'PRICE','RM'作为自变量。为简单起见,让我们考虑简单的 OLS。真正的答案来了:
from statsmodels.formula.api import ols
m = ols('PRICE ~ RM',bos).fit()
infl = m.get_influence()
sm_fr = infl.summary_frame()
Run Code Online (Sandbox Code Playgroud)
sm_fr有列cooks_d和dffits你寻找。