[PYTHON] Lors de la résolution de l'exercice d'introduction aux statistiques 12.10, vérifiez comment dessiner un diagramme de dispersion dans les pandas.

Aperçu

Le problème avec 12-10 est C'est un problème de tester le coefficient de corrélation entre le taux de vote autonome et le taux d'accession à la propriété. Le matériel est assez ancien (élection générale de 1983 !!), mais il est intéressant de noter que plus vous possédez une maison, plus le LDP sera avantageux.

Donc, au lieu de simplement le résoudre, j'ai décidé d'afficher le graphique en utilisant pandas et matplotlib.

environnement

J'ai téléchargé les bibliothèques nécessaires depuis http://www.lfd.uci.edu/~gohlke/pythonlibs/. Parfois, cela ne fonctionnait pas lorsque je le mettais avec pip install.

Bibliothèque

%matplotlib inline
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as stats

Création de données

p.65 À partir du tableau 3.13, insérez régulièrement les données dans csv. Chargez le fichier csv terminé (nommé table_3_13.csv) dans le dataframe comme indiqué ci-dessous.

df = pd.read_csv('table_3_13.csv', encoding='shift-jis') 
#Si le résultat semble déformé, vérifiez l'encodage.
df

J'ai pu le lire comme ça. table_3_13.png

Création de graphes

Un graphique simple s'affiche comme suit.

d = df[0:47] #J'ai réduit les résultats de Hokkaido à Okinawa uniquement.
#En regardant le graphique, il semble qu'il existe une corrélation.
plt.xlabel(d.columns[1])
plt.ylabel(d.columns[2])
plt.scatter(d[[1]], d[[2]])
plt.show()

scatter_01.png

Il semble y avoir une corrélation entre le taux d'accession à la propriété et le taux de vote LDP.

Ajoutez des lettres à chaque élément du graphique afin de savoir à quelle préfecture il appartient.

#Ajouter des lettres à chaque élément
fig, ax = plt.subplots(figsize=(15,15)) #Si le graphique n'est pas assez grand dans une certaine mesure, le nom de la préfecture ne peut pas être vu.
df.plot(1, 2, kind='scatter', ax=ax)
for k, v in df.iterrows():
    ax.annotate(v[0], xy=(v[1], v[2]), size=12) #v[0]Nom de la préfecture, v[1]Le taux de vote privé, v[2]Le taux d'accession à la propriété est inclus dans.
plt.show()

scatter_02.png

En un coup d'œil, vous pouvez voir que le ratio de propriétaires semble plus élevé dans les zones rurales.

Calculer le coefficient de corrélation

les pandas peuvent être facilement calculés en utilisant la méthode corr. C'était comme ça.

d.corr()
Taux de vote LDP Ratio de propriété
Taux de vote LDP 1.000000 0.638782
Ratio de propriété 0.638782 1.000000

Dans quelle mesure le coefficient de corrélation est-il certain?

Un test est effectué pour voir la probabilité du coefficient de corrélation calculé. Ici, nous utilisons la transformée en z de Fisher comme test du coefficient de corrélation. La conversion z de Fisher ressemble à ceci:

Conversion z de Fisher

Lorsqu'il existe une population normale bidimensionnelle et que le coefficient de corrélation de population est $ \ rho $ et que le coefficient de corrélation de l'échantillon est $ r , $ z=\frac{1}{2}\log\frac{1+r}{1-r} $ $ \eta=\frac{1}{2}\log\frac{1+\rho}{1-\rho} $$ Convertir en. A ce moment, l'échantillon de distribution de $ z $ devient la distribution normale $ N (\ eta, 1 / (n-3)) $ lorsque le nombre de données $ n $ est grand. Par conséquent, $ \ sqrt {n-3} (z- \ eta) $ suit la distribution normale standard $ N (0,1) $.

Je vais vraiment le tester.

i) Hypothèse nulle: le coefficient de corrélation de population est de 0,0

Définissez $ \ rho = 0.0 $ et calculez avec python comme suit.

n=48 #Le nombre de données
r = 0.638782
rho = 0.0

z= 0.5*np.log((1+r)/(1-r))
eta = 0.5* np.log((1+rho)/(1-rho))

Z = np.sqrt(n-3)*(z-eta)
print("Z=",Z) #Z= 5.07216324479

Par contre, puisque $ Z_ {0,025} = 1,96 $, évidemment $ Z_ {0,025} <Z $, l'hypothèse est rejetée. Par conséquent, on ne peut pas dire qu'il n'y a pas de corrélation (niveau de signification 0,05).

i) Hypothèse nulle: le coefficient de corrélation de population est de 0,5

Si vous l'écrivez en python de la même manière que i) avec $ \ rho = 0.5 $, cela ressemble à ceci.

n=48 #Le nombre de données
r = 0.638782
rho = 0.5

z= 0.5*np.log((1+r)/(1-r))
eta = 0.5* np.log((1+rho)/(1-rho))

Z = np.sqrt(n-3)*(z-eta)
print("Z=",Z)

Pour le $ z = 1,39 $ obtenu, l'hypothèse nulle n'est pas rejetée à partir de $ Z_ {0,025} = 1,96> 1,39 $. Par conséquent, le coefficient de corrélation de population peut être de 0,5. (Niveau de signification 0,05)

Tâche

En fait, je voulais peindre la carte du Japon en utilisant des géopandas, mais je n'ai pas réussi à l'installer sur win10. Une fois que vous savez comment procéder, réessayez.

cf) Comment trouver Z de la distribution standard normale en python?

La valeur de $ Z $ lorsque l'aire de la fonction de distribution devient $ a $ peut être obtenue par la fonction suivante.

stats.norm.ppf(a)

Cette fois, le niveau de prédominance des deux épaules est de 0,05, alors calculez comme suit.

stats.norm.ppf(1-0.025) #1.959963984540054

$ Z_ {0.025} = 1.96 $ est bien connu, mais c'est à peu près le même que le résultat ci-dessus.

Recommended Posts

Lors de la résolution de l'exercice d'introduction aux statistiques 12.10, vérifiez comment dessiner un diagramme de dispersion dans les pandas.
[Python] Comment dessiner un diagramme de dispersion avec Matplotlib
Comment vérifier la taille de la mémoire d'une variable en Python
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
[Python] Comment dessiner un histogramme avec Matplotlib
[Pandas] Comment vérifier les doublons dans un tableau et supprimer les doublons (équivalent à supprimer les doublons dans Excel)
Comment vérifier en Python si l'un des éléments d'une liste est dans une autre liste
[python] Comment vérifier si la clé existe dans le dictionnaire
Comment afficher le maillage régional du Government Statistics Office (eStat) dans un navigateur Web
Combinez des listes dans un DataFrame avec des pandas
Comment générer une requête à l'aide de l'opérateur IN dans Django
Comment vérifier si une valeur existe dans un type d'énumération
Comment obtenir la dernière (dernière) valeur d'une liste en Python
Comment représenter la distribution de la composition bactérienne à partir des données d'analyse Qiime2 dans un diagramme de moustaches
[sh] Comment stocker les résultats de l'exécution de la commande dans des variables
Comment déterminer l'existence d'un élément sélénium en Python
Remarque sur la façon de vérifier la connexion au port du serveur de licences
Comment obtenir toutes les valeurs possibles dans une expression régulière
[Introduction à Python] Comment utiliser l'opérateur in dans l'instruction for?
[TensorFlow 2] Comment vérifier le contenu de Tensor en mode graphique
Comment trouver l'adresse mémoire de la valeur de la trame de données Pandas
<Pandas> Comment gérer les données de séries chronologiques dans le tableau croisé dynamique
Comment obtenir les coordonnées de sommet d'une entité dans ArcPy
Comment vérifier le GAE local à partir du navigateur iPhone dans le même LAN
Comment obtenir un nom de colonne et un nom d'index spécifiques avec Pandas DataFrame
Comment spécifier un fichier .ui dans la boîte de dialogue / interface graphique du widget dans PySide
[Python] Si vous souhaitez dessiner un diagramme de dispersion de plusieurs clusters
Comment étudier jusqu'à ce qu'un débutant en statistique se lance avec les statistiques bayésiennes
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
Comment lire une vidéo tout en regardant le nombre d'images (Mac)
Comment trier en spécifiant une colonne dans le tableau Python Numpy.
Comment vérifier la version de Django
Comment dessiner un graphique avec Matplotlib
Comment obtenir stacktrace en python
Comment vérifier la version d'opencv avec python
Comment lire des fichiers CSV avec Pandas
Comment dessiner une image OpenCV avec Pygame
Comment compter le nombre d'éléments dans Django et sortir dans le modèle
Un mémorandum expliquant comment exécuter la commande magique! Sudo dans Jupyter Notebook
La première chose à vérifier quand un No Reverse Match se produit dans Django
Dessinez une ligne de pliage / diagramme de dispersion avec python matplotlib pour fichier CSV (2 colonnes)
La première étape de l'analyse du journal (comment formater et mettre les données du journal dans Pandas)
Comment obtenir une liste de fichiers dans le même répertoire avec python
Comment calculer la volatilité d'une marque
Comment utiliser la bibliothèque C en Python
Comment effacer un taple dans une liste (Python)
Comment dessiner un graphique à 2 axes avec pyplot
Comment incorporer des variables dans des chaînes python
Comment dessiner un graphique 3D avant l'optimisation
Comment créer un fichier JSON en Python
Dessinez des graphiques dans Julia ... Laissez les graphiques à Python
Comment implémenter un sélecteur de dégradé dans Houdini
Comment notifier les canaux Discord en Python
Comment obtenir les fichiers dans le dossier [Python]
Comment créer une API Rest dans Django
Comment écrire un document tuple nommé en 2020
Comment compter les nombres dans une plage spécifique
Comment lire des fichiers dans différents répertoires
Comment se moquer d'une fonction publique dans Pytest
Comment tracer l'autocorrélation et l'autocorrélation partielle avec Python
Comment définir un dossier partagé avec le système d'exploitation hôte dans CentOS7 sur Virtual BOX