Quand j'étais étudiant [^ majeur], quand j'ai touché au domaine des statistiques en mathématiques, j'ai appris cela.
Lorsque vous choisissez certains échantillons de la population et en déduisez les tendances de la population ** (enquête par sondage) **
- Probabilistiquement ** la moyenne de l'échantillon représente la moyenne de la population **, mais
- Une mesure de ** «variation», comme l'écart type, ** a tendance à être moins probable que celle de la population ** de l'échantillon.
en bref,
** L'écart type de l'échantillon est inférieur à la population **! ΩΩΩ
à propos de ça.
Immédiatement après cela, on m'a appris la formule de la ** "dispersion non biaisée" ** en divisant par $ n -1 $ au lieu du nombre d'échantillons $ n $, mais à ce moment-là, les informations que j'avais entendues comme "Hmm", Avez-vous déjà voulu vous en assurer?
Même s'il est dit dans une preuve algébrique appropriée que "la valeur attendue de la variance sans biais est égale à la variance de la population", c'est certainement le cas, mais après tout ** je ne vois pas de données concrètes [^ attraction]. N'avez-vous pas vu que ce n'est pas si rafraîchissant **?
Cependant, ** il n'y a pas de données pour le confirmer **, et compte tenu du biais de l'échantillon, ** je ne peux pas être sûr si je le calcule une ou deux fois ** …….
attends une minute. N'est-ce pas la boîte (ou la planche) devant toi ** pour ça **? ~~ Je me sens différent. Mais au moins, il ne devrait pas être là pour s'encourager mutuellement sur ** 5ch **. ~~ Si vous avez un ordinateur, vous pouvez lancer des pièces 10 000 fois ** car c'est ** avant le petit-déjeuner **.
Une question simple qui a été volée dans l'enfance, ** Frappons-la avec l'informatique **.
[^ major]: Ma spécialité était les études fantômes. [^ abstraction]: Les mathématiques sont une étude qui met l'accent sur l'abstraction (généralisation) plutôt que sur le concret (exemple), donc cela ne peut pas être aidé.
Cette fois, nous utiliserons ** Python + JupyterLab ** pour exécuter la simulation. Cependant, peu importe ce que vous utilisez **. Pour le moment ** Je l'utilise pour les affaires ** Récemment, j'ai posté étrangement ** des articles Python sur Qiita **, donc cela ne veut rien dire de plus. Alors ** Arrêtez les batailles de montage et autres choses folles dans les langages de programmation maintenant **. Surtout pour les langues naturelles [^ English].
In[]
import math
import matplotlib.pyplot as plt
import numpy as np
Cette fois, la population est supposée suivre une distribution régulière ** avec une moyenne de 50 et un écart type de 10. En passant, ce $ \ mathcal {N} (50, 10 ^ 2) $ est également une ** définition de la valeur de l'écart **. Généralement, seule la partie "transformée pour que la moyenne devienne 50" est connue, mais la partie ** écart type 10 ** est ** assez importante . Grâce à cela, " à quel point les résultats sont exceptionnels **" peut être discuté de manière unifiée. De plus, il y a beaucoup de gens qui font un malentendu ridicule ** parce que la limite inférieure est 0 et la limite supérieure est 100 ** parce qu'ils choisissent un nombre significatif tel que 50 [^ écart].
In[]
mu = 50.
sigma = 10.
Le nombre d'échantillons à extraire est de ** 10 **. Cela dépend de la taille de la population, mais je pense que c'est ** assez petit ** pour l'enquête. À cette époque, il a été dit qu'il y avait au moins 2000 personnes dans les graines de trivia ** Hé, cet article est-il différent de trop de déraillements **? Même un si petit échantillon correspond-il correctement à la population quand on le regarde à la valeur attendue? J'ai hâte d'y être.
In[]
samples_num = 10
[^ Traduction]: Pourquoi un certain nombre de personnes qui dénoncent l'irrégularité de l'anglais comme la tête d'un démon surgissent? C'est désagréable. [^ déviation]: Quand j'étais enfant, je craignais que si je transformais en dessous de la moyenne de 0 à 50 et au-dessus de la moyenne de 50 à 100, ce serait une distribution très déformée. Je suis seul.
Tout d'abord, jetons un coup d'œil à la ** moyenne **, qui est un indice dit "sans problème dans les enquêtes par sondage (probablement) tel quel".
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()
En conséquence, la moyenne des résultats de 10000 enquêtes par sondage était de ** 50,022 **. Puisque la moyenne de la population est de ** 50 **, elle peut être estimée ** correctement **. Je ne sais pas si l'écart type de 3,218 est grand ou petit, mais il est probable que ** plus d'échantillons réduiront la variation **.
Vient ensuite le protagoniste d'aujourd'hui, ** Ecart type **.
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()
En conséquence, la moyenne de 10 000 enquêtes par sondage était de ** 9,235 **. L'écart type de la population est de ** 10 **, il est donc certainement ** sous-estimé **.
Le ** écart type ** est la ** (non négative) ** racine carrée ** de la ** variance. La ** variance ** est la ** moyenne ** de chaque donnée ** «la différence au carré de la moyenne».
La raison pour laquelle cela se produit est que si vous faites référence à des livres et à des sites Web qui sont écrits plus sérieusement sur diverses statistiques, la valeur obtenue en divisant par $ n $ au lieu de diviser par $ n $ pour obtenir la moyenne ** $ n -1 $ ** correspond à la valeur attendue ** de la variance de la population **.
Ensuite, ** la valeur attendue de la racine carrée ** correspond-elle à l'écart type de la population **? ** Elle est légèrement différente **, et elle est calculée par la formule suivante.
** Quelle est cette formule **. Au fait, il semble que $ \ Gamma (n) = (n -1)! $ Dans la gamme des nombres naturels. ** Je ne sais pas **.
Quoi qu'il en soit, en me référant à cette description, j'écrirai une fonction pour trouver le coefficient de $ s $.
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()
En conséquence, la moyenne de 10 000 enquêtes par sondage était de ** 10 024 **. L'écart type de la population étant de ** 10 **, il semble que l'écart-type de la population puisse être estimé **.
[^ impartial]: Cette phrase ridiculement longue est due à la confusion des termes dans ce domaine. La variance de l'échantillon (écart-type) est-elle appelée «variance de l'échantillon (écart-type de l'échantillon)» ou l'estimation sans biais est-elle appelée «variance de l'échantillon (écart-type de l'échantillon)» parce qu'elle est utilisée pour les enquêtes par sondage? L'écart-type sans biais est-il «l'estimation sans biais de l'écart-type de la population» ou la «racine carrée de l'estimation sans biais de la variance de la population»? Ah, c'est foiré.
À partir de là, il y a un ** bonus **.
Il semble que les gens qui mordent un peu les statistiques sont teintés d'idées comme ** "La moyenne, c'est putain! Sortons de la dépendance moyenne!" ** [Source] </ sup>, mais de telles personnes ont été décidées La ** valeur médiane ** est mise en évidence. En ce moment, essayons cela aussi.
** Dans la distribution normale, la valeur moyenne et la valeur médiane correspondent **, de sorte que la valeur médiane de la population est également de 50 **.
Je vais essayer de prédire ce qui va m'arriver. Tout d'abord, ** médiane ** est une valeur qui divise toutes les valeurs en 1: 1 **. Ainsi, lors du prélèvement d'un échantillon, la ** probabilité de tomber sous la médiane ** de la population ** et la probabilité de ** dépasser ** sont clairement ** égales ** par définition. .. Ainsi, la valeur qui divise l'échantillon en 1: 1 continuerait ** à converger vers celle de la population **.
Vérifions-le.
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()
En conséquence, la moyenne de 10000 enquêtes par sondage était de ** 50,040 **. Comme la population médiane est de ** 50 **, comme prévu, elle peut être estimée correctement à partir de ** l'échantillon **.
Enfin, regardons la ** plage du quadrant régulier **. Comme confirmé dans Article précédent, ** l'écart type et la plage normale du quadrant correspondent dans la distribution normale **, donc ** population La plage du quadrant régulier est également de 10 **.
Oh, NumPy n'a pas de fonction pour calculer la plage de quadrant normale, alors je vais l'inventer.
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
Je vais essayer de prédire ce qui va m'arriver. Premièrement, le ** quadrant régulier ** est la ** différence entre les tuiles quantiques du haut et du bas **. À l'extrême des carreaux quantiques, lorsqu'on considère le ** minimum et le maximum **, le ** minimum de l'échantillon ** est souvent ** supérieur au minimum de population ** * * Probablement, le ** maximum de l'échantillon ** sera très probablement ** plus petit ** que le maximum de population **. Autrement dit, ** les quanttiles de l'échantillon ont tendance à être biaisés vers l'intérieur de celui de la population ** (la médiane n'était que le quantite intermédiaire et n'était pas affectée). En conséquence, on peut s'attendre à ce que la ** plage du quadrant régulier soit sous-estimée ** celle de la population.
Vérifions-le.
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()
En conséquence, la moyenne de 10 000 enquêtes par sondage était de ** 8,640 **. Puisque la fourchette du quadrant régulier de la population est ** 10 **, elle est encore ** sous-estimée ** comme prévu **.
Comment trouvez-vous une estimation non biaisée de la plage normale du quadrant?
Recommended Posts