Le VIF calculé par Python et le VIF calculé par Excel sont différents .. ??

Vous pouvez vérifier VIF avec Python et c'est super pratique!

Vous pouvez vérifier VIF (Variance Inflation Factor) en Python, et vous pouvez vérifier la colinéarité multiple entre les variables explicatives tout en regardant ce résultat. Généralement, lorsque VIF> 10, on peut juger que la colinéarité multiple est forte.

from statsmodels.stats.outliers_influence import variance_inflation_factor

df_all = pd.read_excel('train.xlsx',sheet_name="Sheet1")

cols = df_all.select_dtypes(include=[np.number]).columns
cols_x = cols[1:]
data_x = df_all[cols_x]
#Calculer vif
vif = pd.DataFrame()
vif["VIF Factor"] = [variance_inflation_factor(data_x.values, i) for i in range(data_x.shape[1])]
#vif["features"] = data_x.columns 
 
#afficher le résultat du calcul de vif
print(vif)
 
#Graphique vif
plt.plot(vif["VIF Factor"])

Le résultat sortira comme ça. C'est pratique! image.png

Cependant, par rapport au VIF calculé par Excel ...

On a découvert que VIF est sorti avec des résultats différents ('Д') .. !! image.png

En premier lieu, VIF est calculé par la formule suivante.

VIF = 1/(1-R2) #R2: coefficient de décision

Lorsqu'une des variables explicatives est considérée comme la variable objective, le coefficient de décision R2 obtenu lors de la réalisation d'une analyse de régression multiple avec les variables explicatives restantes est utilisé. En parlant sensuellement, je comprends que si vous pouvez exprimer une variable, qui est la variable explicative restante, eh bien, vous n'avez pas besoin de cette variable? Le fait que le VIF soit différent signifie que ce R2 est différent entre Python et Excel, alors j'ai paniqué un instant.

La cause de la différence était de savoir si la section était incluse ou non.

Il s'est avéré que la raison était différente, qu'il s'agisse ou non d'inclure la section dans la variable explicative.

Du côté Python, traiter comme section = 0 Quand je l'ai examiné dans Excel, je n'ai pas spécifié la section.

J'ai pu confirmer que les VIF correspondent également lorsque j'ai défini la section = 0 dans Excel.

image.png ↑ S'il faut vérifier ici

Je veux demander à tout le monde .. Qu'est-ce qui est correct après tout?

Je pense à ce qui précède, mais qu'en est-il de tout le monde? Je suis également curieux de savoir ce qu'est l'algorithme de calcul VIF du modèle de statistiques en premier lieu.

Si vous avez des avis ou des conseils, n'hésitez pas à nous contacter! !!

Recommended Posts

Le VIF calculé par Python et le VIF calculé par Excel sont différents .. ??
Python a + = b et a = a + b sont différents
Python open et io.open sont les mêmes
La réponse de "1/2" est différente entre python2 et 3
Manipulez le presse-papiers en Python et collez le tableau dans Excel
[Python3] "A // B" et "math.floor (A / B)" ne sont pas toujours les mêmes! ??
L'histoire de Python et l'histoire de NaN
la matrice et le tapis de numpy sont différents
[Python] Que sont @classmethod et les décorateurs?
Lire la feuille Excel et le processus en boucle ligne par ligne Python VBA
Vérification de la théorie selon laquelle "Python et Swift sont assez similaires"
Essayer d'implémenter et de comprendre les arborescences de segments étape par étape (python)
[Python Kivy] Comment obtenir le chemin du fichier par glisser-déposer
Je suis abasourdi par le comportement de filter () en raison des différentes versions de Python
Vérifiez le nom du fichier si l'importation Python vous dit que vous ne pouvez pas
J'ai essayé de vérifier et d'analyser l'accélération de Python par Cython
Ouvrez un fichier Excel en Python et coloriez la carte du Japon
Les modules et packages en Python sont des "espaces de noms"
Tous les arguments Python sont passés par référence
Communication socket et traitement multi-thread par Python
yum et apt update / upgrade sont différents
Lisez le fichier ligne par ligne avec Python
Lisez le fichier ligne par ligne avec Python
Pandas du débutant, par le débutant, pour le débutant [Python]
Communication socket par langage C et Python
Academia Potter et le mystérieux Python Pass
Divise la chaîne de caractères par le nombre de caractères spécifié. En Ruby et Python.
Conversion de Fourier du fichier wav lu par Python, conversion inverse et réécriture
Cliquez sur le diagramme python / matplotlib pour obtenir des valeurs de coordonnées ou des valeurs d'entrée au clavier
Obtenez le dernier élément du tableau en fractionnant les chaînes en Python et PHP
Vérifiez si les caractères sont similaires en Python
[Python] Avant le trait de soulignement (underbar) Quelles sont les deux fonctions?
La première application Web créée par des débutants en Python
Résumé des différences entre PHP et Python
Le contenu du didacticiel Python (chapitre 5) est résumé dans une puce.
Le contenu du didacticiel Python (chapitre 4) est résumé dans une puce.
Le contenu du didacticiel Python (chapitre 2) est résumé dans une puce.
Comment fonctionnent les classes python et les méthodes magiques.
ffmpeg-Construisez un environnement python et divisez la vidéo
Le contenu du didacticiel Python (chapitre 8) est résumé dans une puce.
Le contenu du didacticiel Python (chapitre 1) est résumé dans une puce.
Spécification de la plage des tableaux ruby et python
Créez automatiquement des rapports Word et Excel avec Python
J'ai comparé "type de dictionnaire python" et "fonction excel"
À propos de la différence entre "==" et "is" en python
Le contenu du didacticiel Python (chapitre 10) est résumé dans une puce.
Comparez la vitesse d'ajout et de carte Python
Excel X Python La technique de travail la plus rapide
Comment effacer les caractères générés par Python
Que comparez-vous avec Python et ==?
Résolution du modèle Lorenz 96 avec Julia et Python
Notifier l'erreur et la fin de l'exécution par LINE [Python]
Archivez et compressez tout le répertoire avec python
Le contenu du didacticiel Python (chapitre 6) est résumé dans une puce.
Le contenu du didacticiel Python (chapitre 3) est résumé dans une puce.
Prise en compte des forces et faiblesses de Python
Que sont les taples et * args python après tout?
Divisez les images Python et disposez-les côte à côte
Python> Trier par nombre et trier par alphabet> Utiliser trié ()