循环的概率密度函数

时间:2018-12-10 18:26:51

标签: python-2.7 probability-density density-plot

在python 2.7中从循环绘制多个密度图的最佳方法是什么?

我的目标是相对于样本大小:N = 20、40、60、80、100,使3个对象(土匪)的beta分布可视化PDF。

我尝试使用pdf()函数,但.pdf()不适用于numpy对象并显示错误:

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()

0 个答案:

没有答案