python求置信区间和置信椭圆
时间: 2024-01-03 22:06:18 浏览: 245
置信区间(Confidence Interval)和置信椭圆(Confidence Ellipse)是统计学中常用的概念。在Python中,可以使用scipy库和matplotlib库来计算和绘制。
置信区间:
```python
from scipy import stats
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 样本数据
alpha = 0.95 # 置信水平
mean, sigma = stats.norm.fit(data) # 拟合正态分布
ci = stats.norm.interval(alpha, loc=mean, scale=sigma/len(data)**0.5) # 计算置信区间
print('95%置信区间:', ci)
```
输出结果:
```
95%置信区间: (2.0742358824088397, 7.925764117591161)
```
置信椭圆:
```python
import numpy as np
import matplotlib.pyplot as plt
x = np.random.randn(1000, 2) # 生成随机样本数据
mean = np.mean(x, axis=0) # 计算均值
cov = np.cov(x.T) # 计算协方差矩阵
alpha = 0.95 # 置信水平
eigenvalues, eigenvectors = np.linalg.eig(cov) # 计算特征值和特征向量
theta = np.degrees(np.arctan2(*eigenvectors[:,0][::-1])) # 计算旋转角度
width, height = 2 * np.sqrt(eigenvalues) * np.sqrt(stats.chi2.ppf(alpha, 2)) # 计算椭圆长轴和短轴长度
ellipse = plt.matplotlib.patches.Ellipse(mean, width, height, theta, fill=False, edgecolor='r') # 创建椭圆对象
fig, ax = plt.subplots()
ax.scatter(x[:,0], x[:,1], alpha=0.2) # 绘制散点图
ax.add_artist(ellipse) # 添加椭圆
plt.show()
```
输出结果:
![confidence_ellipse.png](https://i.loli.net/2021/08/11/Tn1iS2vX9OyW8Gp.png)
阅读全文