Fügen Sie auf beiden Seiten ein Konfidenzintervall von 95% hinzu, um mit Python / Matplotlib zu rechnen

Grundzeichnung

Angenommen, Sie haben einen Datenrahmen wie diesen.

    x         y
0   2  0.954025
1   3  0.146810
2   1  0.409961
3   1  0.164558
4   3  0.782152
5   2  0.905869
6   3  0.210528
7   1  0.437970
8   1  0.801206
9   3  0.089576
10  2  0.960357
11  2  0.670732

Wenn ich versuche, aus diesem Datenrahmen ein Diagramm mit Standardfehler zu zeichnen, sieht es so aus.

import numpy as np
import matplotlib.pyplot as plt
 
m = df.pivot_table(index='x', values='y', aggfunc='mean')
e = df.pivot_table(index='x', values='y', aggfunc='sem')
m.plot(xlim=[0.8, 3.2], yerr=e)

20161010_1.png

Auf diese Weise kann ein Fehlerbalken erstellt werden, indem die Größe des Fehlers in yerr angegeben wird.

Zeichnen mit dem Konfidenzintervall

Daher definieren und verwenden wir cilen, um die Länge des Vertrauensintervalls zu ermitteln.

import numpy as np
from scipy import stats
import matplotlib.pyplot as plt


def cilen(arr, alpha=0.95):
    if len(arr) <= 1:
        return 0
    m, e, df = np.mean(arr), stats.sem(arr), len(arr) - 1
    interval = stats.t.interval(alpha, df, loc=m, scale=e)
    cilen = np.max(interval) - np.mean(interval)
    return cilen

m = df.pivot_table(index='x', values='y', aggfunc='mean')
e = df.pivot_table(index='x', values='y', aggfunc=cilen)
m.plot(xlim=[0.8, 3.2], yerr=e)

20161010_2.png

Ich konnte ein Diagramm mit einem Konfidenzintervall erstellen.

Bonus

Die Methode zur Berechnung des Konfidenzintervalls ist aufgrund des Problems "n oder n-1" verwirrt.
Für diejenigen, die vorerst nach "Vertrauensintervall Python" gesucht haben, laut "Vermeiden Sie es, Räder neu zu erfinden",

  1. Berechnen des Konfidenzintervalls des Mittelwerts der Normalverteilung in Python
  2. keiskS @technote - vertrauenswürdiger Abschnitt mit Python

Ich denke, Sie werden durch die subtilen Unterschiede verwirrt sein, beides versuchen und durch die unterschiedlichen Ergebnisse frustriert sein.
1 ist die gleiche Antwort wie R. Der Unterschied liegt in 2. Ich werde es versuchen.

> x <- c(1, 1, 3, 3)
> t.test(x)

    One Sample t-test

data:  x
t = 3.4641, df = 3, p-value = 0.04052
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
 0.1626138 3.8373862
sample estimates:
mean of x
        2

1 Weg

import numpy as np
from scipy import stats

alpha     = 0.95
data = [1, 1, 3, 3]

mean_val = np.mean(data)
sem_val  = stats.sem(data)  # standared error of the mean
ci       = stats.t.interval(alpha, len(data)-1, loc=mean_val, scale=sem_val)

print(ci)

>> (0.16261376896260105, 3.837386231037399)

2 Methoden

import math
import numpy as np
from scipy import stats

alpha     = 0.95
data = [1, 1, 3, 3]

mean_val = np.mean(data)
std_val = np.std(data)
ci = stats.t.interval(alpha,len(data)-1,loc=mean_val,scale=std_val/math.sqrt(len(data)))
print(ci)

>> (0.40877684735786857, 3.5912231526421312)

Dieses Mal habe ich beschlossen, R in der Welt zu folgen, also habe ich 1 gewählt.
Was an 2 anders ist, ist das Ende des Teils, in dem ci berechnet wird.

math.sqrt(len(data))

Dies. Teilen Sie durch n. Wenn Sie jedoch spekulative Statistiken erstellen möchten, ist es besser, durch n-1 zu teilen. Dies liegt daran, dass wir eine t-Verteilung annehmen. Eigentlich,

math.sqrt(len(data) - 1)

Dann stimmt die Antwort von Methode 2 auch vollständig mit R überein.

Recommended Posts

Fügen Sie auf beiden Seiten ein Konfidenzintervall von 95% hinzu, um mit Python / Matplotlib zu rechnen
Einführung in Python mit Atom (unterwegs)
Fügen Sie mit Matplotlib Informationen am unteren Rand der Abbildung hinzu
Was ich getan habe, um die Python2 EOL mit Zuversicht zu begrüßen
Speichern Sie Bilder im Web mit Python (Colab) auf einem Laufwerk.
[Python] Legen Sie den Diagrammbereich mit matplotlib fest
Laden Sie mit Python Dateien im Web herunter
Fügen Sie Bildern mit Python2.7 Gaußsches Rauschen hinzu
Richten Sie die Farbleiste mit matplotlib an der Figur aus
Der Weg zum Kompilieren zu Python 3 mit Thrift
[Python] Ich habe versucht, die Nacht der Galaxienbahn mit WordCloud zu visualisieren!
Setzen Sie Cabocha 0.68 in Windows ein und versuchen Sie, die Abhängigkeit mit Python zu analysieren
Verwenden Sie Python auf Raspberry Pi 3, um die LED mit Schaltersteuerung zu beleuchten!
Ich habe es mit den Top 100 PyPI-Paketen versucht.> Ich habe versucht, die auf Python installierten Pakete grafisch darzustellen
Strategie zur Monetarisierung mit Python Java
[Python] matplotlib: Formatieren Sie das Diagramm für Ihre Dissertation
Zeichentipps mit matplotlib auf der Serverseite
Fügen Sie der Heatmap (Python, Matplotlib) eine diagonale Linie (Schraffur) hinzu.
Der einfachste Weg, um Stimme mit Python zu synthetisieren
Versuchen Sie, das Mensch-Maschine-Diagramm mit Python zu lösen
[Python] Zeichnen mehrerer Diagramme mit Matplotlib
Geben Sie die ausführbare Python-Datei an, die mit virtualenv verwendet werden soll
Begrüßen Sie die Welt mit Python mit IntelliJ
[Python] So speichern Sie Bilder mit Beautiful Soup sofort im Web
Ich wollte die 3D-Partikelsimulation mit der Python-Visualisierungsbibliothek Matplotlib visualisieren.
Der einfachste Weg, OpenCV mit Python zu verwenden
Klicken Sie auf das Python / Matplotlib-Diagramm, um Koordinatenwerte oder Tastatureingabewerte abzurufen
Zeichnen Sie ein Faltlinien- / Streudiagramm mit Python Matplotlib für die CSV-Datei (2 Spalten).
Stellen Sie mit Python auf Raspberry Pi eine Verbindung zu MySQL her
Visualisiere grib2 auf einer Karte mit Python (matplotlib)
Einfache Möglichkeit, 0 abhängig von der Anzahl der Ziffern vorangestellt [Python]
Ab Python 3.10 scheint das von inspect.signature () zurückgegebene Formular auf typing.get_type_hints () zu basieren.
Überlegen Sie, wie Sie Python auf Ihrem iPad programmieren können
Versuchen Sie, das Programmier-Herausforderungsbuch mit Python3 zu lösen
So fügen Sie HDA Hilfe hinzu (mit Python-Skriptbonus)
[Python] Wie zeichnet man mit Matplotlib ein Liniendiagramm?
Fügen Sie einfach den Treiber mit dem Mixer zum Formschlüssel hinzu
[Einführung in Python] Wie iteriere ich mit der Bereichsfunktion?
Ich habe versucht, Mine Sweeper auf dem Terminal mit Python zu implementieren
Versuchen Sie, das Problem der Zuweisung von Schulungsärzten mit Python zu lösen
Schritte zum Installieren des neuesten Python auf Ihrem Mac
Ich habe versucht, Soma Cube mit Python zu lösen
Yum-Befehl zum Zugriff auf MySQL mit Python 3 unter Linux
[Python] So legen Sie den Download-Speicherort mit youtube-dl fest
Machen Sie mit Python einen Haltepunkt auf der c-Ebene
Konvertieren Sie das Bild in .zip mit Python in PDF
Ich möchte mit Python-Datenklasse nach hinten erben
Informationen zur Steuerung von Motoren mit Python auf RaspberryPi
Installieren Sie die neueste stabile Version von Python mit pyenv (sowohl 2 als auch 3).
Ich möchte Lambda mit Python auf Mac AWS!
Geben Sie MinGW als den in Python verwendeten Compiler an
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
[Python] So schreiben Sie den Tabellenstil mit python-pptx um [python-pptx]
[Python] So erstellen Sie mit Matplotlib ein zweidimensionales Histogramm
Wie man Python auf Android genießt !! Programmieren für unterwegs !!
[Einführung in Python] Grundlegende Verwendung der Bibliothek matplotlib
[Python] Wie zeichnet man mit Matplotlib ein Streudiagramm?
[Python] Weg zur Schlange (5) Spiele mit Matplotlib