Python中statsmodels.api的get_influence()函数公式及官方文档查询
Cook's距离计算公式与statsmodels官方文档说明
你使用的是statsmodels库中OLS模型的get_influence()方法来计算Cook's距离,以下是相关细节:
计算公式
statsmodels中Cook's距离的计算遵循标准统计学定义,公式为:
$$D_i = \frac{e_i^2}{p \cdot MSE} \cdot \frac{h_{ii}}{(1 - h_{ii})^2}$$
其中:
- $e_i$:第i个观测的残差
- $p$:模型的参数总数(包含截距项,若模型包含的话)
- $MSE$:模型的均方误差
- $h_{ii}$:第i个观测对应的帽子矩阵对角线元素(杠杆值)
官方文档说明
statsmodels的官方文档中对该逻辑有明确说明:
get_influence()方法针对OLS模型会返回OLSInfluence类的实例(属于statsmodels.stats.outliers_influence模块)- 该实例的
cooks_distance属性返回一个元组:第一个元素是Cook's距离的数组,第二个元素是基于F分布近似得到的对应p值 - 类文档中明确标注了Cook's距离的计算逻辑与标准公式一致
代码补充说明
你的代码中influence.cooks_distance返回的是包含距离和p值的元组,若仅需距离值,可以拆分获取:
model = sm.OLS(Y, X).fit() np.set_printoptions(suppress=True) influence = model.get_influence() cooks_distances, p_values = influence.cooks_distance
内容的提问来源于stack exchange,提问作者Pavlína Ružičková
相关产品推荐
相关产品推荐

