有一组学生的成绩如下:60,70,87,56,35,64,28,84,89,65 (分数的最高分为100分,最小值为0分),请用python画出这组学生成绩的分位数-分位数图(这组学生和标准正态分布的QQ Plot)
时间: 2024-10-06 07:06:42 浏览: 14
要在Python中绘制一组数据的分位数-分位数(Q-Q plot)图,通常我们会比较这组数据与理论的正态分布曲线。首先,我们需要计算原始数据的分位数,然后将它们转换成标准正态分布对应的分位数,最后通过matplotlib库实现绘图。这里是一个简单的步骤:
1. 导入所需的库:`numpy`用于处理数值计算,`scipy.stats`用于计算统计量,`matplotlib.pyplot`用于绘制图表。
2. 计算原始数据的分位数。
3. 使用`norm.ppf()`函数计算标准正态分布的分位数。
4. 绘制Q-Q线图。
以下是代码示例:
```python
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
# 学生的成绩数据
scores = [60, 70, 87, 56, 35, 64, 28, 84, 89, 65]
# 计算原始数据的分位数
sorted_scores = np.sort(scores)
n_scores = len(sorted_scores)
q_scores = np.arange(0, n_scores+1) / n_scores
# 标准正态分布的分位数
theoretical_q_scores = stats.norm.ppf(q_scores)
# 创建QQ plot
plt.figure(figsize=(10, 6))
plt.plot(theoretical_q_scores, sorted_scores, 'bo', label='Data')
plt.plot([min(sorted_scores), max(sorted_scores)], [min(sorted_scores), max(sorted_scores)], 'k--', label='Diagonal line')
plt.xlabel('Theoretical Quantiles')
plt.ylabel('Observed Quantiles')
plt.title('Quantile-Quantile Plot of Student Scores')
plt.legend()
plt.show()