C'est la suite de la série de statistiques et de visualisation.
La distribution du chi carré est une distribution souvent utilisée dans le test du chi carré du test AB. Il s'écrit $ \ chi ^ 2 $ et est chi-carré. Si vous créez un graphique, la forme changera en fonction de la valeur de k, qui est appelée le degré de liberté, comme indiqué ci-dessous.
(Le code de dessin graphique est ici)
Quand j'ai interrogé le professeur de Wikipédia sur la définition de la distribution du chi carré,
Prenons indépendamment les variables de probabilité $ k $ $ X_1, ..., X_k $ qui suivent une distribution normale standard. A ce moment, la distribution selon la statistique
$ Z = \ sum_ {i = 1} ^ k X_i ^ 2 $ est appelée la distribution du chi carré avec le degré de liberté $ k $.
J'ai une réponse. Hmm, qu'est-ce que tu veux dire? Mettez-vous au carré la fonction de densité de la distribution normale? Apparemment, c'est différent.
Tout d'abord, comme ce sont des "variables de probabilité $ k $ qui suivent indépendamment la distribution normale standard", je vais d'abord écrire un histogramme de nombres aléatoires qui suivent la distribution normale standard. Nombres aléatoires selon 30 000 $ X \ sim \ N (\ mu, \ sigma) $.
x = np.random.normal(0, 1, 30000)
plot_dist(x, bins=80, title="normal distribution.")
(Le code complet pour dessiner le graphique est ici)
La distribution que suit le nombre aléatoire tracé en mettant au carré ce nombre aléatoire est la distribution du chi carré. Dans du code
#30 nombres aléatoires qui suivent une distribution normale standard,Générer 000
x = np.random.normal(0, 1, 30000)
#Square le nombre aléatoire généré [[C'est la clé! !! !! ]]
x2 = x**2
#Dessiner un histogramme
plt.figure(figsize=(7,5))
plt.title("chi2 distribution.[k=1]")
plt.hist(x2, 80, color="lightgreen", normed=True)
#Tracer une distribution chi carré avec 1 degré de liberté
xx = np.linspace(0, 25 ,1000)
plt.plot(xx, chi2.pdf(xx, df=1), linewidth=2, color="r")
Ce sera. L'affichage de ce graphique est le suivant. Comme il est au carré, tout est positif, donc toutes les données se sont déplacées vers la droite de $ x = 0 $, Parce qu'il est au carré
En même temps, la ligne de la fonction de densité de la distribution du chi carré avec 1 degré de liberté est dessinée, mais elles sont presque les mêmes! Ceci trace $ X_1 ^ 2 $ car il met au carré un nombre aléatoire qui suit une distribution normale standard et le trace tel quel. Puisqu'il n'y a qu'un seul $ X $, il a une distribution chi carré avec un degré de liberté.
Ensuite, si vous dessinez une animation de
C'est aussi un match parfait! Le "carré" du chi carré peut être interprété comme le carré d'un nombre aléatoire qui suit une distribution normale standard! J'ai pu ajouter une image à cette image en écrivant un histogramme!
Voici le code pour dessiner l'animation du graphique avec 1 à 10 degrés de liberté.
def animate(nframe):
n = 30000
k = nframe + 1
cum = np.zeros(n)
for i in range(k):
#30 nombres aléatoires qui suivent une distribution normale standard,Générer 000
x = np.random.normal(0, 1, n)
#Square le nombre aléatoire généré [Ceci est la clé! ]
x2 = x**2
#Le nombre total est le degré de liberté.
cum += x2
#Dessiner un histogramme
plt.clf()
#plt.figure(figsize=(9,7))
plt.ylim(0, 0.6)
plt.xlim(0, 25)
plt.title("chi2 histgram & pdf [k=%d]"%k)
plt.hist(cum, 80, color="lightgreen", normed=True)
#Tracer une distribution chi carré avec 1 degré de liberté
xx = np.linspace(0, 25 ,1000)
plt.plot(xx, chi2.pdf(xx, df=k), linewidth=2, color="r")
fig = plt.figure(figsize=(10,8))
anim = ani.FuncAnimation(fig, animate, frames=10, blit=True)
anim.save('chi2_hist_dist.gif', writer='imagemagick', fps=1, dpi=64)
Comme imagemagick est utilisé pour dessiner l'animation gif, Honke HP et PythonMagick Veuillez installer en vous référant à download / python /).
Cependant, l'installation d'ImageMagick et de PythonMagick est difficile en fonction de l'environnement, donc si vous souhaitez simplement créer des animations facilement, vous pouvez générer des animations avec mp4 comme indiqué ci-dessous sans bibliothèques supplémentaires.
anim.save('filename.mp4', fps=13)
Recommended Posts