用Python做卡方分布,n=1,n=4,n=10,n=20,并为我显示一张做出的图
时间: 2024-11-05 17:27:19 浏览: 13
在Python中,我们可以使用`scipy.stats`库的`chi2`函数生成卡方分布的随机数,然后通过matplotlib库绘制直方图来展示不同样本量(n)下的分布情况。以下是步骤和示例代码:
首先,确保已经安装了`numpy`、`scipy`和`matplotlib`库,如果没有,可以使用pip安装:
```bash
pip install numpy scipy matplotlib
```
然后,你可以使用以下代码:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import chi2
# 定义不同的样本量
ns = [1, 4, 10, 20]
x = [np.random.chisquare(df=k, size=10000) for k in ns] # 生成卡方分布数据
# 绘制直方图
fig, axs = plt.subplots(len(ns), sharex=True)
axs[0].hist(x[0], bins='auto', label=f'n={ns[0]}')
axs[0].set_title('Chi-squared distribution with n=1')
for i, ax in enumerate(axs[1:], start=1):
ax.hist(x[i], bins='auto', label=f'n={ns[i]}')
ax.set_xlabel('Values')
ax.legend()
plt.tight_layout()
plt.show()
```
这段代码将创建一个包含四个子图的图表,每个子图代表一个不同的样本量(n=1, 4, 10, 20)。每个子图会显示对应的卡方分布直方图。
阅读全文