[PYTHON] Commentaire d'impartialité et de cohérence pour ceux qui ne tombent pas amoureux

Ensuite, c'est le texte.

Sur Twitter, j'ai observé quelque chose comme «l'estimation impartiale est difficile ... Il y a une estimation correspondante, mais quelle est la différence?» Au fait, quand j'ai commencé à étudier les statistiques, j'ai eu la même question pendant longtemps. Je me suis souvenu que j'étais là [^ 1].

Lorsque j'ai demandé à Google Sensei "Estimation sans biais, estimation de correspondance", il semble qu'il y ait moins de 40 000 visites. Quand j'y ajoute mon pauvre article, je sens qu'il est assez délicat, mais je l'écrirai comme si tout allait bien.

Le goût est un peu différent des commentaires sur d'autres sites, alors peut-être que certaines personnes pourraient être déçues par cet article.

Alors, commençons.

■ Pourquoi pensez-vous à la nature des statistiques en premier lieu?

Par exemple, lorsqu'on considère l'estimation moyenne, il existe de nombreuses options telles que la moyenne de l'échantillon, la médiane et la moyenne élaguée. De cette façon, lorsque vous souhaitez estimer la valeur d'un certain paramètre (comme la moyenne ou la variance), il existe généralement différentes options.

Alors, quelle méthode dois-je utiliser parmi les différentes options? En d'autres termes, la question est de savoir ce qu'est une bonne estimation.

L'impartialité et la cohérence sont l'un des critères lors de l'examen de ces questions. [^ 2]

■ Jetons un coup d'œil à la définition. .. ..

Peut-être qu'au moment où je suis arrivé à cet article, j'avais regardé les définitions de cohérence et d'impartialité, et je pense que l'histoire de la définition est déjà bonne, alors je pense que j'ai envie de donner une explication qui est décevante, mais pour le moment pour moi Parce que c'est aussi un mémo de. .. .. ..

◆ Cohérence

Il existe en fait plusieurs correspondances, mais ici nous allons introduire l'estimation de correspondance faible et l'estimation de correspondance forte. Pour le moment, ce n'est pas grave si vous ne connaissez pas la différence. Veuillez penser à "Il y a quelque chose".

・ Estimation de correspondance faible

La colonne d'estimation $ \ {T_n \} $ est tout $ \ varepsilon> 0 $ et tout $ \ theta \ dans \ Theta $.

\lim_{n→\infty}P\,(\,|\,T_n-\theta\,|\,≧\varepsilon \,)\,=0

Ensuite, $ T_n $ est appelé l'estimation de correspondance faible de $ \ theta $.

・ Estimation de correspondance solide

La colonne d'estimation $ \ {T_n \} $ est entièrement $ \ theta \ in \ Theta $

P(\,\lim_{n→\infty}T_n=\theta)=1

Si tel est le cas, nous appelons $ T_n $ une estimation de correspondance forte pour $ \ theta $.
Pour ceux qui s'inquiètent de la différence, ** 4.2 de "Théorie des probabilités pour les statistiques, au-delà" Vous devriez lire le concept de convergence stochastique et sa force (P125) **.

◆ impartial

Non biaisé signifie qu'il n'est littéralement pas biaisé, mais qu'est-ce que «impartial» exactement? Les biais dans les statistiques sont les suivants:

・ Biais

Le biais est une mesure de l'écart entre l'estimation moyenne et la valeur réelle. Ce sera comme suit lorsqu'il est écrit dans une formule mathématique.

Si le montant estimé du paramètre $ \ theta $ est $ T (X) $, le biais est

E\,[\,T(X)\,]-\theta

Est défini comme. Valeur attendue du montant estimé - C'est la vraie valeur.

Peut-être que le mot biais est utilisé plus souvent, mais cette fois j'utiliserai le mot biais pour faire correspondre le non biaisé («biais»).

・ Impartial

Comme mentionné ci-dessus, le biais est défini comme $ E , [, T (X) ,] - \ theta $. Être impartial signifie ne pas être biaisé,

E\,[\,T(X)\,]-\theta=0

C'est très bien. Si vous déplacez $ \ theta $ vers la droite,

E\,[\,T(X)\,]=\theta

Ce sera. L'estimation $ T (X) $ qui satisfait cela s'appelle l'estimation sans biais du paramètre $ \ theta $.

■ Si vous manquez l'heure, commencez ici.

Si vous aimez les détails, veuillez lire ici.

L'exemple le plus visible d'estimation sans biais est peut-être la variance sans biais, et je pense que vous avez correctement confirmé manuellement la valeur attendue de la variance de l'échantillon.

Ici, nous allons d'abord confirmer que la dispersion de l'échantillon est biaisée par simulation, puis confirmer que la dispersion non biaisée est biaisée par simulation.

◆ Distribution de l'échantillon

Dispersion des échantillons

\frac{1}{N} \sum_{i=1}^{N} (X_i-\bar{X})^{\,2}

Défini dans. Comme vous le savez, la variance de l'échantillon n'est pas une estimation sans biais. En d'autres termes, l'estimation de la variance par la variance de l'échantillon est biaisée lorsqu'elle est calculée en moyenne.

Faisons l'expérience de cela.

★ Faites l'expérience du biais de la dispersion des échantillons.

Supposons maintenant que vous obteniez $ N $ d'observations indépendamment d'une distribution normale avec une vraie moyenne de 10 $ et une vraie variance de 25 $.

X_1,X_2,...,X_N \stackrel{i.i.d}{\sim} N(10,5^2)

En utilisant ces observations $ N $, nous estimons la variance comme une variance d'échantillon. Ensuite, pour chaque $ N $, répétez 10000 fois "Extraire les données-> Calculer la variance de l'échantillon". Supposons que la moyenne de ces 10 000 variances d'échantillon soit la ** variance d'échantillon prévue ** estimée pour chaque $ N $.

Qu'est-ce que tu racontes? Je ne sais pas? Pour ceux qui disent, ce chiffre. .. .. 図112.png

Si vous ne comprenez pas la signification du ballon, cliquez ici. .. ..

図1.png

$ K $ dans ce chiffre est de 10000 cette fois.

Quand je le réveille dans le code, cela ressemble à ceci. Si vous ne vous souciez pas du code, regardez le graphique ci-dessous.

import numpy as np
import matplotlib
import matplotlib.pyplot as plt

np.random.seed(42)

M_var0 = 200
K_var0 = 10000
mu_var0 = 10
std_var0 = 5
EV_var0 = []

for N in range(M_var0):
    V_var0 = []
    for i in range(K):
        X = np.random.normal(mu, std, N)
        V_var0.append(np.var(X, ddof = 0)) #ddof=Échantillon de variance à 0
                                           #ddof=Dispersion impartiale à 1
    EV_var0.append(np.mean(V_var0))

EV_var00 = np.array(EV_var0)
plt.figure(figsize = (10, 3.5))
plt.axhline(25, ls = "--", color = "red",  label = "True")
plt.plot(EV_var00, color = 'blue', linewidth = 0.5, label = "Mean ofEstimator")
plt.xlabel("N")
plt.ylabel("Variance")
plt.legend(loc = "lower right")
plt.show()

標本分散.png

L'axe horizontal est $ N $ et l'axe vertical est la distribution.

La valeur moyenne de la variance de l'échantillon (ligne bleue) semble être inférieure à la vraie variance 25 (ligne rouge). Il est difficile de voir près de la valeur réelle, alors agrandissons-la un peu plus.

EV_var00 = np.array(EV_var0)
plt.figure(figsize = (10, 3.5))
plt.axhline(25, ls = "--", color = "red",  label = "True")
plt.plot(EV_var00[10:], color = 'blue', linewidth = 0.5, label = "Mean of Estimator")
plt.xlabel("N")
plt.ylabel("Variance")
plt.legend(loc = "lower right")
plt.show()

(Je regarde juste à partir de $ N = 10 $. Les nombres sur l'axe horizontal sont collés sur le PPT puis écrits dans la zone de commentaire. Je suis désolé de le porter sur le côté.)

標本分散10から.png

Après tout, la valeur moyenne de la variance de l'échantillon est inférieure à la vraie variance.

C'est ce qu'on appelle le biais.

En d'autres termes, fixer le nombre d'observations $ N $, prendre des données maintes et maintes fois pour calculer la variance de l'échantillon, et en faire la moyenne n'est pas égal à la «vraie variance» (de la variance de l'échantillon). Est plus petit). C'est ce qu'on appelle le biais.

En fait, supposons que la vraie variance de $ X $ soit $ \ sigma ^ 2 $ et calculons la variance moyenne de l'échantillon.

\begin{eqnarray}
E\biggl[\frac{1}{N} \sum_{i=1}^{N} (X_i-\bar{X})^{\,2}\biggl] &=& \frac{N-1}{N} \sigma^2\\
\\
&=& \sigma^2-\frac{1}{N}\sigma^2
\end{eqnarray}

Par conséquent, nous pouvons voir que la variance de l'échantillon est théoriquement biaisée par $ - \ frac {1} {N} \ sigma ^ 2 $ sur la vraie variance $ \ sigma ^ 2 $.

Comparons le biais de la variance de l'échantillon obtenu par la simulation avec le biais théorique obtenu par le calcul.

n = np.arange(M_var0-1)
True_bias = -1 / n * 25 #Biais théorique(biais)

plt.figure(figsize = (10, 3.5))
plt.plot(Bias_var0, color = 'blue', linewidth = 0.5, label = "Bias of Estimator")
plt.plot(True_bias, color = 'red', linewidth = 0.5, label = "True Bias")
plt.axhline(0, ls = "--", color = "red")
plt.xlabel("N")
plt.ylabel("Bias")
plt.legend(loc = "lower right")
plt.show()

(Comme c'était difficile à voir, à partir de $ N = 10 $)

標本分散のバイアス.png

La ligne bleue est le biais par simulation, et la ligne rouge continue est le biais théorique.

Il y a un biais qui est presque le même que la théorie.

En passant, comme vous pouvez le voir à partir des résultats de calcul ci-dessus, dans le cas de la variance de l'échantillon, le biais dépend de $ N $, et si $ N $ est augmenté, le biais approche $ 0 $.


★ La dispersion non biaisée n'est-elle pas biaisée?

Eh bien, avez-vous vu jusqu'à présent

"Cela signifie que si vous utilisez une dispersion sans biais, il n'y aura pas de biais dans l'estimation?"

En d'autres termes

"Si vous reprenez les données encore et encore, calculez la variance non biaisée et faites la moyenne, est-elle égale à la vraie variance?"

Je pense que tu penses.

En fait, c'est vrai. Essayons la même chose que nous avons fait avec la dispersion d'échantillon avec une dispersion non biaisée.

np.random.seed(42)

M_var1 = 200
K_var1 = 10000
mu_var1 = 10
std_var1 = 5
EV_var1 = []

for N in range(M_var1):
    V_var1 = []
    for i in range(K):
        X = np.random.normal(mu, std, N)
        V_var1.append(np.var(X, ddof = 1))
    EV_var1.append(np.mean(V_var1))

plt.figure(figsize = (10, 3.5))
plt.plot(EV_var1, color = 'blue', linewidth = 0.5, label = "Mean of Estimator")
plt.axhline(25, ls = "--", color = "red", label = "True")
plt.xlabel("Bias")
plt.ylabel("standard deviation")
plt.legend(loc = "lower right")
plt.show()

不偏分散.png

Cela peut être difficile à réaliser car la plage de valeurs sur l'axe vertical est petite, mais la valeur moyenne de la variance non biaisée est proche de la vraie variance quelle que soit la valeur de $ N $.

Comparons la "valeur moyenne de la dispersion de l'échantillon" et la "valeur moyenne de la dispersion sans biais" pour réaliser que la dispersion sans biais est sans biais.

plt.figure(figsize = (10, 3.5))
plt.plot(EV_var1[10:], color = 'blue', linewidth = 0.5, label = "Unbiased Variance")
plt.plot(EV_var00[10:], color = 'green', linewidth = 0.5, label = "Sample Variance")
plt.axhline(25, ls = "--", color = "red", label = "True")
plt.xlabel("Bias")
plt.ylabel("standard deviation")
plt.legend(loc = "lower right")
plt.show()

(Comme c'était difficile à voir, à partir de $ N = 10 $)

標本分散と不偏分散の比較.png

La ligne verte représente la dispersion moyenne de l'échantillon et la ligne bleue la dispersion moyenne non biaisée. Vous pouvez voir que la variance sans biais est significativement moins biaisée que la variance de l'échantillon.

Il est persistant encore et encore, mais l'image est que le nombre de valeurs observées $ N $ est fixe, la variance est estimée à plusieurs reprises et la valeur moyenne de ces estimations obtenues est égale à la valeur réelle. Sera.


★ Cohérence

Je pense que j'ai en quelque sorte compris le biais. Alors, quelle est la différence avec la cohérence?

La cohérence n'est pas une question de moyenne ou quelque chose du genre, il s'agit simplement de rendre $ N $ infini en une seule estimation, puis de faire correspondre la vraie valeur. L'expérience doit donc simplement augmenter $ N $.

En conclusion, la variance de l'échantillon est cohérente, mais nous le confirmerons par simulation. (Pour preuve, par ici sera utile.)

Dans le cas de la cohérence, nous verrons le comportement lorsque les données sont agrandies régulièrement, comme estimé par $ N = 1 $ → estimé par $ $ N = 2 $ → $ ... (Estimer une seule fois pour chaque $ N $.)

np.random.seed(42)

M_consistent = 10000
mu_consistent = 10
std_consistent = 5
V_consistent = []

for N in range(M_consistent):
    X_consistent = np.random.normal(mu_consistent, std_consistent, N)
    V_consistent.append(np.var(X_consistent, ddof = 0))

plt.figure(figsize = (10, 3.5))
plt.plot(V_consistent, color = 'blue', linewidth = 0.3, label = "Estimator")
plt.axhline(25, ls = "--", color = "red", label = "True")
plt.xlabel("N")
plt.ylabel("Variance")
plt.legend(loc = "lower right")
plt.show()

標本分散の一致性.png

Vous pouvez voir que lorsque $ N $ grandit, il se rapproche de la vraie dispersion.

La dispersion non biaisée est presque la même.

Puisque le nombre divisé est la différence entre $ N $ et $ N-1 $, vous pouvez voir que cette différence semble être négligeable une fois qu'elle augmente dans une certaine mesure.

np.random.seed(42)

M_consistent1 = 10000
mu_consistent1 = 10
std_consistent1 = 5
V_consistent1 = []

for N in range(M_consistent1):
    X_consistent1 = np.random.normal(mu_consistent1, std_consistent1, N)
    V_consistent1.append(np.var(X_consistent1, ddof = 1))


plt.figure(figsize = (10, 3.5))
plt.plot(V_consistent1, color = 'blue', linewidth = 0.3, label = "Estimator")
plt.axhline(25, ls = "--", color = "red", label = "True")
plt.xlabel("N")
plt.ylabel("Variance")
plt.legend(loc = "lower right")
plt.show()

不偏分散の一致性.png


■ Résumé

J'étais très fatigué même si je n'ai pas fait grand-chose. Dans la seconde moitié, cela peut sembler un peu brouillon, mais il vaut mieux l'écrire de manière concise. .. .. Droite. .. ..

Grosso modo,

** Non biaisé **: Le nombre de valeurs observées est-il égal à la valeur réelle lorsqu'elle est estimée en prenant les données maintes et maintes fois et en les faisant la moyenne?

** Cohérence **: Est-ce égal à la valeur vraie si le nombre de valeurs observées est extrêmement grand dans une estimation?

C'est comme ça?


★ Références ★

[1] Noda, Miyaoka: Bases de la statistique mathématique (1992) [2] Shimizu: théorie probabiliste pour les statistiques, au-delà (2019) [3] Montrez la cohérence de l'échantillonnage non biaisé (lien) [4] Distribution impartiale (lien) [5] La variance de l'échantillon et la variance non biaisée sont des estimations de concordance (lien)

[^ 1]: Comprenez-vous maintenant? Je ne peux pas arrêter de transpirer quand on me le demande. Je dois étudier la théorie de l'absurdité. .. ..

[^ 2]: Bien sûr, il existe de nombreux autres critères comme celui-ci.

Recommended Posts

Commentaire d'impartialité et de cohérence pour ceux qui ne tombent pas amoureux
AWS ~ Pour ceux qui l'utiliseront ~
Pour ceux qui ne peuvent pas exécuter Keras ou TensorFlow sur GPU avec macOS Sierra
Pour ceux qui obtiennent une erreur de clé: 'length_seconds' sur pytube
Pour ceux qui ne peuvent pas installer Python sur Windows XP
Pour ceux d'entre vous qui ne savent pas comment définir un mot de passe avec Jupyter sur Docker
Veuillez arrêter l'impression et importer la journalisation pour la sortie du journal
Mesures Java SE8 Gold (pour ceux qui ne sont pas bons dans ce domaine)
[YOLO v5] Détection d'objets pour les personnes masquées et celles qui ne le sont pas