2017-02-27 1 views
2

Je viens d'exécuter une tâche simple d'essayer de tracer l'histogramme de densité de probabilité pour une simulation que j'ai couru. Cependant, quand je le trace, la probabilité pour chaque bin ne semble pas correspondre au résultat du tracé de fréquence. avec 50 bacs je m'attendrais à ce que chaque bac ait une probabilité moyenne de 2% qui n'est pas reflétée dans le tableau.histogramme de densité de probabilité avec Matplotlib n'a pas de sens

Merci à l'avance

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

plntAcres = 88.0 
hvstPer = 0.99 
hvstAcres = plntAcres*hvstPer 
yldAcre = np.random.triangular(47,48,49, 10000) 

carryIn = 464 
pdn = hvstAcres * yldAcre 
imp = 25.0 
ttlSup = carryIn + pdn + imp 

crush = np.random.uniform(1945, 1990,10000) 
expts = np.random.uniform(2085, 2200,10000) 
seedRes = 130 
ttlDem = crush + expts + seedRes 

carryOut = ttlSup - ttlDem 

print carryOut 

plt.hist(carryOut, bins=50,normed=True) 
plt.title("Carry Out Distribution") 
plt.xlabel("Value") 
plt.ylabel("Probability") 
plt.show() 

Probability density of Carry out

Répondre

1

Dans la fonction hist, l'argument normed ne donne pas lieu à probabilites, mais dans des densités de probabilité. Si vous voulez les probabilités elles-mêmes, utilisez plutôt l'argument weights (et fournissez le 1/len(carryOut)).

Les deux lignes cruciales:

weights = np.ones_like(carryOut)/(len(carryOut)) 
plt.hist(carryOut, bins=50, weights=weights) 
+0

merci !, cela a fonctionné. Appréciez-le – Moj

0

Votre schéma est une courbe de Bell, signifie généralement que votre variable aléatoire est normalement distribué. Vérifier wikipedia pour Normal Distribution/Gauss distribution

+0

Et pour une raison. Il ajoute (soustrayant) trois variables aléatoires avec un écart-type comparable. À moins qu'ils ne soient corrélés (pas dans ce cas), le résultat tend à être proche de la loi gaussienne (loi des grands nombres). –

+0

Mon problème principal était que les probabilités inidvidual bin ne semblent pas ajouter jusqu'à 1 et je ne sais pas pourquoi @honza_p – Moj

+0

Maintenant, je comprends la question. –