[PYTHON] Tracé de la droite de régression par tracé des résidus

introduction

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.

Signification de résiduel

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 $.

Code Python

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()

Jusqu'où devons-nous analyser

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

Tracé de la droite de régression par tracé des résidus
Retour par CNN (modèle construit de vision de la torche)
[Statistiques] Comprendre le mécanisme des graphiques Q-Q avec animation.
Bases de l'analyse de régression
Chaos retour de la cartographie logistique par Petit RNN dans Tensorflow
Calcul de similitude par MinHash
Extraction de dessin au trait de l'illustration
Classification / régression par empilement (scikit-learn)
Tracé interactif du graphique 3D
Dessin linéaire avec une matrice - Recherche originale par un réinventeur du traitement d'image Python -
Lire la sortie standard d'un sous-processus ligne par ligne en Python
[GWAS] Tracez les résultats de l'analyse en composantes principales (ACP) par PLINK
Marge les caractères du fichier boîte généré par jTessBoxEditor ligne par ligne [Tesseract]