Python绘制自由度为10的置信区间
时间: 2023-11-05 19:50:34 浏览: 55
在Python中,可以使用SciPy库中的t分布函数来计算自由度为10时的置信区间。具体步骤如下:
1. 导入相关库:
```python
import numpy as np
from scipy.stats import t
import matplotlib.pyplot as plt
```
2. 生成数据:
```python
data = np.random.randn(100) # 生成100个随机数
```
3. 计算置信区间:
```python
n = len(data) # 样本数量
m = np.mean(data) # 样本均值
s = np.std(data, ddof=1) # 样本标准差
alpha = 0.05 # 置信水平
df = n - 1 # 自由度
t_value = t.ppf(1 - alpha/2, df) # t分布值
lower_bound = m - t_value * s / np.sqrt(n)
upper_bound = m + t_value * s / np.sqrt(n)
```
其中,`ddof`参数指定计算样本标准差时使用无偏估计,即除以`n-1`而非`n`。
4. 绘制置信区间图:
```python
plt.hist(data, bins=20, alpha=0.5, density=True) # 绘制直方图
x = np.linspace(m - 4*s, m + 4*s, 1000) # 生成x轴数据
y = t.pdf(x, df) # 计算t分布的概率密度函数值
plt.plot(x, y, 'r-', label='t distribution') # 绘制t分布曲线
plt.axvline(lower_bound, color='g', linestyle='--', label='lower bound') # 绘制置信区间下限
plt.axvline(upper_bound, color='g', linestyle='--', label='upper bound') # 绘制置信区间上限
plt.legend()
plt.show()
```
完整代码如下:
```python
import numpy as np
from scipy.stats import t
import matplotlib.pyplot as plt
data = np.random.randn(100) # 生成100个随机数
n = len(data) # 样本数量
m = np.mean(data) # 样本均值
s = np.std(data, ddof=1) # 样本标准差
alpha = 0.05 # 置信水平
df = n - 1 # 自由度
t_value = t.ppf(1 - alpha/2, df) # t分布值
lower_bound = m - t_value * s / np.sqrt(n)
upper_bound = m + t_value * s / np.sqrt(n)
plt.hist(data, bins=20, alpha=0.5, density=True) # 绘制直方图
x = np.linspace(m - 4*s, m + 4*s, 1000) # 生成x轴数据
y = t.pdf(x, df) # 计算t分布的概率密度函数值
plt.plot(x, y, 'r-', label='t distribution') # 绘制t分布曲线
plt.axvline(lower_bound, color='g', linestyle='--', label='lower bound') # 绘制置信区间下限
plt.axvline(upper_bound, color='g', linestyle='--', label='upper bound') # 绘制置信区间上限
plt.legend()
plt.show()
```
运行代码可以得到一个类似于下图的置信区间图:
![置信区间图](https://i.imgur.com/TGJzX4Z.png)