Als ich Student [^ major] war, als ich das Gebiet der Statistik in der Mathematik berührte, habe ich das gelernt.
Wenn Sie einige Stichproben aus der Bevölkerung auswählen und daraus Bevölkerungsentwicklungen ableiten ** (Stichprobenerhebung) **
- Probabilistisch ** repräsentiert der Stichprobenmittelwert den Populationsmittelwert **, aber
- Ein Maß für ** "Variation", wie z. B. die Standardabweichung **, ist tendenziell weniger wahrscheinlich als das der Population ** in der Stichprobe.
Zusamenfassend,
** Die Standardabweichung der Probe ist kleiner als die Grundgesamtheit **! ΩΩΩ
darüber.
Unmittelbar danach wurde mir die Formel ** "unverzerrte Dispersion" ** beigebracht, die durch $ n -1 $ anstelle der Anzahl der Proben $ n $ geteilt wird. Wollten Sie schon immer mal sicher gehen?
Selbst wenn in einem richtigen algebraischen Beweis gesagt wird, dass "der erwartete Wert der unvoreingenommenen Varianz gleich der Varianz der Bevölkerung ist", ist dies sicherlich der Fall, aber schließlich ** sehe ich keine konkreten Daten [^ Anziehungskraft]. Hast du nicht erlebt, dass es nicht so erfrischend ist **?
** Es gibt jedoch keine Daten, die dies bestätigen **, und angesichts der Verzerrung der Stichprobe ** kann ich nicht sicher sein, ob ich sie ein- oder zweimal berechne ** …….
warte eine Minute. Ist nicht die Kiste (oder das Brett) vor dir ** dafür **? ~~ Ich fühle mich anders. Aber zumindest sollte es nicht da sein, um sich gegenseitig auf ** 5ch ** anzuregen. ~~ Wenn Sie einen Computer haben, können Sie 10.000 Mal Münzen werfen **, weil es ** vor dem Frühstück ** ist.
Eine einfache Frage, die in der Kindheit gestohlen wurde: ** Lass es uns mit der Informatik schlagen **.
[^ major]: Mein Hauptfach war Ghost Studies. [^ Abstraktion]: Mathematik ist eine Studie, die eher die Abstraktion (Generalisierung) als die Konkretheit (Beispiel) betont, daher kann nicht geholfen werden.
Dieses Mal verwenden wir ** Python + JupyterLab **, um die Simulation auszuführen. Es spielt jedoch keine Rolle, was Sie verwenden **. Zur Zeit ** Ich benutze es für geschäftliche Zwecke ** Vor kurzem habe ich seltsamerweise ** Python-Artikel in Qiita veröffentlicht **, also bedeutet es nichts weiter. Also ** Hör jetzt auf, Schlachten und andere verrückte Dinge in Programmiersprachen zu montieren **. Besonders für natürliche Sprachen [^ Englisch].
In[]
import math
import matplotlib.pyplot as plt
import numpy as np
Diesmal wird angenommen, dass die Population einer regelmäßigen Verteilung ** mit einem Mittelwert von 50 und einer Standardabweichung von 10 folgt. Abgesehen davon ist dieses $ \ mathcal {N} (50, 10 ^ 2) $ auch eine ** Definition des Abweichungswerts **. Im Allgemeinen ist nur der Teil "transformiert, so dass der Durchschnitt 50 wird" bekannt, aber der Teil ** Standardabweichung 10 ** ist ** ziemlich wichtig . Dank dessen kann " wie herausragend die Ergebnisse sind **" auf einheitliche Weise diskutiert werden. Darüber hinaus gibt es viele Menschen, die ein lächerliches Missverständnis machen **, dass die Untergrenze 0 und die Obergrenze 100 ** ist, weil sie eine aussagekräftige Zahl wie 50 [^ Abweichung] wählen.
In[]
mu = 50.
sigma = 10.
Die Anzahl der zu extrahierenden Proben beträgt ** 10 **. Es hängt von der Größe der Bevölkerung ab, aber ich denke, dass dies für die Umfrage ** ziemlich klein ** ist. Zu diesem Zeitpunkt wurde gesagt, dass sich mindestens 2000 Menschen in den Samen der Trivia befanden ** Hey, unterscheidet sich dieser Artikel von zu vielen Entgleisungen **? Ich freue mich darauf.
In[]
samples_num = 10
[^ Englisch]: Warum haben Sie eine bestimmte Anzahl von Menschen, die die Unregelmäßigkeiten des Englischen ablehnen, als wären sie die Köpfe der Dämonen? Es ist unangenehm. [^ Abweichung]: Als ich ein Kind war, hatte ich Angst, dass es eine sehr verzerrte Verteilung wäre, wenn ich mich unter den Durchschnitt von 0 auf 50 und über den Durchschnitt von 50 auf 100 transformieren würde. Ich bin alleine.
Schauen wir uns zunächst den ** Durchschnitt ** an, einen Index, der als "kein Problem bei der Verwendung (wahrscheinlich) in Stichprobenerhebungen" bezeichnet wird.
In[]
np.random.seed(555)
mean_list = []
for _ in range(10000):
samples = np.random.normal(mu, sigma, samples_num)
mean_list.append(np.mean(samples))
mean = np.array(mean_list)
plt.hist(mean, bins=30, density=True, histtype='stepfilled')
plt.title(F'Mean: $\\mu = {np.mean(mean):.3f}$, $\\sigma = {np.std(mean):.3f}$')
plt.show()
Infolgedessen betrug der Durchschnitt der Ergebnisse von 10000 Stichprobenerhebungen ** 50,022 **. Da der Durchschnitt der Bevölkerung ** 50 ** beträgt, kann er ** richtig ** geschätzt werden. Ich weiß nicht, ob die Standardabweichung 3.218 groß oder klein ist, aber es ist wahrscheinlich, dass ** mehr Stichproben die Abweichung verringern **.
Als nächstes kommt der heutige Protagonist ** Standard Deviation **.
In[]
np.random.seed(913)
std_list = []
for _ in range(10000):
samples = np.random.normal(mu, sigma, samples_num)
std_list.append(np.std(samples))
std = np.array(std_list)
plt.hist(std, bins=30, density=True, histtype='stepfilled')
plt.title(F'Standard Deviation: $\\mu = {np.mean(std):.3f}$, $\\sigma = {np.std(std):.3f}$')
plt.show()
Infolgedessen betrug der Durchschnitt von 10000 Stichprobenerhebungen ** 9,235 **. Die Standardabweichung der Bevölkerung beträgt ** 10 **, daher wird sie sicherlich ** unterschätzt **.
Die ** Standardabweichung ** ist die ** (nicht negative) ** Quadratwurzel ** der ** Varianz. Die ** Varianz ** ist der ** Durchschnitt ** der ** "Differenz vom mittleren Quadrat" jeder Daten.
Der Grund, warum dies passiert, ist, dass, wenn Sie auf ernsthaft geschriebene Bücher und Websites über verschiedene Statistiken verweisen, der Wert durch Teilen durch $ n $ anstelle durch Teilen durch $ n $ erhalten wird, um den Durchschnitt ** $ n -1 $ zu erhalten ** entspricht dem erwarteten Wert ** der Populationsvarianz **.
Dann ** stimmt der erwartete Wert der Quadratwurzel ** mit der Standardabweichung der Grundgesamtheit überein **? ** Etwas anders **, scheint er nach der folgenden Formel berechnet zu werden.
** Was ist diese Formel **. Übrigens scheint $ \ Gamma (n) = (n -1)! $ Im Bereich der natürlichen Zahlen. ** Ich weiß es nicht **.
Wie auch immer, unter Bezugnahme auf diese Beschreibung werde ich eine Funktion schreiben, um den Koeffizienten von $ s $ zu finden.
In[]
def ustd_coefficient(n):
try:
return math.sqrt(n / 2) * math.gamma((n - 1) / 2) / math.gamma(n / 2)
except OverflowError:
return math.sqrt(n / (n - 1.5))
In[]
np.random.seed(333)
D_list = []
for _ in range(10000):
samples = np.random.normal(mu, sigma, samples_num)
D_list.append(np.std(samples) * ustd_coefficient(len(samples)))
D = np.array(D_list)
plt.hist(D, bins=30, density=True, histtype='stepfilled')
plt.title(F'Unbiased Standard Deviation: $\\mu = {np.mean(D):.3f}$, $\\sigma = {np.std(D):.3f}$')
plt.show()
Infolgedessen betrug der Durchschnitt von 10000 Stichprobenerhebungen ** 10.024 **. Da die Standardabweichung der Bevölkerung ** 10 ** beträgt, scheint es, dass die Standardabweichung der Bevölkerung geschätzt werden kann **.
[^ unvoreingenommen]: Dieser lächerlich lange Satz ist auf die Verwirrung der Begriffe in diesem Bereich zurückzuführen. Wird die Stichprobenvarianz (Standardabweichung) als "Stichprobenvarianz (Stichprobenstandardabweichung)" bezeichnet oder wird die unverzerrte Schätzung als "Stichprobenvarianz (Stichprobenstandardabweichung)" bezeichnet, da sie für Stichprobenerhebungen verwendet wird? Ist die unverzerrte Standardabweichung die "unverzerrte Schätzung der Populationsstandardabweichung" oder die "Quadratwurzel der unverzerrten Schätzung der Populationsvarianz"? Ah, es ist durcheinander.
Ab hier gibt es einen ** Bonus **.
Es scheint, dass Leute, die ein bisschen Statistik beißen, mit Ideen wie ** "Der Durchschnitt ist verdammt! Lassen Sie uns aus der durchschnittlichen Sucht herauskommen!" ** [Quelle] </ sup> gefärbt sind, aber solche Leute wurden entschieden Der ** Medianwert ** wird herausgebracht. Versuchen wir es jetzt auch.
** In der Normalverteilung stimmen Mittelwert und Medianwert überein **, sodass der Medianwert der Bevölkerung ebenfalls 50 ** beträgt.
Ich werde versuchen vorherzusagen, was mit mir passieren wird. Erstens ist ** Median ** ein Wert, der alle Werte in 1: 1 ** unterteilt. Wenn also eine Stichprobe entnommen wird, sind die ** Wahrscheinlichkeit, unter den Median ** der Bevölkerung ** zu fallen ** und die Wahrscheinlichkeit, ** zu überschreiten **, per Definition eindeutig ** gleich **. .. Der Wert, der die Stichprobe in 1: 1 unterteilt, würde also immer noch ** dem der Bevölkerung ** konvergieren.
Lass es uns überprüfen.
In[]
np.random.seed(753)
median_list = []
for _ in range(10000):
samples = np.random.normal(mu, sigma, samples_num)
median_list.append(np.median(samples))
median = np.array(median_list)
plt.hist(median, bins=30, density=True, histtype='stepfilled')
plt.title(F'Median: $\\mu = {np.mean(median):.3f}$, $\\sigma = {np.std(median):.3f}$')
plt.show()
Infolgedessen betrug der Durchschnitt von 10000 Stichprobenerhebungen ** 50.040 **. Da die Medianpopulation erwartungsgemäß ** 50 ** beträgt, kann sie anhand der ** Stichprobe ** korrekt geschätzt werden.
Schauen wir uns zum Schluss den ** regulären Quadrantenbereich ** an. Wie in Vorheriger Artikel bestätigt, stimmen ** Standardabweichung und normaler Quadrantenbereich in der Normalverteilung überein **, also ** Population Der reguläre Quadrantenbereich von beträgt ebenfalls 10 **.
Oh, NumPy hat keine Funktion zum Berechnen des normalen Quadrantenbereichs, also werde ich es nachholen.
In[]
def np_iqr(a, axis=None, out=None, overwrite_input=False, keepdims=False):
q1 = np.quantile(a, q=0.25, axis=axis, overwrite_input=overwrite_input, keepdims=keepdims)
q3 = np.quantile(a, q=0.75, axis=axis, overwrite_input=overwrite_input, keepdims=keepdims)
return np.subtract(q3, q1, out=out)
def np_niqr(a, axis=None, out=None, overwrite_input=False, keepdims=False):
return np.divide(np.iqr(a, axis=axis, overwrite_input=overwrite_input, keepdims=keepdims), 1.3489795003921634, out=out)
np.iqr = np_iqr
np.niqr = np_niqr
Ich werde versuchen vorherzusagen, was mit mir passieren wird. Erstens ist der ** reguläre Quadrant ** die ** Differenz zwischen den oberen und unteren Quantenkacheln **. Als Extrem der Quantenkacheln ist unter Berücksichtigung des ** Minimums und Maximums ** das ** Stichprobenminimum ** häufig ** größer als das Populationsminimum ** ** * * Wahrscheinlich ist das ** Stichprobenmaximum ** höchstwahrscheinlich ** kleiner ** als das Populationsmaximum **. Das heißt, ** Stichprobenquantile neigen dazu, nach innen von der der Bevölkerung voreingenommen zu sein ** (der Median war nur der mittlere Quantit und wurde nicht beeinflusst). Infolgedessen ist zu erwarten, dass der ** reguläre Quadrantenbereich ** der der Bevölkerung unterschätzt ** wird.
Lass es uns überprüfen.
In[]
np.random.seed(315)
niqr_list = []
for _ in range(10000):
samples = np.random.normal(mu, sigma, samples_num)
niqr_list.append(np.niqr(samples))
niqr = np.array(niqr_list)
plt.hist(niqr, bins=30, density=True, histtype='stepfilled')
plt.title(F'Normalized Interquartile Range: $\\mu = {np.mean(niqr):.3f}$, $\\sigma = {np.std(niqr):.3f}$')
plt.show()
Infolgedessen betrug der Durchschnitt von 10000 Stichprobenerhebungen ** 8,640 **. Da der reguläre Quadrantenbereich der Bevölkerung ** 10 ** beträgt, wird er ** wie erwartet ** immer noch ** unterschätzt **.
Wie finden Sie eine unvoreingenommene Schätzung des normalen Quadrantenbereichs?
Recommended Posts