[PYTHON] [Nichtkorrelationstest] Ich habe versucht, die Grenzlinie mit oder ohne Ablehnung zu löschen

Einführung

Während ich während des Statistikstudiums verschiedene Formeln lernte, konnte ich mich nicht an den ** unkorrelierten Test ** erinnern, also starrte ich auf die Formeln. Und da es etwas gab, auf das ich neugierig war, ließ ich Python das Ergebnis berechnen und zeichnen.

--Umgebung

Nichtkorrelationstest

Es wird geprüft, ob aus dem aus der Stichprobe erhaltenen Korrelationskoeffizienten gesagt werden kann, dass "die Population dieselbe Korrelation aufweist".

Suchen Sie anhand der folgenden Formel die Statistik $ t $ und erhalten Sie den Wert $ p $. Der Freiheitsgrad $ ν $ für die Statistik $ t $ beträgt $ n-2 $.

t = \frac{|r| \sqrt{n - 2}}{\sqrt{1 - r^2}}

Wenn das Signifikanzniveau $ a $ 0,05 beträgt, reicht es aus, den $ p $ -Wert von 0,025 Punkten im zweiseitigen Test zu sehen.


... Ich kann mich nicht an diese Formel erinnern, weil ich sie nicht einfach benutze. Ich dachte jedoch: "Wenn n (Stichprobengröße) groß ist, ist der t-Wert groß, ** schließlich ist es die Stichprobengröße !! **", also habe ich die Stichprobengröße und den Korrelationskoeffizienten aufgerundet und * * Ich habe mir angesehen, inwieweit die Nullhypothese nicht zurückgewiesen werden würde **.

Vorbereitung

#Wird zur Datenerstellung verwendet
import pandas as pd
import numpy as np
import math
from scipy import stats
import itertools

#Wird zum Zeichnen von Grafiken verwendet
import matplotlib.pyplot as plt
import seaborn as sns
from mpl_toolkits.mplot3d import Axes3D


%matplotlib inline


plt.style.use('seaborn-darkgrid')
plt.rcParams['font.family'] = 'Yu Gothic'
plt.rcParams['font.size'] = 20


#Korrelationskoeffizient(coef)Und Stichprobengröße(n)Wenn Sie setzen, t Wert(t),Freiheitsgrad(df), P-Wert(p)Erstellen Sie eine Funktion, die zurückgibt.
def Uncorrelated(coef, n):
    t = (np.abs(coef) * math.sqrt( (n - 2) ) ) / (math.sqrt( ( 1 - (coef**2) ) ) )
    df = (n - 2)
    p = np.round(( 1 - stats.t.cdf(np.abs(t), df) ), 3) #Der p-Wert ist gerundet.
    return coef, n, t, df, p


#Anzahl der Proben von 10 bis 1000 in 10 Schritten
samplesizes = np.arange(10, 1001, 10)

#Korrelationskoeffizient-0.99 bis 0.0 bis 99.01 Schritte
coefficients = np.linspace(-0.99, 0.99, 199)
#print(coefficients)

#Überqueren Sie die beiden oben genannten(Direktes Produkt)
c_s = list(itertools.product(coefficients, samplesizes) )

#Fügen Sie die Liste mit dem Korrelationskoeffizienten und der Stichprobengröße in die Funktion Unkorreliert ein und konvertieren Sie die zurückgegebene Liste in einen DataFrame mit Pandas.
df_prelist = []
for i in range(len(c_s)): 
    df_prelist.append(Uncorrelated(c_s[i][0],c_s[i][1])) 

#Die Vorbereitung ist abgeschlossen
df = pd.DataFrame(df_prelist,columns=['coef','sample_size','t','df','p_value'])

df ist so

df

image.png

df.sample(10)

image.png

Korrelationskoeffizient - Der t-Wert, der Freiheitsgrad und der p-Wert des Nichtkorrelationstests für 0,99 bis 0,99 und die Stichprobengröße 10 bis 1000 sind enthalten.

Diagrammzeichnung

fig = plt.figure( figsize=(16, 12) )
ax = Axes3D(fig)
cm = plt.cm.get_cmap('RdYlBu')
mappable = ax.scatter( np.array(df['coef']), np.array(df['sample_size']), np.array(df['p_value']), c=np.array(df['p_value']), cmap=cm)
fig.colorbar(mappable, ax=ax)
ax.set_xlabel('Korrelationskoeffizient', labelpad=15)
ax.set_ylabel('Stichprobengröße', labelpad=15)
ax.set_zlabel('p-Wert', labelpad=15)
plt.savefig('3D-Grafik.png', bbox_inches='tight', pad_inches=0.3)
plt.show()
3次元グラフ.png

... je näher es an Blau liegt, desto höher ist der p-Wert und es wird nicht zurückgewiesen ... ** Es ist schwer zu verstehen **

Ich habe eine Judge-Spalte erstellt und den DataFrame mit einem p-Wert größer als 0,025 als "H0 nicht ablehnen" neu erstellt.

#p_Wert ist 0.Wenn es 025 oder höher ist`H0 nicht ablehnen`Anziehen
df['judge'] = 'H0 ablehnen'
for index, series in df.query('p_value > 0.025').iterrows():
    df.at[index, 'judge'] = 'H0 nicht ablehnen'


#Grafik neu zeichnen
grid = sns.FacetGrid( df, hue = 'judge', height=10 )
grid.map(plt.scatter, 'coef', 'sample_size')
grid.add_legend(title='Beurteilung')
plt.ylabel('Stichprobengröße')
plt.xlabel('Korrelationskoeffizient')
plt.title('Korrelationskoeffizient x Stichprobengröße Mit oder ohne Ablehnung des Nichtkorrelationstests', size=30)

#Zeichne eine rote Linie
plt.vlines(df[df['judge'] == 'H0 nicht ablehnen']['coef'].max(), -50, 50, color='red', linestyles='dashed')
plt.vlines(df[df['judge'] == 'H0 nicht ablehnen']['coef'].min(), -50, 50, color='red', linestyles='dashed')
plt.annotate('|' + str(df[df['judge'] == 'H0 nicht ablehnen']['coef'].max().round(2) ) + '|Die Außenseite ist n=Wenn es 10 oder mehr ist, lehnen Sie alle ab',
            xy=(df[df['judge'] == 'H0 nicht ablehnen']['coef'].max(), 80), size=15, color='black')
plt.savefig('2D-Grafik.png', bbox_inches='tight', pad_inches=0.3)
plt.show()
2次元グラフ.png

In der Tat wird **, wenn der Korrelationskoeffizient der Stichprobe größer als der Absolutwert von 0,62 ist, die Nullhypothese H0 selbst bei n = 10 verworfen und "der Populationskorrelationskoeffizient ist nicht 0" angenommen ** ($ a =) 0,05 $)!



... Übrigens erinnerte ich mich an den ursprünglichen Zweck des "Lernens der Formel", indem ich diesen Artikel schrieb: upside_down:

Recommended Posts

[Nichtkorrelationstest] Ich habe versucht, die Grenzlinie mit oder ohne Ablehnung zu löschen
Ich habe versucht, die Zugverspätungsinformationen mit LINE Notify zu benachrichtigen
Mayungos Python Learning Episode 2: Ich habe versucht, Zeichen mit Variablen zu löschen
Ich habe versucht, die Daten mit Zwietracht zu speichern
Ich habe versucht, die Literatur des neuen Corona-Virus mit Python automatisch an LINE zu senden
Ich habe versucht, die Sündenfunktion mit Chainer zu trainieren
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Ich habe versucht, Soma Cube mit Python zu lösen
Ich habe versucht, Pytest in die eigentliche Schlacht zu bringen
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
Ich habe untersucht, wie der Arbeitsablauf mit Excel x Python optimiert werden kann
Ich habe untersucht, wie der Arbeitsablauf mit Excel x Python ④ optimiert werden kann
Ich habe versucht herauszufinden, wie der Arbeitsablauf mit Excel x Python optimiert werden kann
Ich habe untersucht, wie der Arbeitsablauf mit Excel x Python optimiert werden kann
Ich habe untersucht, wie der Arbeitsablauf mit Excel x Python optimiert werden kann
Wagen Sie es, das Formular ohne Selen auszufüllen
Ich habe versucht, die Umrisse von Big Gorilla herauszufinden
Ich habe versucht, die Emotionen des gesamten Romans "Wetterkind" zu analysieren
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
Ich habe versucht, den Datenverkehr mit WebSocket in Echtzeit zu beschreiben
Ich habe versucht, die Anfängerausgabe des Ameisenbuchs mit Python zu lösen
Ich habe versucht herauszufinden, wie ich den Arbeitsablauf mit Excel × Python, meiner Artikelzusammenfassung ★, optimieren kann
Ich möchte das Wetter mit LINE bot feat.Heroku + Python wissen
Ich habe versucht, die Bewässerung des Pflanzgefäßes mit Raspberry Pi zu automatisieren
Ich habe versucht, Othello AI mit Tensorflow zu machen, ohne die Theorie des maschinellen Lernens zu verstehen ~ Einführung ~
Ich habe versucht, das Bild mit OpenCV im "Skizzenstil" zu verarbeiten
Ich habe versucht herauszufinden, ob ReDoS mit Python möglich ist
Ich habe am Wochenende versucht, mit Bitcoin Systre zu beginnen
Ich habe versucht, das Bild mit OpenCV im "Bleistift-Zeichenstil" zu verarbeiten
Ich habe versucht, die Größe des logischen Volumes mit LVM zu erweitern
Ich habe versucht, ein Standbild aus dem Video auszuschneiden
Ich habe versucht, die Effizienz der täglichen Arbeit mit Python zu verbessern
Ich habe versucht, den Ball zu bewegen
Ich habe versucht, den Abschnitt zu schätzen.
Ich habe versucht, Othello AI mit Tensorflow zu erstellen, ohne die Theorie des maschinellen Lernens zu verstehen ~ Implementierung ~
Ich habe versucht, Othello AI mit Tensorflow zu erstellen, ohne die Theorie des maschinellen Lernens zu verstehen ~ Battle Edition ~
[Python] Ich habe versucht, die Nacht der Galaxienbahn mit WordCloud zu visualisieren!
Ich versuchte, Trauer und Freude über das Problem der stabilen Ehe auszudrücken.
Ich habe versucht, "Sakurai-san" LINE BOT mit API Gateway + Lambda zu erstellen
Ich habe versucht, den Authentifizierungscode der Qiita-API mit Python abzurufen.
Passende Karaoke-Tasten ~ Ich habe versucht, es auf Laravel zu setzen ~ <auf dem Weg>
Ich habe versucht, die Bewegungen von Wiire-Playern automatisch mit Software zu extrahieren
Ich habe versucht, den Winkel von Sin und Cos mit Chainer zu lernen
Ich habe es mit den Top 100 PyPI-Paketen versucht.> Ich habe versucht, die auf Python installierten Pakete grafisch darzustellen
Ich habe versucht, die Negativität von Nono Morikubo zu analysieren. [Vergleiche mit Posipa]
Ich habe versucht, die Standardrolle neuer Mitarbeiter mit Python zu optimieren
Ich habe versucht, den Text des Romans "Wetterkind" mit Word Cloud zu visualisieren
Ich habe versucht, das Modell mit der Low-Code-Bibliothek für maschinelles Lernen "PyCaret" zu visualisieren.
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen
Ich habe versucht, das Ergebnis des A / B-Tests mit dem Chi-Quadrat-Test zu überprüfen
Ich habe versucht, das Verhalten des neuen Koronavirus mit dem SEIR-Modell vorherzusagen.
Ich habe versucht, die Netzwerkbandbreite und -verzögerung mit dem Befehl tc zu steuern
Ich habe versucht, Autoencoder mit TensorFlow zu implementieren
Ich habe versucht, den Befehl umask zusammenzufassen
Ich habe versucht, AutoEncoder mit TensorFlow zu visualisieren
Ich versuchte das Weckwort zu erkennen
Ich habe versucht, mit Hy anzufangen
Ich habe versucht, das Umfangsverhältnis π probabilistisch abzuschätzen