Datenanalyse: Einfache Anwendung deskriptiver Statistiken und Schätzungsstatistiken auf CSV-Daten in Python

Einführung

Beschreibende Statistiken und Schätzungsstatistiken werden häufig in der Datenanalyse verwendet, um die Daten zu verstehen, bevor ein Modell für maschinelles Lernen erstellt wird. Dieses Mal habe ich, um die Daten zu verstehen, die CSV-Daten mit dem Datenrahmen von Pandas gelesen und den Quellcode erstellt, um einfach beschreibende Statistiken und Schätzungsstatistiken anzuwenden.

Vorbereitungsdaten

Erstellen Sie CSV-Daten als Eingabe. Die zum Erstellen des Quellcodes verwendeten Daten werden unten angezeigt.

x1,x2,x3,x4,x5
1,11,1,1,1
2,12,1,1,2
3,13,1,1,3
4,14,1,1,4
5,150,1,1,5
5,150,1,1,5
4,160,1,1,4
3,180,1,1,3
2,180,1,1,2
1,190,2,2,2

Quellcode

Der modularisierte Quellcode wird unten gezeigt.

class StatisticalTests():
    def __init__(self):
        pass

    @classmethod
    def basic_info(cls, df):
        print('Grundlegende Statistiken------------------start')
        print('df.head(3)-------------')
        print(df.head(3))
        print('df.dtypes-------------')
        print(df.dtypes)
        print('df.describe(include=\'all\')-------------')
        print(df.describe(include='all'))

    @classmethod
    def t_interval(cls, df):
        print('Bevölkerungsdurchschnitt 95%Konfidenzintervall-------------------start')
        for column_name, s in df.iteritems():
            u2 = s.var(ddof=1)  #Populationsvarianzschätzung (unvoreingenommene Varianz)
            m = s.mean()  #Stichprobenmittelwert
            n = len(s)-1  #Freiheitsgrad
            se = math.sqrt(u2/len(s))  #Standart Fehler

            ci1, ci2 = st.t.interval(alpha=0.95, loc=m, scale=se, df=n)
            print(f'Spaltenname= {column_name} //Bevölkerungsdurchschnitt 95%Konfidenzintervall CI= '
                  f'[{ci1:.2f} , {ci2:.2f}] //Stichprobenmittelwert[{m}]')

    @classmethod
    def shapiro(cls, df):
        print('Shapiro Wilk Test(Test der Normalität)------------------start')
        for column_name, s in df.iteritems():
            _, p = st.shapiro(s)
            if p >= 0.05:
                print(f'Spaltenname= {column_name} //p-Wert= {p:.3f} '
                      f'//Testergebnis:Bei Annahme der Nullhypothese kann nicht gesagt werden, dass es keine Normalität gibt')
            else:
                print(f'Spaltenname= {column_name} //p-Wert= {p:.3f} '
                      f'//Testergebnis:Ablehnung der Nullhypothese, keine Normalität')

    @classmethod
    def levene(cls, xa, xb):
        print('Zwischen 2 Gruppen:Bevölkerungsdurchschnitt 95%Test der Isodispersität durch Rubean-Test-------------------start')
        _, p = st.levene(xa, xb, center='mean')
        if p >= 0.05:
            print(f'p-Wert= {p:.3f} //Testergebnis:Bei Annahme der Nullhypothese kann nicht gesagt werden, dass die beiden Stichproben nicht gleich weit voneinander entfernt sind.')
        else:
            print(f'p-Wert= {p:.3f} //Testergebnis:Wenn Sie die Nullhypothese ablehnen, sind die beiden Stichproben nicht äquidistant')

    @classmethod
    def ttest_rel(cls, xa, xb):
        print('Zwischen 2 Gruppen:Entsprechender t-Test-------------------start')
        #Die Nullhypothese lautet, dass es keinen signifikanten Unterschied zwischen den Mittelwerten der beiden Proben gibt.
        #Wenn es eine Antwort gibt, überprüfen Sie vor und nach der Verabreichung des Arzneimittels dieselbe Person wie Herr A und Herr B.
        t, p = st.ttest_rel(xa, xb)
        if np.sign(t) == -1:
            a = xa
            xa = xb
            xb = a

        t, p = st.ttest_rel(xa, xb)
        mu = abs(xa.mean()-xb.mean())
        se = mu/t
        n = len(xa)+len(xb)-2
        ci1, ci2 = st.t.interval(alpha=0.95, loc=mu, scale=se, df=n)
        if p >= 0.05:
            print(f'p-Wert={p:.3f} //t Wert= {t:.2f}')
            print(f'//Differenz im Durchschnittswert= {mu:.2f} //Standardfehler der Differenz= {se:.2f}')
            print(f'//95 der durchschnittlichen Differenz%Konfidenzintervall CI= [{ci1:.2f} , {ci2:.2f}]')
            print('//Testergebnis:Bei Annahme der Nullhypothese kann nicht gesagt werden, dass zwischen den Durchschnittswerten der beiden Stichproben ein signifikanter Unterschied besteht.')
        else:
            print(f'p-Wert={p:.3f} //t Wert= {t:.2f}')
            print(f'//Differenz im Durchschnittswert= {mu:.2f} //Standardfehler der Differenz= {se:.2f}')
            print(f'//95 der durchschnittlichen Differenz%Konfidenzintervall CI= [{ci1:.2f} , {ci2:.2f}]')
            print(f'//Testergebnis:Wenn man die Nullhypothese ablehnt, gibt es einen signifikanten Unterschied im Mittelwert der beiden Stichproben')

    @classmethod
    def ttest_ind_equal_var_true(cls, xa, xb):
        print('Zwischen 2 Gruppen:Keine Unterstützung(Zwischen 2 Gruppenに等分散性あり)t testen-------------------start')
        #Die Nullhypothese lautet, dass es keinen signifikanten Unterschied zwischen den Mittelwerten der beiden Proben gibt.
        #Überprüfen Sie ohne Korrespondenz nicht dieselbe Person vor und nach der Verabreichung des Arzneimittels wie Herr A und Herr B.
        t, p = st.ttest_ind(xa, xb, equal_var=True)
        if np.sign(t) == -1:
            a = xa
            xa = xb
            xb = a

        t, p = st.ttest_ind(xa, xb, equal_var=True)
        cls._ttest_ind(t, p, xa, xb)

    @classmethod
    def ttest_ind_equal_var_false(cls, xa, xb):
        print('Zwischen 2 Gruppen:Keine Unterstützung(Zwischen 2 Gruppenに等分散性なし)t testen-------------------start')
        #Die Nullhypothese lautet, dass es keinen signifikanten Unterschied zwischen den Mittelwerten der beiden Proben gibt.
        #Überprüfen Sie ohne Korrespondenz nicht dieselbe Person vor und nach der Verabreichung des Arzneimittels wie Herr A und Herr B.
        t, p = st.ttest_ind(xa, xb, equal_var=False)
        if np.sign(t) == -1:
            a = xa
            xa = xb
            xb = a

        t, p = st.ttest_ind(xa, xb, equal_var=False)
        cls._ttest_ind(t, p, xa, xb)

    @classmethod
    def _ttest_ind(cls, t, p, xa, xb):
        mu = abs(xa.mean()-xb.mean())
        se = mu/t
        n = len(xa)+len(xb)-2
        ci1, ci2 = st.t.interval(alpha=0.95, loc=mu, scale=se, df=n)
        if p >= 0.05:
            print(f'p-Wert={p:.3f} //t Wert= {t:.2f}')
            print(f'//Differenz im Durchschnittswert= {mu:.2f} //Standardfehler der Differenz= {se:.2f}')
            print(f'//95 der durchschnittlichen Differenz%Konfidenzintervall CI= [{ci1:.2f} , {ci2:.2f}]')
            print('//Testergebnis:Bei Annahme der Nullhypothese kann nicht gesagt werden, dass zwischen den Durchschnittswerten der beiden Stichproben ein signifikanter Unterschied besteht.')
        else:
            print(f'p-Wert={p:.3f} //t Wert= {t:.2f}')
            print(f'//Differenz im Durchschnittswert= {mu:.2f} //Standardfehler der Differenz= {se:.2f}')
            print(f'//95 der durchschnittlichen Differenz%Konfidenzintervall CI= [{ci1:.2f} , {ci2:.2f}]')
            print(f'//Testergebnis:Wenn man die Nullhypothese ablehnt, gibt es einen signifikanten Unterschied im Mittelwert der beiden Stichproben')

    @classmethod
    def chisquare(cls, sample, answer):
        print('Eignungsprüfung-------------------start')
        #Oppositionshypothese: Die erhaltenen Daten passen nicht zur theoretischen Verteilung.
        sample = sample.tolist()
        answer = answer.tolist()

        p = st.chisquare(sample, f_exp=answer)[1]
        if p >= 0.05:
            print(f'p-Wert= {p:.3f} //Testergebnis:Es kann nicht geschlossen werden, dass die Nullhypothese nicht zur theoretischen Verteilung passt.')
        else:
            print(f'p-Wert= {p:.3f} //Testergebnis:Wir lehnen die Nullhypothese ab und schließen daraus, dass sie nicht zur theoretischen Verteilung passt.')

    @classmethod
    def chi2_contingency(cls, df):
        print('Test der Unabhängigkeit-------------------start')
        # Usage)
        #Anzahl der Krebsarten Anzahl der Nichtkrebsarten
        #Rauchergruppe 30 70
        #Nichtrauchergruppe 20 80
        # print(st.chi2_contingency(x))
        p = st.chi2_contingency(df.values)[1]
        if p >= 0.05:
            print(f'p-Wert= {p:.3f} //Testergebnis:Wenn wir die Nullhypothese annehmen, können wir nicht schließen, dass die beiden Variablen nicht unabhängig sind.')
        else:
            print(f'p-Wert= {p:.3f} //Testergebnis:Wir lehnen die Nullhypothese ab und schließen daraus, dass die beiden Variablen nicht unabhängig sind.')

    @classmethod
    def pearsonr(cls, xa, xb):
        print('Korrelationskoeffiziententest-------------------start')
        #Machen Sie eine Nullhypothese und eine alternative Hypothese:Die Nullhypothese ist ρ=0, dh Populationskorrelation=0
        #Die alternative Hypothese lautet "ρ ≠ 0", dh Populationskorrelation ≠ 0
        x1 = xa.values
        x2 = xb.values
        s = st.pearsonr(x1, x2)
        if s[1] >= 0.05:
            print(f'Korrelationskoeffizient= {s[0]:.3f} //p-Wert= {s[1]:.3f} //Testergebnis:Nehmen Sie die Nullhypothese an. Es kann nicht gesagt werden, dass es eine Korrelation gibt.')
        else:
            print(f'Korrelationskoeffizient= {s[0]:.3f} //p-Wert= {s[1]:.3f} //Testergebnis:Lehnen Sie die Nullhypothese ab. Es besteht eine Korrelation.')

Ausführungsergebnis

Ein Ausführungsbeispiel des obigen modularisierten Quellcodes ist unten gezeigt. Sie können sehen, dass Sie die CSV-Daten verstehen können.

Grundlegende Statistiken------------------start
df.head(3)-------------
   x1  x2  x3  x4  x5
0   1  11   1   1   1
1   2  12   1   1   2
2   3  13   1   1   3
df.dtypes-------------
x1    int64
x2    int64
x3    int64
x4    int64
x5    int64
dtype: object
df.describe(include='all')-------------
              x1          x2         x3         x4        x5
count  10.000000   10.000000  10.000000  10.000000  10.00000
mean    3.000000  106.000000   1.100000   1.100000   3.10000
std     1.490712   81.493013   0.316228   0.316228   1.37032
min     1.000000   11.000000   1.000000   1.000000   1.00000
25%     2.000000   13.250000   1.000000   1.000000   2.00000
50%     3.000000  150.000000   1.000000   1.000000   3.00000
75%     4.000000  175.000000   1.000000   1.000000   4.00000
max     5.000000  190.000000   2.000000   2.000000   5.00000
Bevölkerungsdurchschnitt 95%Konfidenzintervall-------------------start
Spaltenname= x1 //Bevölkerungsdurchschnitt 95%Konfidenzintervall CI= [1.93 , 4.07] //Stichprobenmittelwert[3.0]
Spaltenname= x2 //Bevölkerungsdurchschnitt 95%Konfidenzintervall CI= [47.70 , 164.30] //Stichprobenmittelwert[106.0]
Spaltenname= x3 //Bevölkerungsdurchschnitt 95%Konfidenzintervall CI= [0.87 , 1.33] //Stichprobenmittelwert[1.1]
Spaltenname= x4 //Bevölkerungsdurchschnitt 95%Konfidenzintervall CI= [0.87 , 1.33] //Stichprobenmittelwert[1.1]
Spaltenname= x5 //Bevölkerungsdurchschnitt 95%Konfidenzintervall CI= [2.12 , 4.08] //Stichprobenmittelwert[3.1]
Shapiro Wilk Test(Test der Normalität)------------------start
Spaltenname= x1 //p-Wert= 0.341 //Testergebnis:Bei Annahme der Nullhypothese kann nicht gesagt werden, dass es keine Normalität gibt
Spaltenname= x2 //p-Wert= 0.004 //Testergebnis:Ablehnung der Nullhypothese, keine Normalität
Spaltenname= x3 //p-Wert= 0.000 //Testergebnis:Ablehnung der Nullhypothese, keine Normalität
Spaltenname= x4 //p-Wert= 0.000 //Testergebnis:Ablehnung der Nullhypothese, keine Normalität
Spaltenname= x5 //p-Wert= 0.410 //Testergebnis:Bei Annahme der Nullhypothese kann nicht gesagt werden, dass es keine Normalität gibt
Zwischen 2 Gruppen:Bevölkerungsdurchschnitt 95%Test der Isodispersität durch Rubean-Test-------------------start
p-Wert= 0.000 //Testergebnis:Wenn Sie die Nullhypothese ablehnen, sind die beiden Stichproben nicht äquidistant
Zwischen 2 Gruppen:Bevölkerungsdurchschnitt 95%Test der Isodispersität durch Rubean-Test-------------------start
p-Wert= 0.813 //Testergebnis:Bei Annahme der Nullhypothese kann nicht gesagt werden, dass die beiden Stichproben nicht gleich weit voneinander entfernt sind.
Zwischen 2 Gruppen:Entsprechender t-Test-------------------start
p-Wert=0.003 //t Wert= 4.01
//Differenz im Durchschnittswert= 103.00 //Standardfehler der Differenz= 25.70
//95 der durchschnittlichen Differenz%Konfidenzintervall CI= [49.01 , 156.99]
//Testergebnis:Wenn man die Nullhypothese ablehnt, gibt es einen signifikanten Unterschied im Mittelwert der beiden Stichproben
Zwischen 2 Gruppen:Entsprechender t-Test-------------------start
p-Wert=0.343 //t Wert= 1.00
//Differenz im Durchschnittswert= 0.10 //Standardfehler der Differenz= 0.10
//95 der durchschnittlichen Differenz%Konfidenzintervall CI= [-0.11 , 0.31]
//Testergebnis:Bei Annahme der Nullhypothese kann nicht gesagt werden, dass zwischen den Durchschnittswerten der beiden Stichproben ein signifikanter Unterschied besteht.
Zwischen 2 Gruppen:Keine Unterstützung(Zwischen 2 Gruppenに等分散性あり)t testen-------------------start
p-Wert=0.001 //t Wert= 4.00
//Differenz im Durchschnittswert= 103.00 //Standardfehler der Differenz= 25.77
//95 der durchschnittlichen Differenz%Konfidenzintervall CI= [48.85 , 157.15]
//Testergebnis:Wenn man die Nullhypothese ablehnt, gibt es einen signifikanten Unterschied im Mittelwert der beiden Stichproben
Zwischen 2 Gruppen:Keine Unterstützung(Zwischen 2 Gruppenに等分散性あり)t testen-------------------start
p-Wert=0.878 //t Wert= 0.16
//Differenz im Durchschnittswert= 0.10 //Standardfehler der Differenz= 0.64
//95 der durchschnittlichen Differenz%Konfidenzintervall CI= [-1.25 , 1.45]
//Testergebnis:Bei Annahme der Nullhypothese kann nicht gesagt werden, dass zwischen den Durchschnittswerten der beiden Stichproben ein signifikanter Unterschied besteht.
Zwischen 2 Gruppen:Keine Unterstützung(Zwischen 2 Gruppenに等分散性なし)t testen-------------------start
p-Wert=0.003 //t Wert= 4.00
//Differenz im Durchschnittswert= 103.00 //Standardfehler der Differenz= 25.77
//95 der durchschnittlichen Differenz%Konfidenzintervall CI= [48.85 , 157.15]
//Testergebnis:Wenn man die Nullhypothese ablehnt, gibt es einen signifikanten Unterschied im Mittelwert der beiden Stichproben
Zwischen 2 Gruppen:Keine Unterstützung(Zwischen 2 Gruppenに等分散性なし)t testen-------------------start
p-Wert=0.878 //t Wert= 0.16
//Differenz im Durchschnittswert= 0.10 //Standardfehler der Differenz= 0.64
//95 der durchschnittlichen Differenz%Konfidenzintervall CI= [-1.25 , 1.45]
//Testergebnis:Bei Annahme der Nullhypothese kann nicht gesagt werden, dass zwischen den Durchschnittswerten der beiden Stichproben ein signifikanter Unterschied besteht.
Eignungsprüfung-------------------start
p-Wert= 0.000 //Testergebnis:Wir lehnen die Nullhypothese ab und schließen daraus, dass sie nicht zur theoretischen Verteilung passt.
Eignungsprüfung-------------------start
p-Wert= 1.000 //Testergebnis:Es kann nicht geschlossen werden, dass die Nullhypothese nicht zur theoretischen Verteilung passt.
Test der Unabhängigkeit-------------------start
p-Wert= 0.142 //Testergebnis:Wenn wir die Nullhypothese annehmen, können wir nicht schließen, dass die beiden Variablen nicht unabhängig sind.
Test der Unabhängigkeit-------------------start
p-Wert= 0.000 //Testergebnis:Wir lehnen die Nullhypothese ab und schließen daraus, dass die beiden Variablen nicht unabhängig sind.
Test der Unabhängigkeit-------------------start
p-Wert= 1.000 //Testergebnis:Wenn wir die Nullhypothese annehmen, können wir nicht schließen, dass die beiden Variablen nicht unabhängig sind.
Korrelationskoeffiziententest-------------------start
Korrelationskoeffizient= 0.165 //p-Wert= 0.649 //Testergebnis:Nehmen Sie die Nullhypothese an. Es kann nicht gesagt werden, dass es eine Korrelation gibt.
Korrelationskoeffiziententest-------------------start
Korrelationskoeffizient= 0.979 //p-Wert= 0.000 //Testergebnis:Lehnen Sie die Nullhypothese ab. Es besteht eine Korrelation.

Zusammenfassung

Referenz

Recommended Posts

Datenanalyse: Einfache Anwendung deskriptiver Statistiken und Schätzungsstatistiken auf CSV-Daten in Python
Zeichnen Sie Daten einfach in Shell und Python
[Python] Von der morphologischen Analyse von CSV-Daten bis zur CSV-Ausgabe und Diagrammanzeige [GiNZA]
[Python] So benennen Sie Tabellendaten und geben sie mit csv aus (to_csv-Methode)
Verarbeitung von CSV-Daten in voller und halber Breite in Python
[Einführung in Python] Kombinieren Sie Nikkei-Durchschnitts- und NY Dow-CSV-Daten
Hashing von Daten in R und Python
Lesen von Notizen (in Python und Stan) zur Einführung in die statistische Modellierung für die Datenanalyse (Midorimoto)
Lösen der Einführung von AOJ in Algorithmen und Datenstrukturen in Python -Part1-
Verarbeitung zur Verwendung von notMNIST-Daten in Python (und versucht, sie zu klassifizieren)
Lösen der Einführung von AOJ in Algorithmen und Datenstrukturen in Python -Part2-
Lösen der Einführung von AOJ in Algorithmen und Datenstrukturen in Python -Part4-
Lösen der Einführung von AOJ in Algorithmen und Datenstrukturen in Python -Part3-
"Einführung in die Datenanalyse durch statistische Bayes'sche Modellierung beginnend mit R und Stan" in Python implementiert
Dateneingabe / -ausgabe in Python (CSV, JSON)
Lesen Sie Python csv und exportieren Sie es nach txt
Komprimieren Sie Python-Daten und schreiben Sie in SQLite
Verwendung ist und == in Python
Zusammenfassung der Wahrscheinlichkeitsverteilungen, die häufig in Statistiken und Datenanalysen vorkommen
Kratzen Sie das Essen mit Python und geben Sie es an CSV aus
So generieren Sie eine Sequenz in Python und C ++
Python-Variablen und Datentypen, die mit Chemoinfomatik gelernt wurden
Datenanalyse Python
Empfangen und Anzeigen von HTML-Formulardaten in Python
[Python] Vertauschen von Zeilen und Spalten mit Numpy-Daten
[Python] Lesen von Daten aus CIFAR-10 und CIFAR-100
Lesen und Schreiben von CSV- und JSON-Dateien mit Python
Senden Sie eine Nachricht an Skype und Chatwork in Python
Datenanalyse in Python: Ein Hinweis zu line_profiler
[Python] Fluss vom Web-Scraping zur Datenanalyse
Einführung in die Zeitreihenanalyse ~ Saisonales Anpassungsmodell ~ In R und Python implementiert
Schreiben Sie CSV-Daten mit AWS-Lambda + Python in AWS-S3
CSV in Python
Der erste Schritt zur Protokollanalyse (Formatieren und Einfügen von Protokolldaten in Pandas)
Aufgezeichnete Umgebung für die Datenanalyse mit Python
Zur Darstellung von Datum, Uhrzeit, Uhrzeit und Sekunden in Python
Wie man Autokorrelation und partielle Autokorrelation mit Python zeichnet
[Einführung in die Elementzerlegung] Lassen Sie uns Zeitreihenanalysemethoden in R und Python arrange anordnen
[Impression] [Datenanalyse ab Null] Einführung in die Python-Datenwissenschaft in Geschäftsfällen
Erstellen Sie mit Streamlit schnell ein Python-Datenanalyse-Dashboard und stellen Sie es in AWS bereit
Konvertieren Sie Datum und Uhrzeit in Zeitzonen in Unixtime in Python2.7
Ich möchte Timeout einfach in Python implementieren
Zusammenfassung der Tools, die zum Analysieren von Daten in Python benötigt werden
So wenden Sie mit matplotlib Marker nur auf bestimmte Daten an
[Für Anfänger] So studieren Sie den Python3-Datenanalysetest
Registrieren Sie gemeinsam Daten im Firestore mithilfe der CSV-Datei in Python
Führen Sie die Sortierimplementierung / Berechnungsmengenanalyse zusammen und experimentieren Sie in Python
Lesehinweis: Einführung in die Datenanalyse mit Python
Liste des Python-Codes, der bei der Big-Data-Analyse verwendet wird
Schreiben Sie Tests in Python, um die Abdeckung zu profilieren und zu überprüfen
[Python] So sortieren Sie Diktate in Listen und Instanzen in Listen
Hauptkomponentenanalyse (PCA) und unabhängige Komponentenanalyse (ICA) mit Python
Lesen von CSVs, die in Python nur Ganzzahlen enthalten
[Technisches Buch] Einführung in die Datenanalyse mit Python -1 Kapitel Einführung-
Datenanalyse mit Python 2
Datenanalyse Übersicht Python
Python-Datenanalysevorlage
Assoziationsanalyse in Python
Datenanalyse mit Python