模拟均值回归无均值参考:飞行学校模拟问题咨询
核心结论先明确
7和3是首次得分的分组阈值,不是模拟数据的均值参数,完全不需要用它们来启动模拟。你需要自行设定飞行员真实能力的分布均值(比如0-10区间的中间值5,符合得分范围的逻辑),再结合独立误差生成两次测试得分。
完整模拟与分析流程
1. 设定分布参数(模拟的核心起点)
- 真实能力:每名飞行员的稳定能力,建议设为均值5、标准差1.5的正态分布(截断到0-10区间,贴合得分范围);也可以用0-10的均匀分布。
- 误差项:两次测试的独立误差,设为均值0、标准差1的正态分布(同样截断到合理范围,避免得分超出0-10)。
2. 生成数据与分组标记
按规则生成两次得分,再根据首次得分给飞行员分组:
- 首次得分>7 → 表扬组(蓝色)
- 首次得分<3 → 负面强化组(红色)
- 其余 → 中性组(黑色)
3. Python代码实现(含散点图)
import numpy as np import matplotlib.pyplot as plt # 模拟500名飞行员数据 n_pilots = 500 # 生成真实能力(均值5,截断在0-10) true_ability = np.random.normal(loc=5, scale=1.5, size=n_pilots) true_ability = np.clip(true_ability, 0, 10) # 生成两次独立误差(均值0,截断避免得分越界) error1 = np.clip(np.random.normal(0, 1, n_pilots), -2, 2) error2 = np.clip(np.random.normal(0, 1, n_pilots), -2, 2) # 计算两次操作得分,截断到0-10 score1 = np.clip(true_ability + error1, 0, 10) score2 = np.clip(true_ability + error2, 0, 10) # 标记分组 groups = [] for s in score1: if s > 7: groups.append("praised") elif s < 3: groups.append("criticized") else: groups.append("neutral") # 绘制要求的散点图 color_map = {"praised": "blue", "criticized": "red", "neutral": "black"} plt.figure(figsize=(8, 6)) for group in color_map: mask = np.array(groups) == group plt.scatter(score1[mask], score2[mask], c=color_map[group], label=group, alpha=0.6) plt.xlabel("首次操作得分") plt.ylabel("第二次操作得分") plt.title("飞行员两次操作得分散点图") plt.legend() plt.xlim(0, 10) plt.ylim(0, 10) plt.show()
4. 均值回归分析要点
均值回归的观察对象是分组后的第二次得分向整体真实能力均值的回落:
- 表扬组的首次得分偏高(是真实能力+正向误差的结果),第二次得分均值会向真实能力的整体均值(比如我们设定的5)回落,低于其首次得分均值;
- 负面强化组的首次得分偏低(真实能力+负向误差),第二次得分均值会向整体均值回升,高于其首次得分均值;
- 你需要用模拟得到的真实能力整体均值(或两次得分的整体均值)作为回归的参照,而非7或3这两个阈值。
内容的提问来源于stack exchange,提问作者elli
相关产品推荐
相关产品推荐

