Почему среднее значение не центрируется в 0 и 1 соответственно для обоих графиков? - PullRequest
1 голос
/ 12 февраля 2020

Ниже приведен код:

import numpy as np 
import matplotlib.pyplot as plt 
a1 = np.random.normal(loc=0,scale=2,size=1000) 
h1, b1 = np.histogram(a1,bins=10,density=True) 
plt.plot(h1, color='r') 
a2 = np.random.normal(loc=1,scale=5,size=30) 
h2, b2 = np.histogram(a1,bins=5,density=True) 
plt.plot(h2, color='g') 
plt.show()  

enter image description here

1 Ответ

2 голосов
/ 12 февраля 2020

Вы не учли промежуток корзин. В самом деле, вы даже сделали ячейки для одинаковых случайных выборок a1, а не двух разных выборок a1 и a2. Например, мы можем вычислить середину бункеров с помощью:

>>> 0.5*(b1[:-1]+b1[1:])
array([-6.01624486, -4.69961062, -3.38297639, -2.06634215, -0.74970792,
        0.56692632,  1.88356055,  3.20019479,  4.51682903,  5.83346326])

Если мы затем построим графики двух распределений, мы увидим:

import numpy as np 
import matplotlib.pyplot as plt

a1 = np.random.normal(loc=0,scale=2,size=1000) 
h1, b1 = np.histogram(a1,bins=10,density=True)
b1m = 0.5*(b1[:-1]+b1[1:])

plt.plot(b1m, h1, color='r') 
a2 = np.random.normal(loc=1,scale=5,size=30) 
h2, b2 = np.histogram(a2,bins=5,density=True)
b2m = 0.5*(b2[:-1]+b2[1:])

plt.plot(b2m, h2, color='g') 
plt.show()

и увидим:

two normals

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...