假设我有一个数据集,并使用matplotlib绘制了该数据集的直方图。
如何使用
这似乎很好用,因为我得到了相当准确的结果。然而,如果我尝试像这样计算标准偏差:
我的结果与
n, bins, patches = plt.hist(data, normed=1)
如何使用
hist()
返回的n
和bins
值计算标准差? 我目前正在使用以下方法计算平均值:s = 0
for i in range(len(n)):
s += n[i] * ((bins[i] + bins[i+1]) / 2)
mean = s / numpy.sum(n)
这似乎很好用,因为我得到了相当准确的结果。然而,如果我尝试像这样计算标准偏差:
t = 0
for i in range(len(n)):
t += (bins[i] - mean)**2
std = np.sqrt(t / numpy.sum(n))
我的结果与
numpy.std(data)
返回的结果相差甚远。将左边界替换为每个区间的中心点也无济于事。我感觉问题在于 n
和 bins
值实际上并没有包含任何有关每个区间内个体数据分布的信息,但我正在完成的任务明确要求我使用它们来计算标准差。