[PYTHON] Ich habe versucht, den Abschnitt zu schätzen.

Abschnittsschätzung

Dieses Mal möchte ich die Schätzung von letztes Mal fortsetzen. Beim letzten Mal haben wir die Punkte geschätzt. Schauen Sie also bitte vorbei, wenn Sie interessiert sind.

In Bezug auf Daten

Auch diesmal habe ich versucht, das Intervall mithilfe des Pokemon-Datensatzes zu schätzen. Die Daten sind wie folgt. Auch dieses Mal möchte ich die HP-Daten dieser Daten als Grundgesamtheit verwenden, um den Abschnitt zu schätzen. 2020-10-20.png

Zunächst möchte ich den Durchschnitt und die Streuung von HP ermitteln.

score = np.array(df['HP'])
mean = np.mean(score)
var = np.var(score)
print("HP Durchschnitt: {} ,Verteilt: {} ".format(mean , var))

HP-Durchschnitt: 69,25875, Dispersion: 651,2042984374999 Ich möchte diese als Bevölkerungsdurchschnitt und Bevölkerungsvarianz analysieren.

Intervallschätzung des Populationsmittelwerts der Normalverteilung (wenn Populationsvarianz bekannt ist)

Betrachten wir diesmal den Fall, in dem die zuvor genannten HP-Daten als Population verwendet werden und die Populationsvarianz ebenfalls bekannt ist, vorausgesetzt, sie folgt einer Normalverteilung.

Da wir eine Normalverteilung für die Population annehmen, folgt der Stichprobenmittelwert $ \ bar {X} $ $ N (μ, σ ^ 2 / n) $. Mit anderen Worten, der geschätzte Wert des Stichprobenmittelwerts variiert mit der Standardabweichung $ \ sqrt {σ ^ 2 / n} $, obwohl der erwartete Wert der Populationsmittelwert μ ist. Die Standardabweichung einer solchen Schätzung wird als "Standardfehler" bezeichnet.

Da der Stichprobenmittelwert $ \ bar {X} $ $ N (μ, σ ^ 2 / n) $ folgt, ist $ Z = (\ bar {X} -μ) / \ sqrt {σ ^ 2 / n} Es kann mit $ standardisiert werden und Z folgt einer Standardnormalverteilung. Das Gute an dieser Standardisierung ist das Vertrauensintervall Dies bedeutet, dass die Berechnung einfacher ist.

Berechnen Sie zunächst den Populationsmittelwert / Populationsvarianz und den Stichprobenmittelwert / Stichprobenvarianz der Stichprobendaten. Die Stichprobengröße dieser Stichprobe beträgt 20.

np.random.seed(0)
n = 20
sample = np.random.choice(score , n)

p_mean = np.mean(score)
p_var = np.var(score)

s_mean = np.mean(sample)
s_var = np.var(sample , ddof = 1)

Bevölkerungsdurchschnitt: 69.25875, Bevölkerungsverteilung: 651.2042984374999 Stichprobenmittelwert: 68,8, Stichprobenvarianz (unverzerrte Varianz): 451,26000000000005

Dieses Mal möchte ich diesen Stichprobenmittelwert verwenden, um das Konfidenzintervall des Populationsmittelwerts zu berechnen. (Angenommen, Sie kennen die Populationsvarianz.) Erwägen Sie, ein 95% -Konfidenzintervall vom Stichprobenmittelwert zum Populationsmittelwert zu finden. Erstens ergibt die Standardisierung des Stichprobenmittelwerts $ \ bar {X} $ $ Z = (\ bar {X} -μ) / \ sqrt {σ ^ 2 / n} $. Betrachten wir zunächst das 95% -Konfidenzintervall von $ Z $. Dann P(z_{0.975}≦(\bar{X}-μ)/\sqrt{σ^2/n} ≦z_{0.025})=0.95…① Sie können die Ungleichung machen. Diese Gleichung hat eine Wahrscheinlichkeit von 95%, dass die Wahrscheinlichkeitsvariable $ Z = (\ bar {X} -μ) / \ sqrt {σ ^ 2 / n} $ im Intervall $ [z_ {0.975}, z_ {0.025}] $ liegt. Es repräsentiert, dass es gibt. Wenn diese $ ① $ -Formel in eine Ungleichung für den Populationsmittelwert μ umgewandelt wird P( \bar{X}-z_{0.025}*\sqrt{σ^2/n}≦μ≦\bar{X}-z_{0.095} * \sqrt{σ^2/n})=0.95 Es wird sein.

Um das 95% -Konfidenzintervall zu finden, wenn die Populationsvarianz bekannt ist, [\bar{X}-z_{0.025}*\sqrt{σ^2/n} , \bar{X}-z_{0.095} * \sqrt{σ^2/n}] Es bedeutet, dass Sie danach fragen sollten.

Ich habe versucht, es umzusetzen.

rv = stats.norm()
#rv.isf(0.025)Hat eine Standardnormalverteilungswahrscheinlichkeit von 0.Es repräsentiert den Punkt 025. Multiplizieren Sie es mit dem Standardfehler.
lcl = s_mean - rv.isf(0.025) * np.sqrt(p_var/n)
ucl = s_mean - rv.isf(0.975) * np.sqrt(p_var/n)
lcl , ucl

(57.616, 79.984)

Aus dem Obigen wurde festgestellt, dass das 95% -Konfidenzintervall des Bevölkerungsdurchschnitts (57,616, 79,984) beträgt. Da der früher ermittelte Bevölkerungsdurchschnitt 69,25875 betrug, können wir sehen, dass der Bevölkerungsdurchschnitt im Konfidenzintervall enthalten ist.

Dieses Konfidenzintervall wird viele Male auf die gleiche Weise abgetastet, und wenn eine Intervallschätzung durchgeführt wird, enthalten 95% der Intervallschätzung den Populationsmittelwert. In einer gekauten Form wird, wenn das Intervall 100-mal geschätzt wird, das Konfidenzintervall einschließlich des Bevölkerungsdurchschnitts 95-mal erhalten, aber das 5-mal erhaltene Konfidenzintervall enthält nicht den Bevölkerungsdurchschnitt. ..

Intervallschätzung der Populationsvarianz

Wir werden das Intervall der Populationsvarianz schätzen. Betrachten wir den Fall, in dem eine Normalverteilung für die Bevölkerung angenommen wird und der Bevölkerungsdurchschnitt nicht bekannt ist.

So wie wir bei der Berechnung des Konfidenzintervalls des Populationsmittelwerts standardisiert und in eine Wahrscheinlichkeitsvariable konvertiert haben, die der Standardnormalverteilung folgt, haben wir auch eine gewisse Konvertierung in die unverzerrte Varianz $ s ^ 2 $ durchgeführt, um eine Wahrscheinlichkeitsvariable zu erstellen, die einer typischen Wahrscheinlichkeitsverteilung folgt. müssen es tun. Die zu diesem Zeitpunkt verwendete Wahrscheinlichkeitsverteilung ist die Chi-Quadrat-Verteilung. Es ist bekannt, dass diese Variable Y einer Chi-Quadrat-Verteilung mit n-1 Freiheitsgraden folgt, indem die unverzerrte Varianz $ s ^ 2 $ in $ Y = (n-1) s ^ 2 / σ ^ 2 $ umgewandelt wird. Ich werde.

Nun möchte ich das Konfidenzintervall der Populationsvarianz ermitteln. Ermitteln Sie zunächst das 95% -Konfidenzintervall für $ \ chi {} ^ 2 (n-1) $.

P(\chi{}^2_{0.975}(n-1) ≦ (n-1)s^2/σ^2 ≦\chi{}^2_{0.025}(n-1)) = 0.95

Da wir dieses Mal das Konfidenzintervall der Populationsvarianz ermitteln möchten, stellen Sie sicher, dass $ σ ^ 2 $ in der Mitte liegt.

P((n-1)s^2/\chi{}^2_{0.025}(n-1) ≦ σ^2 ≦(n-1)s^2/\chi{}^2_{0.975}(n-1)) = 0.95

Daraus ergibt sich das 95% -Konfidenzintervall der Populationsvarianz $ σ ^ 2 $

[(n-1)s^2/\chi{}^2_{0.025}(n-1) , (n-1)s^2/\chi{}^2_{0.975}(n-1)]

Wird sein.

rv = stats.chi2(df=n-1)
lcl = (n-1) * s_var / rv.isf(0.025)
hcl = (n-1) * s_var / rv.isf(0.975)

lcl , hcl

(260.984, 962.659)

Das Konfidenzintervall für die Populationsvarianz beträgt (260,984, 962,659). Da die Populationsvarianz 651,204 betrug, ist ersichtlich, dass sie im Intervall enthalten ist.

Intervallschätzung des Populationsmittelwerts (wenn keine Populationsvarianz bekannt ist)

Ich fuhr mit der Analyse in der Situation fort, in der die Populationsvarianz bei der Berechnung des Konfidenzintervalls des Populationsdurchschnitts bekannt war. Es gibt jedoch nicht viele Situationen, in denen der Bevölkerungsdurchschnitt nicht tatsächlich bekannt ist und die Populationsvarianz bekannt ist. Daher möchte ich dieses Mal das Konfidenzintervall des Bevölkerungsdurchschnitts schätzen, wenn die Populationsvarianz unbekannt ist.

Wenn die Populationsvarianz bekannt war, wurde das Intervall durch den Standardfehler $ \ sqrt {σ ^ 2 / n} $ des Stichprobenmittelwerts $ \ bar {X} $ geschätzt. Da wir diese Populationsvarianz $ σ ^ 2 $ dieses Mal nicht kennen, werden wir $ \ sqrt {s ^ 2 / n} $ ersetzen, wobei die geschätzte unverzerrte Varianz $ s ^ 2 $ als Standardfehler verwendet wird. ..

Transformieren Sie zunächst den Stichprobenmittelwert $ \ bar {X} $ mit $ \ sqrt {s ^ 2 / n} $, genau wie Sie es tun würden, wenn Sie die Populationsvarianz kennen.

t = (\bar{X} - μ) / \sqrt{s^2/n}

Das ist $ t $

Y=(n-1)s^2/σ^2 Z = (\bar{X}-μ)/\sqrt{σ^2/n}

Wenn Sie mit diesen beiden konvertieren,

t = Z / \sqrt{Y/(n-1)}

Es kann dargestellt werden durch. Daher ist ersichtlich, dass dieses $ t $ einer t-Verteilung mit n-1 Freiheitsgraden folgt.

Nun, da $ t = (\ bar {X} --μ) / \ sqrt {s ^ 2 / n} $ einer t-Verteilung mit n-1 Freiheitsgraden folgt, bedeutet das 95% -Konfidenzintervall der Bevölkerung Ich werde fragen.

P(t_{0.975}(n-1)≦ (\bar{X} - μ) / \sqrt{s^2/n} ≦ t_{0.025}(n-1)) = 0.95

Transformieren Sie diese Gleichung so, dass der Populationsmittelwert μ in der Mitte liegt.

P(\bar{X} - t_{0.025}(n-1) * \sqrt{s^2/n}≦ μ ≦ \bar{X} - t_{0.975}(n-1)*\sqrt{s^2/n}) = 0.95

Infolgedessen beträgt das 95% -Konfidenzintervall des Bevölkerungsdurchschnitts

[ \bar{X} - t_{0.025}(n-1) * \sqrt{s^2/n} , \bar{X} - t_{0.975}(n-1)*\sqrt{s^2/n} ]

Es wird sein.

rv = stats.t(df=n-1)
lcl = s_mean - rv.isf(0.025) * np.sqrt(s_var/n)
ucl = s_mean - rv.isf(0.975) * np.sqrt(s_var/n)

lcl , ucl

(58.858, 78.742)

Das 95% -Konfidenzintervall für den Bevölkerungsdurchschnitt betrug (57,616, 79,984). Da der früher ermittelte Bevölkerungsdurchschnitt 69,25875 betrug, können wir sehen, dass der Bevölkerungsdurchschnitt im Konfidenzintervall enthalten ist.

Zusammenfassung

Diesmal habe ich versucht, den Abschnitt zu schätzen. Ich dachte, dass es schön wäre, Ihre Hände zu bewegen und auszugeben, weil Sie Ihr Verständnis vertiefen können, indem Sie tatsächlich Ihre Hände bewegen und es implementieren!


Referenzmaterial
Grundlagen der statistischen Analyse, verstanden von Python

Recommended Posts

Ich habe versucht, den Abschnitt zu schätzen.
Ich habe versucht, das Umfangsverhältnis π probabilistisch abzuschätzen
Ich habe versucht, den Ball zu bewegen
Ich habe versucht, den Befehl umask zusammenzufassen
Ich versuchte das Weckwort zu erkennen
Ich habe versucht, die grafische Modellierung zusammenzufassen.
Ich habe versucht, die COTOHA-API zu berühren
Ich habe versucht zu debuggen.
Ich habe Web Scraping versucht, um die Texte zu analysieren.
Ich habe versucht, beim Trocknen der Wäsche zu optimieren
Ich habe versucht, die Daten mit Zwietracht zu speichern
Ich habe versucht, die Trapezform des Bildes zu korrigieren
Qiita Job Ich habe versucht, den Job zu analysieren
LeetCode Ich habe versucht, die einfachen zusammenzufassen
Ich habe versucht, das Problem des Handlungsreisenden umzusetzen
Ich habe versucht, die Texte von Hinatazaka 46 zu vektorisieren!
Ich habe versucht, die Ähnlichkeit der Frageabsicht mit Doc2Vec von gensim abzuschätzen
(Python) Ich habe versucht, 1 Million Hände zu analysieren ~ Ich habe versucht, die Anzahl der AA ~ zu schätzen
Ich habe versucht, PredNet zu lernen
Ich habe versucht, PCANet zu implementieren
Ich habe die Changefinder-Bibliothek ausprobiert!
Ich habe versucht, Pylint vorzustellen
jupyter ich habe es berührt
Ich habe versucht, StarGAN (1) zu implementieren.
Ich habe versucht, die Sündenfunktion mit Chainer zu trainieren
Ich habe versucht, die in Python installierten Pakete grafisch darzustellen
Ich habe versucht, Iris aus dem Kamerabild zu erkennen
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Ich habe versucht, das Spiel in der J League vorherzusagen (Datenanalyse)
Ich habe versucht, Soma Cube mit Python zu lösen
Ich habe versucht, die Sündenfunktion mit Chainer zu approximieren
[Python] Ich habe versucht, die Top 10 der Lidschatten grafisch darzustellen
Ich habe versucht, die Spacha-Informationen von VTuber zu visualisieren
Ich habe versucht, den negativen Teil von Meros zu löschen
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
Ich habe versucht, die Methode zur Mittelung der Dollarkosten zu simulieren
Ich habe versucht, die nicht negative Matrixfaktorisierung (NMF) zu wiederholen.
Ich habe versucht, die Sprache mit CNN + Melspectogram zu identifizieren
Ich habe versucht, das Wissensdiagramm mit OpenKE zu ergänzen
Ich habe versucht, die Stimmen der Sprecher zu klassifizieren
Ich habe versucht, das Bild mithilfe von maschinellem Lernen zu komprimieren
Ich habe versucht, die String-Operationen von Python zusammenzufassen
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Ich habe versucht, die Umrisse von Big Gorilla herauszufinden
Ich habe versucht, das Blockdiagramm-Generierungswerkzeug blockdiag einzuführen
[Pferderennen] Ich habe versucht, die Stärke des Rennpferdes zu quantifizieren
Ich habe versucht zu simulieren, wie sich die Infektion mit Python ausbreitet
Ich habe versucht, Deep VQE zu implementieren
Ich habe versucht, die Emotionen des gesamten Romans "Wetterkind" zu analysieren
[Erste COTOHA-API] Ich habe versucht, die alte Geschichte zusammenzufassen
Ich habe das TensorFlow-Tutorial als erstes ausprobiert
Ich habe versucht, eine Quip-API zu erstellen
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
Ich habe die Naro-Roman-API 2 ausprobiert
Ich habe versucht, Python zu berühren (Installation)
Ich habe versucht, die Zugverspätungsinformationen mit LINE Notify zu benachrichtigen
Ich habe versucht, die Anzeigenoptimierung mithilfe des Banditenalgorithmus zu simulieren