[PYTHON] Überprüfen Sie beim Lösen der einführenden Statistikübung 12.10, wie Sie ein Streudiagramm in Pandas zeichnen.

Überblick

Das Problem mit 12-10 ist Es ist ein Problem, den Korrelationskoeffizienten zwischen der selbständigen Stimmenquote und der Wohneigentumsquote zu testen. Das Material ist ziemlich alt (Parlamentswahlen 1983 !!), aber es ist interessant, dass je mehr Sie ein Haus besitzen, desto mehr scheint die LDP einen Vorteil zu haben.

Anstatt es nur zu lösen, habe ich beschlossen, das Diagramm mit Pandas und Matplotlib anzuzeigen.

Umgebung

Ich habe die erforderlichen Bibliotheken von http://www.lfd.uci.edu/~gohlke/pythonlibs/ heruntergeladen. Manchmal hat es nicht funktioniert, wenn ich es mit pip install eingesetzt habe.

Bibliothek

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

Datenerstellung

S.65 Fügen Sie aus Tabelle 3.13 kontinuierlich Daten in csv ein. Laden Sie die fertige CSV-Datei (mit dem Namen table_3_13.csv) wie unten gezeigt in den Datenrahmen.

df = pd.read_csv('table_3_13.csv', encoding='shift-jis') 
#Wenn das Ergebnis verstümmelt aussieht, überprüfen Sie die Codierung.
df

Ich konnte es so lesen. table_3_13.png

Diagrammerstellung

Ein einfaches Diagramm wird wie folgt angezeigt.

d = df[0:47] #Ich habe die Ergebnisse von Hokkaido nur auf Okinawa eingegrenzt.
#Wenn man sich die Grafik ansieht, scheint es eine gewisse Korrelation zu geben.
plt.xlabel(d.columns[1])
plt.ylabel(d.columns[2])
plt.scatter(d[[1]], d[[2]])
plt.show()

scatter_01.png

Es scheint eine Korrelation zwischen der Wohneigentumsquote und der LDP-Stimmenquote zu bestehen.

Fügen Sie jedem Element des Diagramms Buchstaben hinzu, damit Sie erkennen können, zu welcher Präfektur es gehört.

#Fügen Sie jedem Element Buchstaben hinzu
fig, ax = plt.subplots(figsize=(15,15)) #Wenn die Grafik bis zu einem gewissen Grad nicht groß ist, kann der Name der Präfektur nicht angezeigt werden.
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]Präfekturname, v[1]Ist die private Abstimmungsrate, v[2]Die Wohneigentumsquote ist in enthalten.
plt.show()

scatter_02.png

Auf einen Blick sehen Sie, dass der Anteil der Hausbesitzer in ländlichen Gebieten höher zu sein scheint.

Berechnen Sie den Korrelationskoeffizienten

Pandas können einfach mit der Corr-Methode berechnet werden. Es war so.

d.corr()
LDP-Stimmenquote Eigenheimverhältnis
LDP-Stimmenquote 1.000000 0.638782
Eigenheimverhältnis 0.638782 1.000000

Wie sicher ist der Korrelationskoeffizient?

Ein Test wird durchgeführt, um festzustellen, wie wahrscheinlich der berechnete Korrelationskoeffizient ist. Hier verwenden wir die Fisher-Z-Transformation als Test des Korrelationskoeffizienten. Die z-Konvertierung von Fisher sieht folgendermaßen aus:

Fisher's z Konvertierung

Wenn es eine zweidimensionale Normalbevölkerung gibt und der Bevölkerungskorrelationskoeffizient $ \ rho $ und der Stichprobenkorrelationskoeffizient $ r $ beträgt, $ z=\frac{1}{2}\log\frac{1+r}{1-r} $ $ \eta=\frac{1}{2}\log\frac{1+\rho}{1-\rho} $ Konvertieren zu. Zu diesem Zeitpunkt wird die Stichprobenverteilung von $ z $ zur Normalverteilung $ N (\ eta, 1 / (n-3)) $, wenn die Anzahl der Daten $ n $ groß ist. Daher folgt $ \ sqrt {n-3} (z- \ eta) $ der Standardnormalverteilung $ N (0,1) $.

Ich werde es tatsächlich testen.

i) Nullhypothese: Der Populationskorrelationskoeffizient beträgt 0,0

Setzen Sie $ \ rho = 0.0 $ und berechnen Sie mit Python wie folgt.

n=48 #Die Anzahl der Daten
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

Andererseits wird die Hypothese zurückgewiesen, da $ Z_ {0,025} = 1,96 $, offensichtlich $ Z_ {0,025} <Z $. Daher kann nicht gesagt werden, dass keine Korrelation besteht (Signifikanzniveau 0,05).

i) Nullhypothese: Der Populationskorrelationskoeffizient beträgt 0,5

Wenn Sie es in Python wie i) mit $ \ rho = 0.5 $ schreiben, sieht es so aus.

n=48 #Die Anzahl der Daten
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)

Für das erhaltene $ z = 1,39 $ wird die Nullhypothese nicht von $ Z_ {0,025} = 1,96> 1,39 $ verworfen. Daher kann der Populationskorrelationskoeffizient 0,5 betragen. (Signifikanzniveau 0,05)

Aufgabe

Eigentlich wollte ich die Karte von Japan mit Geopandas malen, aber ich konnte sie nicht auf win10 installieren. Versuchen Sie es erneut, sobald Sie wissen, wie es geht.

cf) Wie finde ich Z der normalen Standardverteilung in Python?

Der Wert von $ Z $, wenn der Bereich der Verteilungsfunktion $ a $ wird, kann durch die folgende Funktion erhalten werden.

stats.norm.ppf(a)

Dieses Mal beträgt das Vorherrschaftsniveau beider Schultern 0,05. Berechnen Sie also wie folgt.

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

$ Z_ {0.025} = 1.96 $ ist bekannt, entspricht aber in etwa dem obigen Ergebnis.

Recommended Posts

Überprüfen Sie beim Lösen der einführenden Statistikübung 12.10, wie Sie ein Streudiagramm in Pandas zeichnen.
[Python] Wie zeichnet man mit Matplotlib ein Streudiagramm?
So überprüfen Sie die Speichergröße einer Variablen in Python
So überprüfen Sie die Speichergröße eines Wörterbuchs in Python
[Python] Wie zeichnet man mit Matplotlib ein Histogramm?
[Pandas] So überprüfen Sie Duplikate in einer Tabelle und löschen Duplikate (entspricht dem Löschen von Duplikaten in Excel)
So überprüfen Sie in Python, ob sich eines der Elemente einer Liste in einer anderen Liste befindet
[Python] So überprüfen Sie, ob der Schlüssel im Wörterbuch vorhanden ist
Anzeigen des regionalen Netzes des Government Statistics Office (eStat) in einem Webbrowser
Kombinieren Sie Listen zu einem DataFrame mit Pandas
So generieren Sie eine Abfrage mit dem IN-Operator in Django
So überprüfen Sie, ob ein Wert in einem Aufzählungstyp vorhanden ist
So erhalten Sie den letzten (letzten) Wert in einer Liste in Python
Darstellung der Verteilung der Bakterienzusammensetzung aus Qiime2-Analysedaten in einem Box-Whisker-Diagramm
[sh] Das Speichern der Befehlsausführung führt zu Variablen
So bestimmen Sie die Existenz eines Selenelements in Python
Ein Hinweis zum Überprüfen der Verbindung zum Lizenzserver-Port
So erhalten Sie alle möglichen Werte in einem regulären Ausdruck
[Einführung in Python] Wie verwende ich den Operator in in der for-Anweisung?
[TensorFlow 2] So überprüfen Sie den Inhalt von Tensor im Diagrammmodus
So ermitteln Sie die Speicheradresse des Pandas-Datenrahmenwerts
<Pandas> Umgang mit Zeitreihendaten in der Pivot-Tabelle
So ermitteln Sie die Scheitelpunktkoordinaten eines Features in ArcPy
So überprüfen Sie die lokale GAE über den iPhone-Browser im selben LAN
So erhalten Sie mit pandas DataFrame einen bestimmten Spaltennamen und Indexnamen
So geben Sie eine .ui-Datei in der Dialog- / Widget-GUI in PySide an
[Python] Wenn Sie ein Streudiagramm mehrerer Cluster zeichnen möchten
Wie man lernt, bis ein Anfänger in Statistik mit der Bayes'schen Statistik beginnt
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
So spielen Sie ein Video ab, während Sie die Anzahl der Bilder ansehen (Mac)
Sortieren durch Angabe einer Spalte im Python Numpy-Array.
So überprüfen Sie die Version von Django
So zeichnen Sie ein Diagramm mit Matplotlib
Wie bekomme ich Stacktrace in Python?
So überprüfen Sie die Version von opencv mit Python
Lesen von CSV-Dateien mit Pandas
So zeichnen Sie ein OpenCV-Bild mit Pygame
So zählen Sie die Anzahl der Elemente in Django und geben sie in die Vorlage aus
Ein Memorandum zur Ausführung des Befehls! Sudo magic in Jupyter Notebook
Das erste, was überprüft werden muss, wenn in Django ein No Reverse Match auftritt
Zeichnen Sie ein Faltlinien- / Streudiagramm mit Python Matplotlib für die CSV-Datei (2 Spalten).
Der erste Schritt zur Protokollanalyse (Formatieren und Einfügen von Protokolldaten in Pandas)
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
So berechnen Sie die Volatilität einer Marke
Verwendung der C-Bibliothek in Python
So löschen Sie einen Taple in einer Liste (Python)
So zeichnen Sie ein 2-Achsen-Diagramm mit Pyplot
Einbetten von Variablen in Python-Strings
So zeichnen Sie vor der Optimierung ein 3D-Diagramm
So erstellen Sie eine JSON-Datei in Python
Zeichnen Sie Diagramme in Julia ... Überlassen Sie die Diagramme Python
So implementieren Sie eine Verlaufsauswahl in Houdini
So benachrichtigen Sie Discord-Kanäle in Python
So erhalten Sie die Dateien im Ordner [Python]
So erstellen Sie eine Rest-API in Django
Wie schreibe ich ein benanntes Tupeldokument im Jahr 2020?
So zählen Sie Zahlen in einem bestimmten Bereich
So lesen Sie Dateien in verschiedenen Verzeichnissen
Wie man eine öffentliche Funktion in Pytest verspottet
Wie man Autokorrelation und partielle Autokorrelation mit Python zeichnet
So legen Sie einen freigegebenen Ordner mit dem Host-Betriebssystem in CentOS7 auf Virtual BOX fest