Функция плотности вероятности из цикла - PullRequest
0 голосов
/ 10 декабря 2018

Каков наилучший способ построения графиков с несколькими плотностями из цикла в Python 2.7?

Моя цель - визуализировать PDF для бета-распределения для 3 объектов (бандитов) с учетом размера выборки: N = 20,40, 60, 80, 100.

Я пытался использовать функцию pdf (), но, похоже, .pdf () не работает с пустым объектом и выдает ошибку:

AttributeErrorTraceback (most recent call last)
<ipython-input-306-6aa42d351ffc> in <module>()
     26 for i, dist in enumerate(dist_list[::(n//20)], 1):
     27     plt.subplot(20//4,4,i)
---> 28     plt.plot(x, dist.pdf(x))
     29     plt.legend()
     30     plt.yticks([])

AttributeError: 'numpy.ndarray' object has no attribute 'pdf' 

основной код ниже.

Заранее спасибо.

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

from scipy.stats import beta 

bandits_prob = [0.2, 0.5, 0.7]

a=np.ones(3)
b=np.ones(3)

pulls=np.zeros(3)
success=np.zeros(3)
N=100
dist_list=[]

for i in xrange(N):
    i = np.argmax(np.random.beta(a, b))
    x = np.random.rand() < bandits_prob[i]
    success[i] += x
    pulls[i] +=1
    beta_dist = np.random.beta(a + success, b + pulls - success)
    dist_list.append(beta_dist)

plt.figure(figsize=(12, 9))
x = np.repeat(np.linspace(0, 1, 100), 3)
for i, dist in enumerate(dist_list[::(N//20)], 1):
    plt.subplot(20//4,4,i)
    plt.plot(x, dist.pdf(x))
    plt.legend()
    plt.yticks([])
    plt.xticks([])
plt.tight_layout()
...