.get_influence().cooks_distance in python 中的假设是什么?
What is the hypothesis in .get_influence().cooks_distance in python?
假设我最终得到了这样一个厨师的距离数组:
并查看第一个元素(库克距离 = 0.368 和 p 值 = 0.701)。
我如何解释 p 值?大于0.05拒绝H0,但H0是什么?
p 值不是您从假设检验中获得的 p 值。如果选中 wiki,Cook 距离服从具有 p 和 n-p 自由度的 F 分布。因此,您获得的 p 值实际上是观察到比该值更极端的值的概率,假设是线性模型。
我们可以看看 source code for statsmodels.stats.outliers_influence.OLSInfluence
这是计算厨师距离调用的函数:
def cooks_distance(self):
"""Cook's distance and p-values
Based on one step approximation d_params and on results.cov_params
Cook's distance divides by the number of explanatory variables.
p-values are based on the F-distribution which are only approximate
outside of linear Gaussian models.
Warning: The definition of p-values might change if we switch to using
chi-square distribution instead of F-distribution, or if we make it
dependent on the fit keyword use_t.
"""
cooks_d2 = (self.d_params * np.linalg.solve(self.cov_params,
self.d_params.T).T).sum(1)
cooks_d2 /= self.k_vars
from scipy import stats
# alpha = 0.1
# print stats.f.isf(1-alpha, n_params, res.df_modelwc)
# TODO use chi2 # use_f option
pvals = stats.f.sf(cooks_d2, self.k_vars, self.results.df_resid)
return cooks_d2, pvals
相关行是pvals = stats.f.sf(cooks_d2, self.k_vars, self.results.df_resid)
。所以你计算厨师距离并查看其在 F 分布上的 1-cdf 值。
这类似于获取单侧 t 检验的 p 值的方式,您会问观察到的 t 统计量比从检验中获得的统计量更极端的概率是多少。
假设我最终得到了这样一个厨师的距离数组:
并查看第一个元素(库克距离 = 0.368 和 p 值 = 0.701)。
我如何解释 p 值?大于0.05拒绝H0,但H0是什么?
p 值不是您从假设检验中获得的 p 值。如果选中 wiki,Cook 距离服从具有 p 和 n-p 自由度的 F 分布。因此,您获得的 p 值实际上是观察到比该值更极端的值的概率,假设是线性模型。
我们可以看看 source code for statsmodels.stats.outliers_influence.OLSInfluence
这是计算厨师距离调用的函数:
def cooks_distance(self):
"""Cook's distance and p-values
Based on one step approximation d_params and on results.cov_params
Cook's distance divides by the number of explanatory variables.
p-values are based on the F-distribution which are only approximate
outside of linear Gaussian models.
Warning: The definition of p-values might change if we switch to using
chi-square distribution instead of F-distribution, or if we make it
dependent on the fit keyword use_t.
"""
cooks_d2 = (self.d_params * np.linalg.solve(self.cov_params,
self.d_params.T).T).sum(1)
cooks_d2 /= self.k_vars
from scipy import stats
# alpha = 0.1
# print stats.f.isf(1-alpha, n_params, res.df_modelwc)
# TODO use chi2 # use_f option
pvals = stats.f.sf(cooks_d2, self.k_vars, self.results.df_resid)
return cooks_d2, pvals
相关行是pvals = stats.f.sf(cooks_d2, self.k_vars, self.results.df_resid)
。所以你计算厨师距离并查看其在 F 分布上的 1-cdf 值。
这类似于获取单侧 t 检验的 p 值的方式,您会问观察到的 t 统计量比从检验中获得的统计量更极端的概率是多少。