J'essaie de tracer la courbe de la fonction de distribution cumulative de forme S (CDF) d'une distribution normale. Cependant, j'ai fini par une distribution uniforme. Qu'est-ce que je fais mal?
3 Réponses :
Maintenant, je ne connais pas votre application particulière. Mais je pense que le problème réside dans le fait que vous créez les valeurs du CDF pour un certain nombre de nombres aléatoires normalement distribués.
Ci-dessous, vous pouvez voir un exemple de code qui parcille le CDF d'une normale normale de -3 à +3 CDF de normal normal
p> p>
Vous traquez les mauvaises valeurs.
Lorsque vous faites Par conséquent, leur histogramme est ce que vous voyez comme courbe en forme de cloche. P>
Edit: L'autre réponse donne du code pour cette approche, donc je ne me dérangerai pas d'ajouter à nouveau. P> b = norme.rvs (taille = siz, aléatoire_state = rg) code>, ce que vous obtenez est un 10 échantillons aléatoires dessinés indépendamment de la distribution normale standard, c'est-à-dire
z code> Valeurs p>
norm.cdf code> renvoie la valeur code> CFD code> à une valeur z donnée. Si vous souhaitez que la courbe de CDF, vous pouvez dessiner uniformément de -3 à 3 x valeurs et obtenir leurs valeurs de CDF à tous les points. Ensuite, vous tracez les valeurs de probabilité de sortie. P>
Pour tracer le résultat sigmoïdal du CDF des variateurs aléatoires normalement distribués, je n'aurais pas besoin d'utiliser la fonction @Laaggan A> et @Dumbpy Réponse indiquée que l'utilisation de la valeur X régularisée et commandée est le moyen de dériver la courbe de CDF sigmoïdale. Bien que couramment fait, il n'est pas applicable lorsque des variations aléatoires sont utilisées. J'ai comparé les solutions de l'approche qu'ils avaient mentionnée avec ce que j'ai fait pour montrer que les deux approches donnent le même résultat. Cependant, mes résultats (voir la figure ci-dessous) montrent que l'approche habituelle d'obtenir les valeurs de la CDF donne plus d'occurrences des valeurs extrêmes d'une distribution normale que en utilisant des variations aléatoires. En excluant les deux extrêmes, les occurrences apparaissent uniformément distribuées. P> J'ai révisé mon script et j'ai fourni des commentaires pour démontrer comment j'ai comparé les deux approches. J'espère que ma réponse peut profiter aux autres qui apprennent à utiliser le Hist (code> Hist (CODE> HIST () de MATPLOTLIB. Au contraire, j'aurais pu utiliser la fonction
bar () code> pour tracer mes résultats.
RVS () code>,
pdf () code> et
CDF () code> Fonctions du < code> scipy.stats.norm code> classe. p>
Vous pouvez essayer de calculer la somme cumulative
np.cumsum code> de vos valeurs aléatoires. Si appliqué sur B, cela devrait être de type sigmoïde, mais non soulagé