web-dev-qa-db-ja.com

Pythonで標準化された残差、料理人の値、帽子の値(レバレッジ)などに簡単にアクセスしますか?

線形回帰を当てはめた後、影響統計を探しています。 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)

編集:以下の回答を参照してください...

7
Jaynes01

私はここでそれを見つけました:

http://www.statsmodels.org/dev/generated/statsmodels.stats.outliers_influence.OLSInfluence.summary_frame.html

OLSInfluence.summary_frame()
5
Jaynes01

受け入れられた答えは正しいですが、モデルを適合させた後、影響インスタンス(statsmodels.regression.linear_model.OLSResults.get_influence)のインスタンス属性として統計に個別にアクセスすると便利であることがわかりました。これにより、すべてではなく1つの統計にのみ関心があったため、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
5