Behavioural Economics 中文导航¶
原文: Behavioural Economics Experiment Analysis
分类: 行为经济学实验分析
大小: 课程项目
语言: Python + Jupyter
📚 项目简介¶
Behavioural Economics 是阿姆斯特丹大学 (University of Amsterdam) 行为经济学课程 (2018-2019) 的实验分析项目。该项目复现了 Nagel (1995) 的经典"猜数字"博弈实验,并添加了一个创新的处理组:三人小组 vs 个人竞争。
GitHub: https://github.com/juangesino/BehaviouralEconomics
原始实验¶
- Nagel, R. (1995). "Unraveling in guessing games: An experimental study." The American Economic Review, 85(5), 1313-1326.
🔧 实验设计¶
实验类型:猜数字博弈 (Guessing Game)¶
游戏规则:
创新处理组¶
| 组别 | 设置 | 研究问题 |
|---|---|---|
| 对照组 | 个人独立参与 | 基准行为 |
| 处理组 | 3 人小组,先独立填写→讨论→达成共识 | 群体决策 vs 个人决策 |
实验流程:
📁 目录结构¶
BehaviouralEconomics/
├── data/ # 数据目录
│ ├── raw/ # 原始实验数据
│ ├── cleaned/ # 清洗后数据
│ └── final/ # 最终分析数据
├── notebooks/ # Jupyter 分析笔记
│ ├── 01_data_exploration.ipynb
│ ├── 02_individual_analysis.ipynb
│ ├── 03_group_analysis.ipynb
│ └── 04_comparison.ipynb
├── src/ # 源代码
│ ├── data_cleaning.py
│ ├── analysis.py
│ └── visualization.py
├── figures/ # 输出图表
├── requirements.txt # 依赖
├── LICENSE # 许可证 (GPL v3)
└── README.md # 主文档
🚀 快速开始¶
安装¶
# 克隆仓库
cd /workspace/code-examples/BehaviouralEconomics
# 环境要求
# - JupyterLab
# - Python 3.7+
# 安装依赖
pip install -r requirements.txt
# 主要依赖:
# - numpy
# - pandas
# - matplotlib
# - scipy
# - statsmodels
运行分析¶
# 启动 Jupyter
jupyter lab
# 按顺序运行笔记:
# 1. 01_data_exploration.ipynb → 数据探索
# 2. 02_individual_analysis.ipynb → 个人分析
# 3. 03_group_analysis.ipynb → 小组分析
# 4. 04_comparison.ipynb → 组间对比
📊 数据分析¶
1. 数据探索¶
import pandas as pd
import matplotlib.pyplot as plt
# 读取数据
df = pd.read_csv('data/final/experiment_data.csv')
# 基本信息
print(f"参与者数量:{df['subject_id'].nunique()}")
print(f"总轮数:{df['round'].max()}")
print(f"组别分布:{df['group_type'].value_counts()}")
# 选择数字的分布
plt.hist(df['choice'], bins=20, edgecolor='black')
plt.xlabel('选择的数字')
plt.ylabel('频数')
plt.title('猜数字选择分布')
plt.axvline(df['choice'].mean(), color='red', linestyle='--')
plt.text(df['choice'].mean(), plt.ylim()[1]*0.9,
f'均值:{df["choice"].mean():.1f}')
plt.show()
2. 学习效应分析¶
# 分析随轮次的学习效应
import numpy as np
# 按轮次计算平均选择
round_means = df.groupby('round')['choice'].mean()
plt.plot(round_means.index, round_means.values, 'o-', linewidth=2)
plt.xlabel('轮次')
plt.ylabel('平均选择')
plt.title('学习效应:随轮次的选择变化')
plt.grid(alpha=0.3)
# 理论均衡值 (纳什均衡 = 0)
plt.axhline(y=0, color='red', linestyle='--', label='纳什均衡')
plt.legend()
plt.show()
# 预期模式:
# 早期轮次:选择较高 (如 50-70)
# 后期轮次:逐渐降低 (接近 0)
3. 群体 vs 个人对比¶
# 比较个人组和小组的选择
individual = df[df['group_type'] == 'individual']['choice']
group = df[df['group_type'] == 'group']['choice']
# 箱线图对比
plt.boxplot([individual, group], labels=['个人', '小组'])
plt.ylabel('选择的数字')
plt.title('个人决策 vs 群体决策')
plt.grid(alpha=0.3)
plt.show()
# 统计检验
from scipy import stats
t_stat, p_value = stats.ttest_ind(individual, group)
print(f"t 统计量:{t_stat:.3f}")
print(f"p 值:{p_value:.4f}")
print(f"结论:{'差异显著' if p_value < 0.05 else '差异不显著'}")
4. 推理层级分析¶
# 计算推理层级 (Level-k 模型)
# Level-0: 随机选择 (期望值 50)
# Level-1: 认为其他人是 Level-0 → 选择 50 × 2/3 = 33
# Level-2: 认为其他人是 Level-1 → 选择 33 × 2/3 = 22
# ...
def calculate_level(choice):
"""估计参与者的推理层级"""
if choice > 45:
return 0 # Level-0 (随机)
elif choice > 30:
return 1 # Level-1
elif choice > 15:
return 2 # Level-2
elif choice > 5:
return 3 # Level-3
else:
return 4 # Level-4+ (接近均衡)
df['estimated_level'] = df['choice'].apply(calculate_level)
# 层级分布
level_dist = df['estimated_level'].value_counts().sort_index()
plt.bar(level_dist.index, level_dist.values)
plt.xlabel('推理层级 (Level-k)')
plt.ylabel('人数')
plt.title('推理层级分布')
plt.xticks(range(5))
plt.show()
📖 理论基础¶
猜数字博弈 (Beauty Contest Game)¶
纳什均衡分析:
假设所有人都理性且知道其他人也理性:
- 如果所有人都随机选择,平均 = 50,最优选择 = 50 × 2/3 = 33
- 但如果所有人都想到这一点,平均 = 33,最优选择 = 33 × 2/3 = 22
- 继续迭代... 最终收敛到 0
纳什均衡:所有人都选择 0
Level-k 推理模型¶
| 层级 | 推理过程 | 典型选择 |
|---|---|---|
| Level-0 | 随机选择 | 50 |
| Level-1 | 认为别人是 L0 → 50×⅔ | 33 |
| Level-2 | 认为别人是 L1 → 33×⅔ | 22 |
| Level-3 | 认为别人是 L2 → 22×⅔ | 15 |
| Level-4+ | 更高阶推理 | <10 |
群体决策假设¶
研究假设:
💡 预期发现¶
1. 学习效应¶
2. 群体效应¶
3. 个体差异¶
🔗 相关资源¶
- llm-cooperation - LLM 合作行为研究
- Behavioral_RL - 行为强化学习
- 决策科学资源大全
📚 参考资料¶
核心论文¶
Nagel, R. (1995).
"Unraveling in guessing games: An experimental study."
The American Economic Review, 85(5), 1313-1326.
延伸阅读¶
- Camerer, C. F. (2003). Behavioral Game Theory.
- Keynes, J. M. (1936). The General Theory (Chapter 12: Beauty Contest).
- Stahl, D. O., & Wilson, P. W. (1995). On players' models of other players.
🛠️ 扩展分析建议¶
1. 动态学习模型¶
# 拟合学习模型
from scipy.optimize import minimize
def learning_model(params, choices):
"""
指数加权学习模型
choice_t = w * choice_{t-1} + (1-w) * target_{t-1}
"""
w = params[0]
# 计算预测误差
predictions = [choices[0]] # 第一轮预测
for t in range(1, len(choices)):
pred = w * choices[t-1] + (1-w) * (2/3 * np.mean(choices[:t]))
predictions.append(pred)
# 最小化平方误差
mse = np.mean((np.array(choices) - np.array(predictions))**2)
return mse
# 拟合最优学习率
result = minimize(learning_model, x0=[0.5], args=(df['choice'].values,))
optimal_w = result.x[0]
print(f"最优学习率:{optimal_w:.3f}")
2. 社会网络分析¶
3. 跨组比较¶
🎓 学习路径¶
本地路径: /workspace/code-examples/BehaviouralEconomics/
创建时间: 2026-06-01
难度: ⭐⭐⭐ (中级实验分析)
**Behavioural Economics 中文导航 | 行为经济学实验分析**
[返回代码索引](../../README_UPDATED.md) | [决策科学资源大全](../../docs/resources/decision-science-comprehensive-resources.md)