Python拟合Z=X+Y的正态分布曲线
时间: 2024-09-15 08:03:22 浏览: 64
在Python中,拟合一个由两个独立正态分布变量之和构成的正态分布曲线,通常可以使用统计学中的中心极限定理。中心极限定理说明,即使X和Y本身不是正态分布的,只要它们都是独立的随机变量,它们的和趋近于正态分布。
为了在Python中实现这一点,我们可以使用`numpy`库生成两个独立的随机样本集,分别代表X和Y。然后我们可以将这两个样本集相加,得到Z的样本集,并使用`scipy`或`matplotlib`等库来拟合和绘制Z的正态分布曲线。
以下是一个简单的示例代码,展示如何实现这个过程:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
# 设定X和Y的均值和标准差
mean_X, mean_Y = 0, 0
std_X, std_Y = 1, 1
# 生成两个独立的正态分布随机变量样本集
X = np.random.normal(mean_X, std_X, 10000)
Y = np.random.normal(mean_Y, std_Y, 10000)
# 计算Z = X + Y的样本集
Z = X + Y
# 计算Z的均值和标准差
mean_Z = np.mean(Z)
std_Z = np.std(Z)
# 创建Z的正态分布概率密度函数(PDF)
x_values = np.linspace(mean_Z - 4*std_Z, mean_Z + 4*std_Z, 1000)
pdf_z = norm.pdf(x_values, mean_Z, std_Z)
# 绘制Z的直方图和拟合的正态分布曲线
plt.hist(Z, bins=50, density=True, alpha=0.6, color='g')
plt.plot(x_values, pdf_z, 'k', linewidth=2)
plt.xlabel('Value')
plt.ylabel('Probability Density')
plt.title('Normal Distribution Fit')
plt.show()
```
这段代码首先生成了两个具有指定均值和标准差的正态分布随机变量X和Y。然后计算这两个变量的和得到Z。接着计算Z的均值和标准差,并使用`scipy.stats`中的`norm.pdf`函数计算Z的正态分布概率密度函数值。最后,使用`matplotlib.pyplot`模块绘制了Z的直方图和拟合的正态分布曲线。
阅读全文