Statistische Grundlagen und Python, Grafik usw. (Memo)

Derzeit studiere ich Python und Datenanalyse (einschließlich Statistik). Während ich auf dieser Seite studiere, werde ich Notizen zu Statistik und Grafik in Python hinzufügen. Die Beurteilung anhand von Daten ist ein wirksames Instrument, mit dem Beurteilungsfehler verhindert werden können, die durch logisches Denken nicht verhindert werden können. Deshalb habe ich mich aktiv mit dem Thema befasst.

※Hinweis※ Da es während des Studiums geschrieben wird, kann es missverstanden werden. Ich werde es korrigieren, sobald ich es bemerke, aber wenn Sie einen Fehler bemerken, würde ich es begrüßen, wenn Sie darauf hinweisen könnten.

Nachschlagewerke

・ Shinichi Kurihara "Einführung in die Statistik" ・ Wes McKinney, "Einführung in die Datenanalyse mit Python" ・ Anchibe, "Einführung in den praktischen Prozess der Datenanalyse" ・ Bill Lubanovic, "Einführung in Python 3" ・ Yoshinori Fujii et al., "Analyse von Daten, die dem offiziell zertifizierten statistischen Test Level 3 der Japan Statistical Society entsprechen" ・ Geschrieben von Yutaka Tanaka et al. ・ Nanfuhara, "Grundlagen der psychologischen Statistik"

Der Text der beiden statistischen Tests ist enthalten, es wird jedoch empfohlen, dass Sie für den statistischen Test und nicht für den Inhalt des Textes studieren. Obwohl es sich um eine private Qualifikation handelt, denke ich, dass es sich um einen Qualifikationstest handelt, der recht gute Fragen aufwirft. Die statistische Testnote 3 kann übrigens nur mit dem offiziellen Lehrbuch durchgeführt werden. Für die zweite Klasse ist die von Herrn Anchibe empfohlene "Einführung in die Statistik" von Kurihara gut. Das ist alles was Sie brauchen.

Zusammengefasste Statistiken

Probenmittelwert (Dispersion), unverzerrter Mittelwert (Dispersion)

Wenn Sie Statistiken studieren, wird die Varianz durch Teilen durch die Anzahl der Stichproben n oder n-1 berechnet. Wenn Sie diesen Punkt jedoch nicht gut verstehen, ist dies verwirrend.

Unter dem Gesichtspunkt der deskriptiven Statistik, dh wenn versucht wird, die entnommenen Stichproben zusammenzufassen und ihre Eigenschaften als statistische Werte anzuzeigen, drücken Sie sie als Stichprobenmittelwert / Stichprobenvarianz aus und dividieren Sie sie durch die Anzahl der Stichproben n.

Unter dem Gesichtspunkt der spekulativen Statistik übernehmen wir die wünschenswerte Eigenschaft der Unparteilichkeit, dh die Eigenschaft, dass der erwartete Wert des geschätzten Betrags mit dem wahren Wert der zu schätzenden Bevölkerung übereinstimmt. Erstens wird der Stichprobenmittelwert, da er so unparteiisch ist, auch vom Standpunkt der spekulativen Statistik aus übernommen. Bei der Schätzung der Varianz unter dem Gesichtspunkt der Inferenzstatistik wird die Anzahl der Stichproben n- unter Berücksichtigung des Ergebnisses der Berücksichtigung des Fehlers beim Abrufen der Stichprobe und die Tendenz berücksichtigt, dass die Stichprobenvarianz ein kleinerer Wert als die wahre Varianz wird. Es wird durch 1 geteilt.

(Arithmetik) Mittelwert und Median

Wenn es Ausreißer gibt oder wenn die Daten verzerrt sind, kann man sie sich leicht als Medianwert vorstellen (glaube ich), aber der Durchschnittswert ist der minimale quadratische Wert der "Entfernung" von einem bestimmten Punkt zu den einzelnen Daten. Der Medianwert ist die Statistik, die den absoluten Wert (nicht das Quadrat) der Entfernung minimiert. Es ist ein Wert, der verschiedene Kriterien optimiert, daher kann ich nicht einfach sagen, welches für mich richtig ist. Wenn sich der Mittelwert und der Median signifikant unterscheiden, wird empfohlen, beide Werte anzuzeigen.

Wenn sich die Werte in Abhängigkeit von der Form der Datenverteilung stark unterscheiden, ist es möglicherweise besser, auch das Histogramm darzustellen.

Standardisierte Variationen und Abweichungen

Die standardisierte Variable ist der Wert, der durch z_i = (x_i-μ) / σ berechnet wird, wenn der Durchschnitt μ (der Population) und die Standardabweichung σ (der Population) aus den Daten (multiplen) Daten x_i berechnet werden. ..

Sie möchten, dass der Durchschnitt Null und die Abweichung 1 ist. Die statistischen Teststufen 3 und 2 (und echte Probleme) können die mathematischen und naturwissenschaftlichen Noten von Schüler A vergleichen. Die durchschnittliche Punktzahl und Streuung unterscheiden sich jedoch je nach Thema. Da es schwierig ist, es so zu vergleichen, werden wir die standardisierte Variable berechnen.

Da es standardisiert ist, ist es möglich, die Noten verschiedener Fächer nur anhand der Größe des Wertes zu vergleichen. Der Abweichungswert ist übrigens der Wert, der durch Multiplizieren dieser standardisierten Variable mit 10 und Addieren von 50 erhalten wird.

y=ax+Wenn die Daten in b konvertiert werden, ist der Durchschnittswert aE[x]+b ist die Abweichung|a|Da es verdoppelt wird, bedeutet der Abweichungswert, dass der Durchschnittswert 50 Punkte und der Abweichungswert 10 Punkte unter Verwendung der standardisierten Variablen beträgt. Wenn ich so denke, fällt es mir leicht, mich an den Abweichungswert zu erinnern. Auch im statistischen Test wird davon ausgegangen, dass Sie ihn auswendig gelernt haben.

Schwankungskoeffizient

Es ist schwierig, die Varianzen von Verteilungen mit unterschiedlichen Mittelwerten zu vergleichen. Daher wird der Fluktuationskoeffizient durch (Abweichung) / (Durchschnitt) berechnet. Es absorbiert die Differenz zwischen den Durchschnittswerten und erleichtert den Vergleich der Streuwerte. Es ist notwendig, sich daran zu erinnern, da es bereits in der dritten Klasse des statistischen Tests erhalten werden kann. Die Berechnung ist einfach, daher denke ich, dass sie im wirklichen Leben verwendet werden kann.

Wenn Sie sich nur an den Wortschwankungskoeffizienten erinnern, können Sie verwirrt sein, ob der Durchschnittswert der Nenner oder das Molekül war. Wenn Sie sich daher daran erinnern, dass "der Fluktuationskoeffizient ein Wert ist, wenn Sie die Variation der Werte sowie die Dispersion berücksichtigen", ist es leicht zu merken, dass die Abweichung im Molekül und der Durchschnittswert im Nenner liegt. Ich denke, Sie müssen vorsichtig sein, um nicht mit der standardisierten Variable verwechselt zu werden, wenn Sie den Mittelwert in Null und die Standardabweichung in Eins umwandeln.

Erstens, wenn der Durchschnitt von x E [x] und die Varianz V [x] ist, dann ist y = ax + b, E[y]=aE[x]+b、V[y]=|a|^2 *E[x] ist.

Erstellen Sie mithilfe dieser Beziehung zwei Datentypen, berechnen Sie den Fluktuationskoeffizienten für Daten mit ähnlichen Abweichungen, obwohl die Skalen unterschiedlich sind, und versuchen Sie Folgendes, um ähnliche Werte zu erhalten. Ich tat.

import numpy as np
import matplotlib.pyplot as plt


def main():
    sample_size = 1000
    a = 10
    b = 5

    data = np.random.standard_normal(sample_size)+1
    data2 = a*data+b

    print('data Mean:{} Var:{}'.format(np.mean(data), np.var(data)))
    print('data2 Mean:{} Var:{}'.format(np.mean(data2), np.var(data2)))

    print('coefficient of var {} : {}'.format(np.std(data)/np.mean(data), np.std(data2)/np.mean(data2)))

    plt.subplot(2, 1, 1)
    plt.hist(data)

    plt.subplot(2, 1, 2)
    plt.hist(data2)
    plt.show()


if __name__ == "__main__":
    main()

Umwandlung stochastischer Variablen mit y = ax + b

Durchschnitt μ,Dispersion σ^Zur Wahrscheinlichkeitsvariablen x von 2 gilt ax+Wenn b konvertiert wird, ist der Durchschnitt aμ+b,Dispersion|a|^Wenn Sie die Beziehung verwenden, die zu 2 wird, Wenn Sie eine Zufallszahl nach N (0,1) mit randn von numpy erzeugen möchten, möchten Sie eine Zufallszahl nach einer Normalverteilung mit dem Mittelwert μ und der Varianz σ ^ 2 erzeugen. σrandn() + μ Ich weiß was zu tun ist. numpy site: http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.randn.html Es ist auch geschrieben.

Verzerrung und Schärfe

Der Wert, der die Asymmetrie der statistischen Verteilung darstellt, ist der Grad der Verzerrung. Null steht für Links-Rechts-Symmetrie, und wenn sie positiv wird, zeigt dies an, dass sich die Verteilung nach oben erstreckt. Wenn es negativ ist, ist das Gegenteil der Fall. Es gibt eine Funktion zum Berechnen in scipy und natürlich in Excel. ※scipy http://docs.scipy.org/doc/scipy-0.15.1/reference/generated/scipy.stats.skew.html

In der Praxis kann damit nach Ausreißern gesucht werden. Wenn beispielsweise ein großer positiver Wert vorliegt, zeigt dies an, dass in positiver Richtung ein großer Abweichungswert vorliegt. Ausreißer haben einige Auswirkungen auf die Zusammenfassung statistischer Daten (obwohl das Ausmaß der Auswirkungen unterschiedlich ist) und müssen auf irgendeine Weise behandelt werden. Es ist ein Wert, der verwendet werden kann, wenn die Notwendigkeit berücksichtigt wird. Bei der manuellen Verarbeitung können Sie die Ausreißer durch Zeichnen eines Histogramms oder eines Streudiagramms erkennen. Dies ist jedoch hilfreich, wenn Sie die Verarbeitung entsprechend den Ausreißern im Programm ändern möchten. Ich werde.

Die Schärfe ist ein Wert, der angibt, wie scharf die Verteilung ist, an die Sie denken, im Vergleich zur Normalverteilung. Sie können mit KURT rechnen.

Wenn Sie sich die statistischen Quellen ansehen, sehen Sie möglicherweise SKEW und KURT, die jedoch Verzerrungen und Schärfen unterliegen. Lesen Sie beispielsweise die Daten von dirty_iris.csv (bei Google suchen und die Github-Seite sehen) aus Anchibes Buch, einschließlich Ausreißern, und berechnen Sie die Statistiken und Verzerrungen wie folgt: Ich werde versuchen.

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

def main():
    iris = pd.read_csv('./dirty_iris.csv')

    print(iris.head(n=5))
    print(iris.describe())
    print(iris.skew())

if __name__ == "__main__":
    main()

.txt


   sepallength  sepalwidth  petallength petalwidth   class
0          5.1         3.5          1.4        0.2  setosa
1          4.9         3.0          1.4        0.2  setosa
2          4.7         3.2          1.3        0.2  setosa
3          4.6         3.1          1.5        0.2  setosa
4          5.0         3.6          1.4        0.2  setosa
       sepallength  sepalwidth  petallength
count   150.000000  150.000000   150.000000
mean      6.464000    3.040667     3.738000
std       7.651181    0.578136     1.763221
min       4.300000   -1.000000     1.000000
25%       5.100000    2.800000     1.600000
50%       5.800000    3.000000     4.300000
75%       6.400000    3.300000     5.100000
max      99.000000    5.400000     6.900000
sepallength    12.030413
sepalwidth     -1.681226
petallength    -0.248723
dtype: float64

Übrigens merke ich irgendwie, dass die Kelchblattlänge nur durch Beschreibung verdächtig ist, aber selbst mit dem Wert, der durch Schrägstellung angegeben wird, kann ich sehen, dass die Kelchblattlänge im Vergleich zu anderen verdächtig ist.

Für Ausreißer geht es nicht nur darum, sie auszuschließen, sondern darüber nachzudenken, wie mit ihnen umgegangen werden soll, indem Domänenwissen (Kenntnisse des zu analysierenden Bereichs wie Geschäftswissen und Fachwissen) verwendet wird, um festzustellen, warum der Wert in den Daten enthalten ist. Es ist notwendig, aber dieses Mal habe ich beschlossen, NaN angemessen zu verwenden

  iris[np.abs(iris['sepallength'])>10] = np.nan
    iris.boxplot(by='class')
    plt.show()

Dann wurde es eine schöne Box Bartfigur.

Statistische Verteilung

Poisson-Verteilung

Die Poisson-Verteilung ist eine statistische Verteilung zur Analyse seltener Ereignisse. Wenn der Mittelwert = (Dispersion =) λ ist Der Punkt ist, dass λ = (Anzahl der Versuche n) × (Wahrscheinlichkeit p). Für das Ereignis, das in p auftritt, kann der Wert der Wahrscheinlichkeit erhalten werden, indem angegeben wird, wie oft x tatsächlich auftritt.

Die Einstellung von n, p, x kann je nach Interpretation des Problems unterschiedlich sein. Wenn Sie jedoch die Poisson-Verteilungsformel verwenden, kann dieselbe Formel zur Berechnung der gleichen Wahrscheinlichkeit verwendet werden, auch wenn die Interpretation unterschiedlich ist. Seien Sie also besorgt. Das musst du nicht.

Da unterschiedliche Werte erhalten werden, abhängig davon, wie oft x tatsächlich auftritt, beispielsweise wenn die Wahrscheinlichkeit von k-mal oder weniger ermittelt wird, ist es erforderlich, die Berechnung mehrere Male zu wiederholen. Mit einem Programm ist es jedoch einfach, und die Häufigkeit, mit der die Summe der Wahrscheinlichkeiten einen bestimmten Wert erreicht, kann mit scipy berechnet werden. Es scheint also nicht viel zu bedeuten.

Es ist hilfreich, scipy zu verwenden http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.poisson.html

Auf der obigen Seite war ich daran interessiert, wie man ein Diagramm mit dünnen vertikalen Balken zeichnet, daher werde ich es zitieren und erklären.

>>> ax.plot(x, poisson.pmf(x, mu), 'bo', ms=8, label='poisson pmf')
>>> ax.vlines(x, 0, poisson.pmf(x, mu), colors='b', lw=5, alpha=0.5)

Zeichnen Sie zuerst den Wert mit einem blauen Kreis mit 'bo' und dann eine vertikale Linie mit ax.vlines. x ist die Position der vertikalen Linie, 0 ist das untere Ende der vertikalen Linie und poisson.pmf (x, mu) gibt das obere Ende der vertikalen Linie an. lw wäre eine Abkürzung für Linienbreite. Alpha gibt die Transparenz der Linie an. Verwenden Sie plt.xlim (), um den Bereich auf der horizontalen Achse anzugeben, damit das Diagramm besser sichtbar ist.

PMph ist übrigens eine Abkürzung für Probability Mass Function. Für kontinuierliche Werte ist es die Wahrscheinlichkeitsdichtefunktion (PDF), für diskrete Werte wie die Poisson-Verteilung ist es PMF.

Visualisierungsmethode

Box Whisker (Boxplot)

Die Datenvisualisierung ist wichtig für die explorative Datenanalyse. Es ist jedoch eine gute Idee, die Box-Whisker zusätzlich zu den häufig verwendeten Streudiagrammen und Histogrammen zu kennen. Es werden Kenntnisse auch in der dritten Klasse der Statistik erforderlich sein. Geeignet zum Vergleichen der Verteilung mehrerer Daten.

Informationen wie die Anzahl der Peaks, die beim Zeichnen eines Histogramms sichtbar sind, verschwinden, aber es gibt auch einen Geigenplot, der dem entspricht, aber es ist ein etwas raues Design.

Die Methode zum Ausdrücken der Ausreißer ist ein kleiner Punkt, und es scheint, dass Werte, die mehr als das 1,5-fache des (dritten Quadranten) - (ersten Quadranten) betragen und weit von jedem Wert entfernt sind, häufig als Ausreißer festgelegt werden. Die Definition von Ausreißern sollte sich abhängig von den zu verarbeitenden Daten ändern, und ich denke, dass die Standardeinstellungen hier möglicherweise nicht verwendet werden.

Wenn es nur einen Berg gibt, können Sie sich grob ein Histogramm aus der Form der Box-Whisker vorstellen, sodass die Box-Whisker zum Vergleich nützlich sind, wenn mehrere solcher Daten vorhanden sind. Eine ekelhafte Geigenhandlung ist jedoch in Ordnung. Sie können mit Python zeichnen.

boxplot.JPG

Recommended Posts

Statistische Grundlagen und Python, Grafik usw. (Memo)
Twitter-Grafiknotiz mit Python
Python und Ruby Slice Memo
Python-Grundlagen: Bedingungen und Iterationen
Unterschied zwischen Java und Python (Memo)
Python-Memo ① Ordner- und Dateivorgänge
Python-Grundlagen ⑤
Python-Grundlagen
Python-Memo
Python-Grundlagen ④
Python-Memo
[Python] df Lies und mache das erste Memo (NaN-Bestätigung usw.)
Python-Memo
Python-Grundlagen ③
Python-Grundlagen
Python-Memo
Python-Memo
Python-Grundlagen
Python-Grundlagen
Python-Grundlagen ③
Python-Grundlagen ②
Python-Grundlagen ②
Python-Memo
[Einführung in Data Scientists] Grundlagen von Python ♬ Funktionen und anonyme Funktionen usw.
[Lernnotiz] Grundlagen des Unterrichts mit Python
Ein Memo mit Python2.7 und Python3 in CentOS
Japans einfachstes Python-Memo (Dialogfeld usw.)
Struktur und Betrieb der Python-Daten (Python-Lernnotiz ③)
Python-Grundlagen: Liste
Python-Grundmemorandum
Python-Anfänger-Memo (9.2-10)
Python-Anfänger-Memo (9.1)
# Python-Grundlagen (#matplotlib)
Python CGI-Grundlagen
Python-Grundlagen: Wörterbuch
[Python] Konvertierungsnotiz zwischen Zeitdaten und numerischen Daten
Python-Grundlagen ①
★ Memo ★ Python Iroha
Grundlagen von Python ①
Python Slice Grundlagen
# Python-Grundlagen (Umfang)
[Python] Kapitel 02-01 Grundlagen von Python-Programmen (Operationen und Variablen)
# Python-Grundlagen (#Numpy 1/2)
[Python] EDA-Memo
# Python-Grundlagen (#Numpy 2/2)
Python 3-Operator-Memo
# Python-Grundlagen (Funktionen)
Grundlagen des Python-Arrays
[Mein Memo] Python
Python3-Metaklassen-Memo
Lesen und Schreiben passt Dateien mit Python (Memo)
Grundlagen der Python-Profilerstellung
[Python] Grundkarten-Memo
Python #Numpy Basics
Python-Grundlagen: Funktionen
Python-Anfänger-Memo (2)
# Python-Grundlagen (Klasse)
Zusammenfassung der Python-Grundlagen
[Python] Numpy Memo