python - 用理论曲线绘制直方图 : Random realization

标签 python histogram montecarlo probability-density rms

我需要编写一个程序来生成柯西分布随机实现

具有空位置和单位比例。

我还需要在 -5 和 5 个区间之间制作直方图,以随机实现 1,000 个点,连同理论曲线确保它们具有相同的单位。

我计算了累积分布函数 对于柯西分布:

然后我编写了以下 python 代码:

from __future__ import division
import scipy
import random
import matplotlib.pyplot as plt
import numpy as np
import math as m


valuesX = []
for q in range(1000):
    R = random.random()
    x = m.tan(m.pi*(R-0.5)) #Cumulative Function
    valuesX.append(x)

z = np.linspace(-10,10,1000)
y = 1/(m.pi*(1+z**2)) #Theoretical Cauchy

plt.plot(y,z)
plt.hist(valuesX, bins = 50, range = [-5,5], normed=True)

我的结果是:Histogram of random realization for the Cauchy distribution

我不知道这是否可以接受,因为我正在根据概率密度函数绘制离散值(随机实现)。我怎么能比较他们两个呢?因为我需要找到上图中的分数差,并确定两条曲线之间的全局均方根偏差作为随机实现大小的函数。

最佳答案

如果您有大量样本点,并且您的直方图 bin 足够窄,那么您已经完成的应该没问题。在这种情况下,plt.hist() 中的“normed=True”设置将为您提供每个区间中心概率密度的良好近似值。然后,抽样误差将由每个箱中样本数的平方根给出。

另一方面,如果样本数量较少,以至于每个直方图 bin 需要更宽才能包含多个样本,那么直方图和理论概率密度函数之间的比较就变得更加微妙.在这种情况下,需要允许每个 bin 表示概率密度在每个 bin 范围内的积分。

因此,对于覆盖范围 [a,b] 的 bin,需要计算以下积分:

enter image description here

当乘以样本总数时,这会得出给定区间内平均期望的样本数。

为方便起见,还可以将此公式重新排列为以下形式:

enter image description here

当 bin 很薄时(即 b 不比 a 大很多),它应该具有更好的数值精度。该公式还使对于非常薄的 bin 如何恢复概率密度本身的表达式变得更加清晰。

关于python - 用理论曲线绘制直方图 : Random realization,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33061832/

相关文章:

r - 如何在R中制作3D直方图

matlab - 呈现不同颜色的直方图 - matlab

r - 如何在R中将条形直方图转换为线直方图

python - 无法在 Python 上准确计算圆周率

python - 伊辛模型大都会算法 : lattice won't equilibrate

Python无法读取环境变量

python - 使用 Adwords API 将自定义受众群体添加到广告组

Python/Arduino串口通信

r - 二元和连续变量的 Copula 和模拟

python - 如何使用 Google Colab 本地运行时并连接到 Google Drive