【发布时间】:2016-05-25 05:40:15
【问题描述】:
您好,我想在此代码中的直方图中添加误差线。我看过一些关于它的帖子,但我没有发现它们有帮助。此代码产生具有高斯分布的随机数,并且适用于内核估计。我需要有误差条来估计直方图在改变带宽时不准确的程度
from random import *
import numpy as np
from matplotlib.pyplot import*
from matplotlib import*
import scipy.stats as stats
def hist_with_kde(data, bandwidth = 0.3):
#set number of bins using Freedman and Diaconis
q1 = np.percentile(data,25)
q3 = np.percentile(data,75)
n = len(data)**(.1/.3)
rng = max(data) - min(data)
iqr = 2*(q3-q1)
bins =int((n*rng)/iqr)
print(bins)
x = np.linspace(min(data),max(data),200)
kde = stats.gaussian_kde(data,'scott')
kde._compute_covariance()
kde.set_bandwidth()
plot(x,kde(x),'r') # distribution function
hist(data,bins=bins,normed=True) # histogram
data = np.random.normal(0,1,1000)
hist_with_kde(data,30)
show()
【问题讨论】:
-
如果我执行你的代码会出错(在第 30 行:date = ...)
-
您缺少一个“;”或第 30 行中的换行符,如下所示:
data = np.random.normal(0,1,1000); hist_with_kde(data,30) -
我更正了感谢@MikkelBueTellus 和 bastelflp
-
请不要到处做这些
*导入。
标签: python python-3.x numpy matplotlib scipy