Analyse de régression simple avec Python

introduction

** Qu'est-ce que l'analyse de régression ** Une méthode pour connaître le degré d'influence de la variable explicative x (cause) sur la variable objective y (résultat). S'il n'y a qu'une seule variable explicative x, utilisez une analyse de régression simple, et s'il y a plusieurs variables explicatives x, utilisez une analyse de régression multiple.

** Modèle théorique d'équation de régression ** y = α + βx + u Variable objective = section + pente * variable explicative + terme d'erreur

Une analyse de régression simple peut être effectuée avec Excel, mais cette fois, j'ai essayé de la vérifier avec Python pour la pratique. (Je l'ai écrit après avoir vérifié les documents de référence et reçu des conseils d'un professeur d'université, mais il peut y avoir des erreurs.

Analyse de régression simple

** Ce que vous voulez vérifier ** Cette fois, nous examinerons "dans quelle mesure l'augmentation ou la diminution du nombre de vols directs en provenance de Chine, de Corée du Sud, de Taiwan et de Hong Kong affecte le nombre de visiteurs au Japon". La variable objective est "le nombre de visiteurs au Japon en provenance des pays asiatiques", et la variable explicative est uniquement "le nombre de vols directs en provenance des pays asiatiques". Outre le nombre de vols directs, les taux de change, les catastrophes naturelles, la sécurité, etc. sont également considérés comme des facteurs qui augmentent ou diminuent le nombre de visiteurs au Japon, je pense donc que l'analyse de régression multiple est plus appropriée pour la vérification, mais j'aimerais la vérifier à nouveau la prochaine fois.

** Données à utiliser ** --Ministère du foncier, des infrastructures, des transports et du tourisme Office du tourisme "Enquête sur les statistiques des voyages d'hébergement" 2015-2018 (http://www.mlit.go.jp/kankocho/siryou/toukei/shukuhakutoukei.html) --Ministère du Territoire, des Infrastructures, des Transports et du Tourisme "International Flight Status" Horaires d'été et d'hiver 2015-2018 (https://www.mlit.go.jp/koku/koku_fr19_000005.html)

J'ai créé la feuille Excel suivante en utilisant en quelque sorte les deux données ci-dessus. dataset.png Le nombre de vols directs en provenance des pays asiatiques et le nombre de visiteurs au Japon sont résumés par préfecture. 0 est entré dans les zones où il n'y a pas de vols directs ou où il n'y a pas d'aéroport en premier lieu.

Lecture de données et création de variables

Utilisez pandas pour lire les données et les stocker dans un fichier de données. Saisissez le nombre de vols directs en x et le nombre de visiteurs au Japon en y.

linear-regression.py


import pandas as pd

df = pd.read_excel('2016_summer_original.xlsx', sheet_name='Sheet2', encoding='utf-8')
x = df[['Corée']]
y = df[['Nombre de visiteurs au Japon']]

Analyse de régression simple avec scikit-learn

Utilisez scikit-learn pour une analyse de régression simple et matplotlib pour créer un graphique.

linear-regression.py


import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.linear_model import LinearRegression

##Tracez une ligne de régression
model_lr = LinearRegression()
model_lr.fit(x, y)

plt.plot(x, y, 'o')
plt.plot(x, model_lr.predict(x), linestyle="solid")
plt.show()

De plus, créez des statistiques descriptives avec stats model.

linear-regression.py


import statsmodels.api as sm

#Afficher les statistiques descriptives
x_add_const = sm.add_constant(x)
model_sm = sm.OLS(y, x_add_const).fit()

print(model_sm.summary())

Voici le résultat de l'exécution. C'est une tuerie instantanée: rire: korea-LR.png korea-DS.png

Interprétation des résultats

Comparons les résultats de la Chine et de Hong Kong à l'été 2015.

Chine china_LR.png china_DS.png Modèle: y = 942,76x + 21142,86 P>|t|:0.000 R-squared:0.405

Hong Kong hongkong_LR.png hongkong_DS.png Modèle: y = 961.33x + 4053.08 P>|t|:0.000 R-squared:0.654

À tout le moins, la signification des résultats de l'analyse et la capacité à expliquer la formule doivent être vues dans la «valeur P» et la «R2» des statistiques descriptives. La «valeur P» est la probabilité de rejeter l'hypothèse nulle (l'hypothèse opposée à ce que vous voulez affirmer). S'il est inférieur à 5%, il est statistiquement significatif. Le «coefficient de décision R2» est un indice qui mesure dans quelle mesure la droite de régression estimée s'applique aux données observées. Plus la valeur est proche de 1, meilleure est l'ajustement. Dans la figure ci-dessus, si le point bleu est proche de la ligne orange, l'ajustement est bon.

D'après le modèle de régression, la Chine semble augmenter de 943 pour chaque vol direct supplémentaire. Le résultat est significatif car la valeur P est 0, mais l'explication de la formule est faible. En revanche, à Hong Kong, le nombre de personnes augmente de 961 pour chaque vol supplémentaire, ce qui montre qu'il est significatif et a le pouvoir d'expliquer la formule.

à la fin

Étant donné que les données de vol sans escale publiées sont de 2015 à 2018, l'objectif d'analyse est limité à la période pendant laquelle les données existent, et comme il ne s'agit pas de données mensuelles, il n'est pas possible d'analyser les changements continus. C'était dommage. Je ne l'ai pas mentionné dans l'article car ce n'est pas le principal, mais cette fois, il était plus difficile de collecter et de prétraiter les données que de les analyser: sueur_smile: La prochaine fois, j'aimerais le vérifier avec une analyse de régression multiple.

Matériel de référence

J'ai essayé d'expliquer comment analyser les données avec Python pour les débutants [# 1 Comment effectuer une analyse de régression simple avec Scikit-learn](https://medium.com/@yamasaKit/scikit-learn%E3%81%A7%E5%8D%98%E5%9B%9E%E5% B8% B0% E5% 88% 86% E6% 9E% 90% E3% 82% 92% E8% A1% 8C% E3% 81% 86% E6% 96% B9% E6% B3% 95-f6baa2cb761e) Comment lire les résultats d'une analyse de régression simple [Outil d'analyse de données Excel] [Analyse de régression série 2] (Vidéo) [Shinichi Kurihara et Atsushi Maruyama "Statistical Picture Book" Ohm Co., Ltd.](https://www.amazon.co.jp/%E7%B5%B1%E8%A8%88%E5%AD%A6%E5%9B% B3% E9% 91% 91-% E6% A0% 97% E5% 8E% 9F-% E4% BC% B8% E4% B8% 80 / dp / 427422080X)

Recommended Posts

Analyse de régression simple avec Python
Première analyse de régression simple en Python
Analyse de régression avec Python
Implémentation simple de l'analyse de régression avec Keras
2. Analyse multivariée définie dans Python 1-1. Analyse de régression simple (scikit-learn)
2. Analyse multivariée décrite dans Python 1-2. Analyse de régression simple (algorithme)
GRPC simple en Python
Apprentissage automatique avec python (2) Analyse de régression simple
Analyse d'association en Python
Expression de régression multiple en Python
Régression linéaire en ligne en Python
Client IRC simple avec python
2. Analyse multivariée expliquée dans Python 7-3. Arbre de décision [arbre de retour]
Python Scikit-learn Analyse de régression linéaire Analyse de régression simple non linéaire Apprentissage automatique
Calculer le coefficient de régression d'une analyse de régression simple avec python
2. Analyse multivariée décrite dans Python 2-1. Analyse de régression multiple (scikit-learn)
Analyse des ondes cérébrales avec Python: tutoriel Python MNE
OAuth 2 simple avec Python (urllib + oauthlib)
Algorithme d'apprentissage automatique (analyse de régression unique)
Implémentation d'un algorithme simple en Python 2
Analyse du squelette planaire dans Python (2) Hotfix
Exécutez un algorithme simple en Python
Analyse de régression logistique Self-made avec python
Logique gacha simple écrite en Python
2. Analyse multivariée expliquée dans Python 5-3. Analyse de régression logistique (modèles statistiques)
Quadtree en Python --2
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
Régression linéaire en Python (statmodels, scikit-learn, PyMC3)
Un client HTTP simple implémenté en Python
Une analyse simple des données de Bitcoin fournie par CoinMetrics en Python
Méta-analyse en Python
Unittest en Python
Essayez de dessiner une animation simple en Python
Analyse de données python
Régression linéaire en ligne en Python (estimation robuste)
Créer une application GUI simple en Python
Époque en Python
Discord en Python
[Test statistique 2e année / quasi 1e année] Formation à l'analyse régressive avec Python (2)
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
Analyse de régression de Poisson
J'ai essayé d'implémenter la régression logistique de Cousera en Python
Plink en Python
Constante en Python
Ecrire une méthode de cupidité simple en Python
FizzBuzz en Python
Sqlite en Python
Étape AIC en Python
2. Analyse multivariée définie dans Python 6-2. Régression Ridge / Régression Lasso (scikit-learn) [Régression Ridge vs régression Lasso]
Méthode d'analyse de régression
[Test statistique 2e année / quasi 1e année] Formation à l'analyse régressive avec Python (1)
2. Analyse multivariée détaillée dans Python 2-3. Analyse de régression multiple [taux d’infection au COVID-19]