【问题标题】:Access standardized residuals, cook's values, hatvalues (leverage) etc. easily in Python?在 Python 中轻松访问标准化残差、厨师值、帽子值(杠杆)等?
【发布时间】:2018-02-28 11:30:29
【问题描述】:

我正在寻找拟合线性回归后的影响统计数据。在 R 中,我可以像这样(例如)获得它们:

hatvalues(fitted_model) #hatvalues (leverage)
cooks.distance(fitted_model) #Cook's D values
rstandard(fitted_model) #standardized residuals
rstudent(fitted_model) #studentized residuals

等等

在拟合这样的模型后,如何在 Python 中使用 statsmodels 时获得相同的统计数据:

#import statsmodels
import statsmodels.api as sm

#Fit linear model to any dataset
model = sm.OLS(Y,X)
results = model.fit()

#Creating a dataframe that includes the studentized residuals
sm.regression.linear_model.OLSResults.outlier_test(results)

编辑:请参阅下面的答案...

【问题讨论】:

    标签: python scikit-learn linear-regression statsmodels


    【解决方案1】:

    虽然接受的答案是正确的,但我发现在拟合模型后将统计信息作为影响实例 (statsmodels.regression.linear_model.OLSResults.get_influence) 的实例属性单独访问是有帮助的。这使我不必为summary_frame 编制索引,因为我只对其中一个统计数据感兴趣,而不是对所有统计数据感兴趣。所以也许这对其他人有帮助:

    import statsmodels.api as sm
    
    #Fit linear model to any dataset
    model = sm.OLS(Y,X)
    results = model.fit()
    
    #create instance of influence
    influence = results.get_influence()
    
    #leverage (hat values)
    leverage = influence.hat_matrix_diag
    
    #Cook's D values (and p-values) as tuple of arrays
    cooks_d = influence.cooks_distance
    
    #standardized residuals
    standardized_residuals = influence.resid_studentized_internal
    
    #studentized residuals
    studentized_residuals = influence.resid_studentized_external
    

    【讨论】:

      【解决方案2】:
      猜你喜欢
      • 2017-11-27
      • 2020-11-10
      • 2020-02-28
      • 1970-01-01
      • 2020-10-22
      • 2018-04-15
      • 2016-02-04
      • 1970-01-01
      • 2023-02-21
      相关资源
      最近更新 更多