[GO] 2. Analyse multivariée détaillée dans Python 2-3. Analyse de régression multiple [taux d’infection au COVID-19]

Je voudrais jeter un regard plus concret sur ce que l'analyse de régression multiple peut nous dire. Par conséquent, nous créerons des échantillons de données à partir de données statistiques familières et effectuerons une analyse de régression multiple pour essayer l'interprétation. Pour créer les exemples de données cette fois, nous avons utilisé les deux sources de données suivantes.

➀ Site portail des statistiques gouvernementales "Fenêtre complète pour les statistiques gouvernementales e-Stat" Données préfectorales https://www.e-stat.go.jp/regional-statistics/ssdsview/prefectures ➁ Ministère de la Santé, du Travail et du Bien-être «Nouvelle infection à virus Corona» Statut des personnes testées positives dans chaque préfecture https://www.mhlw.go.jp/content/10906000/000646813.pdf

Tout d'abord, laissez la variable objective être le taux de personnes infectées par le nouveau virus corona. En tant que variables explicatives susceptibles d'influencer cela, nous avons préparé les sept variables suivantes en tant qu'indicateurs liés aux activités dites «à trois denses» et «des personnes» dont on pense qu'elles conduisent à la propagation de l'infection.

Nom de l'indicateur Formule de calcul de l'indice Année d'enquête
Ratio de population de la zone de concentration de la population(%) Population du district de concentration de la population(Homme) / 総Homme口(Homme) 2015
Ratio de population jour / nuit(%) Population de jour/Population nocturne 2015
Ratio d'emploi(%) Nombre d'employés(Homme) / 総Homme口(Homme) 2015
Ratio d'emploi des entreprises de restauration / hébergement(%) Nombre d'employés(Entreprise de restauration / hébergement)(Homme) / Nombre d'employés(Homme) 2005
Taux d'activité de voyage(%) Taux d'activité de voyage 10歳以上(%) 2016
Ratio de clients étrangers(%) Nombre total d'invités étrangers(Homme) /Nombre total d'invités(Homme) 2018
Ratio de ménage unique(%) Nombre de ménages isolés(Ménage) / Ménage数(Ménage) 2018
Taux de personnes infectées pour 100 000 habitants(%) Nombre de personnes infectées Date positive(Homme) / 総Homme口(Homme) Au 5 juillet 2020

⑴ Importez la bibliothèque

import numpy as np                #Calcul numérique
import pandas as pd               #Opération de trame de données
from sklearn import linear_model  #Modèle linéaire d'apprentissage automatique

⑵ Lire des exemples de données

#Spécifiez l'URL et lisez le fichier csv
url = 'https://raw.githubusercontent.com/yumi-ito/sample_data/master/covid19_factors_prefecture.csv'
df = pd.read_csv(url)

#Vérifiez le contenu en affichant les 5 premières lignes de données
df.head()

Puisque les données d'exemple (covid19_factors_prefecture.csv) sont placées sur GitHub, elles sont lues à partir de là. 002_0203_001.PNG Il existe un «ratio de population», mais ce quartier densément peuplé (DID: Densely Inhabited District) est une zone urbaine définie par une certaine norme basée sur des données statistiques. Alors qu'est-ce qu'une zone urbaine, c'est une zone particulièrement densément peuplée, qui au sens large est une zone urbaine. En gros, quelle est la concentration de la population d'une préfecture dans la ville? Par exemple, à Hokkaido, si la densité de population est simplement définie, elle sera dispersée car la zone est grande, mais le ratio de population dans la zone densément peuplée est de 75,2%, et 3 personnes sur 4 vivent dans la zone urbaine, ce qui montre que la densité est remarquable.

(3) Aperçu des données

#Obtenez des statistiques récapitulatives pour chaque colonne
df.describe()

Utilisez la fonction pandas describe. 002_0203_002.PNG

Inutile de dire que la valeur maximale est de 46,34% à Tokyo et la valeur minimale est de 0,00% dans la préfecture d'Iwate.

Je voudrais jeter un oeil au top 5 de chaque variable. 002_0203_003.PNG

Il va sans dire que Tokyo est généralement le meilleur, mais je suis curieux que les deux préfectures de Hokuriku, Ishikawa et Toyama, soient classées dans le taux d'infection. Les deux préfectures sont peu visibles en termes de nombre de personnes infectées, mais le ratio de personnes infectées par rapport à la population de la préfecture est élevé. Soit dit en passant, le nombre réel est de 300 dans la préfecture d'Ishikawa et de 228 dans la préfecture de Toyama. Dans la préfecture d'Ishikawa, le ratio des travailleurs de la restauration / hébergement par rapport à l'ensemble des travailleurs de la préfecture est de 5,8%, ce qui est le même que celui de la préfecture de Nagano, qui est le cinquième le plus élevé au Japon. L'intention d'adopter cette variable est une interprétation un peu élargie, mais l'idée est que les activités économiques liées au tourisme telles que l'hébergement et les repas et boissons qui les accompagnent sont actives et qu'il existe de nombreuses possibilités de contact humain. En ce sens, la proéminence de la préfecture d'Okinawa peut être hochée. En outre, à Hokkaido, en plus du grand nombre de personnes infectées, de nombreux rapports ont fait état d'impacts touristiques dans les médias, mais il est vrai que le ratio d'étrangers par rapport au nombre total de personnes ayant passé la nuit en un an est C'est la 4ème place après la préfecture de Kyoto avec 25,3%.

Maintenant, faisons une analyse de régression multiple.

(4) Stocker respectivement les variables explicatives et les variables objectives

#Extraire uniquement les variables explicatives et les stocker dans la variable X
X = df.loc[:, 'Ratio de population de la zone de concentration de la population':'Ratio de ménage unique']

#Extraire uniquement la variable objectif et la stocker dans la variable Y
Y = df["Taux de personnes infectées pour 100 000 habitants"]

⑸ Générer un modèle

#Générer une instance d'un modèle linéaire
model = linear_model.LinearRegression()

#Passer des données pour générer un modèle
model.fit(X,Y)

⑹ Obtenir le coefficient de régression partielle

#Obtenez la valeur du coefficient et stockez-la dans le coefficient variable
coefficient = model.coef_

#Convertir en bloc de données avec le nom de la colonne et le nom de l'index
df_coefficient = pd.DataFrame(coefficient, columns=["Coefficient de régression partiel"], index=[X.columns])

df_coefficient

002_0203_004.PNG Le coefficient de régression partielle représente ** l'ampleur de l'effet de chaque variable explicative sur la variable objective **. Premièrement, le «ratio emploi restaurant / hébergement» est de loin le plus important, suivi du «ratio voyageurs» et du «ratio de population jour / nuit». S'il s'agit d'un hébergement, il s'agit principalement de tourisme ou d'affaires. En d'autres termes, on peut dire que le fait que de nombreuses personnes viennent de l'extérieur de la préfecture et restent pendant un certain temps, et donc que la proportion de personnes engagées dans la restauration et l'hébergement soit élevée, a une grande influence sur le taux d'infection. De plus, si de nombreuses personnes entrent et sortent de la préfecture pour se déplacer ou se rendre à l'école, le nombre de personnes infectées augmentera également, donc en bref, la «restriction de mouvement» est efficace pour prévenir l'infection.

⑺ Obtenez une section

#Obtenir une section
model.intercept_

La section (intersection avec l'axe Y) a été calculée par la fonction ʻintercept_`, qui a révélé l'équation de régression multiple. 002_0203_005.PNG

⑻ Vérifiez la précision du modèle

#Obtenez le facteur de décision
model.score(X, Y)

Enfin, la fonction «score» est utilisée pour calculer le coefficient de détermination $ R ^ 2 $ afin de confirmer la «qualité d'ajustement» de l'équation de régression multiple. En d'autres termes, dans quelle mesure cette équation de régression multiple peut-elle expliquer la relation causale réelle? 002_0203_006.PNG Pour être honnête, je pensais que je voulais qu'il dépasse 0,8, mais je pense qu'il faut considérer la composition des variables explicatives (car je l'ai fait rapidement).

Recommended Posts

2. Analyse multivariée détaillée dans Python 2-3. Analyse de régression multiple [taux d’infection au COVID-19]
2. Analyse multivariée définie dans Python 1-1. Analyse de régression simple (scikit-learn)
2. Analyse multivariée expliquée dans Python 7-3. Arbre de décision [arbre de retour]
2. Analyse multivariée décrite dans Python 1-2. Analyse de régression simple (algorithme)
2. Analyse multivariée décrite dans Python 6-1. Régression de crête / Régression de lasso (scikit-learn) [régression multiple vs régression de crête]
2. Analyse multivariée expliquée dans Python 5-3. Analyse de régression logistique (modèles statistiques)
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]
2. Analyse multivariée expliquée dans Python 8-2. Méthode de voisinage k [méthode de pondération] [modèle de retour]
2. Analyse multivariée décrite dans Python 3-2. Analyse en composantes principales (algorithme)
2. Analyse multivariée décrite dans Python 7-1. Arbre de décision (scikit-learn)
2. Analyse multivariée expliquée dans Python 3-1. Analyse en composantes principales (scikit-learn)
2. Analyse multivariée expliquée dans Python 8-1. Méthode de voisinage k (scikit-learn)
2. Analyse multivariée énoncée dans Python 8-3. Méthode de voisinage K [vérification d'intersection]
2. Analyse multivariée expliquée dans Python 7-2. Arbre de décision [différence de critères de division]
Analyse de régression avec Python
Expression de régression multiple en Python
Analyse de régression simple avec Python
Première analyse de régression simple en Python
Analyse d'association en Python
Analyse de régression multiple avec Keras
Analyse des contraintes symétriques axiales avec Python
Changements du taux d'infection à coronavirus
Évitez les boucles multiples en Python
Régression linéaire en ligne en Python
[Python] PCA scratch dans l'exemple de "Introduction à la méthode d'analyse multivariée"
[Test statistique 2e année / quasi 1e année] Formation à l'analyse régressive avec Python (1)
Extraire plusieurs doublons de liste en Python
Analyse des ondes cérébrales avec Python: tutoriel Python MNE
[Python] Afficher plusieurs fenêtres avec Tkinter
Algorithme d'apprentissage automatique (analyse de régression multiple)
Test statistique (test multiple) en Python: scikit_posthocs
Analyse du squelette planaire dans Python (2) Hotfix
Implémentation simple de l'analyse de régression avec Keras
Supprimer plusieurs éléments dans la liste python
Analyse de régression logistique Self-made avec python