Une compréhension intuitive du principe des parcelles résiduelles nécessite une compréhension de la signification des résidus. Pour le contexte théorique du tracé des résidus, reportez-vous au "Théorème FWL". Dans cet article, j'expliquerai brièvement la signification des résidus afin de comprendre le tracé des résidus. Après cela, je vais vous montrer comment écrire du code python.
Prenons une analyse de régression linéaire à deux variables. $ Y_i = \alpha + \beta X_{1i} + \beta X_{2i} +\epsilon_i $
Si vous pouvez comprendre la signification du terme d'erreur, vous comprendrez pourquoi cette ligne droite est obtenue par une analyse de régression en deux étapes.
Le terme d'erreur est un terme qui explique l'information selon laquelle les variables explicatives ne peuvent pas expliquer la variable expliquée. Autrement dit, il contient toutes les informations sur la variable expliquée à l'exception des variables explicatives. Considérons une analyse de régression simple de Y avec X1. $ Y_i = \pi_i + \pi_2 X_{1i} + \eta_i $ $ \ Eta_i $ dans ce modèle a toutes les informations sur Y que $ X_ {1} $ ne peut pas expliquer. Ensuite, considérons une analyse de régression de X2 avec X1. $ X_{2i} = \theta_1 + \theta_2 X_{1i} + \zeta_i $ $ \ Zeta_i $ dans ce modèle a toutes les informations sur X2 que $ X_ {1} $ ne peut pas expliquer.
Avez-vous déjà imaginé quoi faire à ce stade? $ \ eta $ contient des informations X2 sur Y, mais pas des informations X1. Par contre, dans $ \ zeta $, X2 contient des informations sur Y, mais pas sur X1. Par conséquent, l'analyse de régression résiduelle revendiquée par le théorème de FWL régresse $ \ eta_i $ de $ \ zeta_i $.
Allez au point où le graphique résiduel est affiché.
import statsmodels.api as sm
import pandas as pd
import matplotlib.pyplot as plt
#read data
data=pd.read_csv("___.csv")
Y=data.loc[:,"name"]
X1=data.loc[:,["names1"]]
X2=data.loc[:,"names2"]
#it is necessary to add constant variable
X1=sm.add_constant(X1)
model1=sm.OLS(Y, X1)
result1=model1.fit()
Y1_hat=result1.predict(X1)
model2=sm.OLS(X2, X1)
result2=model2.fit()
Y2_hat=result2.predict(X1)
e1=Y-Y1_hat
e2=X2-Y2_hat
plt.plot(e1,e2,linestyle="None",marker=".")
plt.show()
Vous pouvez analyser jusqu'à ce que le tracé résiduel ne soit plus corrélé. Puisqu'il est tracé, il peut être plus fiable de voir s'il existe une corrélation que de regarder les statistiques de test.
Recommended Posts