Beim Studium der Statistik taucht ein Satz mit einem ziemlich starren Namen auf, die Theorie der zentralen Polbegrenzung. Laut Wikipedia-Lehrer
Nach dem Gesetz der großen Zahlen nähert sich der zufällig aus einer Population zufällig ausgewählte Stichprobenmittelwert mit zunehmender Stichprobengröße dem wahren Mittelwert. Andererseits diskutiert die zentrale Polbegrenzungstheorie den Fehler zwischen dem Stichprobenmittelwert und dem wahren Durchschnitt. In vielen Fällen folgt der Fehler unabhängig von der Verteilung der Population ungefähr einer Normalverteilung, wenn die Stichprobengröße erhöht wird. http://ja.wikipedia.org/wiki/中心極限定理
Es ist geschrieben, aber ich bin nicht sicher ^^; Unabhängig von der Form der ursprünglichen Verteilung liegt der Stichprobenmittelwert der entnommenen Proben nahe an der Normalverteilung. Es scheint, dass die Stichprobenvarianz auch nahe an der Normalverteilung liegt. (Um genau zu sein, wenn es gemäß der Chi-Quadrat-Verteilung viele N gibt, kann dies durch eine Normalverteilung angenähert werden.) Selbst wenn ich es in Worten erkläre, selbst wenn ich es mit einer mathematischen Formel beweise (irgendwie stimmt die Produktverhältnismatrix überein), denke ich, dass es nicht intuitiv verstanden werden kann. Der Zweck dieses Artikels ist es, ein Diagramm zu zeichnen und zu versuchen, es zu verstehen. ist.
Ich werde mit Python ein Diagramm zeichnen, aber der Vorbereitungsprozess dafür ist wie folgt. Wir bereiten den Import verschiedener Bibliotheken und Funktionen zum Zeichnen von Grafiken vor.
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import numpy.random as rd
import matplotlib.mlab as mlab
import scipy.stats as st
#Beispielparameter
n = 10000
sample_size = 10000
#Funktion zur Berechnung von Durchschnitt und Varianz für jede Probe
def sample_to_mean_var(sample):
mean = np.mean(sample)
var = np.var(sample)
return [mean, var]
#Eine Funktion, die ein Histogramm von Durchschnitt und Varianz zeichnet
def plot_mean_var(stats, dist_name=""):
mu = stats[:,0]
var = stats[:,1]
bins = 40
#Mittleres Histogramm der Probe
plt.figure(figsize=(7,5))
plt.hist(mu, bins=bins, normed=True, color="plum")
plt.title("mu from %s distribution"%(dist_name))
plt.show()
#Histogramm der Probenverteilung
plt.figure(figsize=(7,5))
plt.hist(var, bins=bins, color="lightblue", normed=True)
plt.title("var from %s distribution"%(dist_name))
plt.show()
def plot_dist(data, bins, title =""):
plt.figure(figsize=(7,5))
plt.title(title)
plt.hist(data, bins, color="lightgreen", normed=True)
plt.show()
Versuchen Sie zunächst [Exponentialverteilung](http://qiita.com/kenmatsu4/items/c1a64cf69bc8c9e07aa2#geometricp-sizenone --- geometrische Verteilung). Der Indexverteilungsparameter $ \ lambda $ beträgt 0,1, und 10.000 Stichproben werden generiert, und unten wird ein Diagramm gezeichnet. Es ist eine völlig asymmetrische Verteilung mit einem langen Saum rechts.
#Diagrammzeichnung der Exponentialverteilung
lam = 0.1
x = rd.exponential(1./lam, size=sample_size)
plot_dist(x, 100, "exponential dist")
Aus diesen 10.000 Stichproben als einem Satz werden der Stichprobenmittelwert und die Stichprobenvarianz daraus berechnet. Wiederholen Sie dies 10.000 Mal und schreiben Sie ein Histogramm des Stichprobenmittelwerts und der Stichprobenvarianz, wie unten gezeigt.
#Generieren Sie viel Exponentialverteilung und zeichnen Sie ein Histogramm des Stichprobenmittelwerts und der Stichprobenvarianz
lam = 0.1
stats = np.array([sample_to_mean_var(rd.exponential(1./lam, size=sample_size)) for i in range(n)])
plot_mean_var(stats, dist_name="exponential")
Wie wäre es, wenn die ursprüngliche Verteilung ziemlich verzerrt wäre, aber der Probenmittelwert und die Probendispersion scheinen eine schöne symmetrische Glockenform zu sein. Die zentrale Polbegrenzung besteht darin, dass dies einer Normalverteilung folgt.
Im Folgenden werde ich andere verzerrte Grafiken ausprobieren.
Als nächstes folgt [Kai](http://qiita.com/kenmatsu4/items/c1a64cf69bc8c9e07aa2#chisquaredf-sizenone---Kai-square Distribution). Dies ist auch ziemlich verzerrt.
#Chi-Quadrat-Verteilung mit 5 Freiheitsgraden
df = 5
x = rd.chisquare(df, sample_size)
plot_dist(x, 50, "chi square dist")
#Mittelwert der Chi-Quadrat-Verteilung, Varianzhistogramm
df = 5 #Freiheitsgrad
#Generieren Sie viele Chi-Quadrat-Verteilungen
chi_stats = np.array([sample_to_mean_var(rd.chisquare(df, sample_size)) for i in range(n)])
plot_mean_var(chi_stats, dist_name="chi square")
Wieder können Sie sehen, dass ein symmetrisches glockenförmiges Histogramm geschrieben werden kann.
Ich werde auch eine seltsam geformte Verteilung mit zwei Spitzen versuchen.
#Futamin Normalverteilung
def generate_bimodal_norm():
x = np.random.normal(0, 4, sample_size)
y = np.random.normal(25, 8, sample_size)
return np.append(x,y)
z = generate_bimodal_norm()
plot_dist(z, 70, "bi-modal normal dist")
#Mittelwert der bimodalen Normalverteilung, Varianzhistogramm
#Erzeugt viele bimodale Normalverteilungen
binorm_stats = np.array([sample_to_mean_var(generate_bimodal_norm()) for i in range(n)])
plot_mean_var(binorm_stats, dist_name="bi-modal normal")
Selbst bei einer solchen Verteilung sind der Stichprobenmittelwert und die Stichprobenvarianz normal verteilt. Es ist erstaunlich, zentrale Polbegrenzung w
Es ist also eine zentrale Polbegrenzung, die bei der Betrachtung mathematischer Formeln und Beweise schwierig erscheint, aber ich habe versucht, sie intuitiv zu verstehen, indem ich mir die Grafik anschaue. Dies scheint der Grund zu sein, warum die Normalverteilung in der Statistik wichtig ist: smile:
Recommended Posts