Skip to content

回放分析 ​

agri_sandbox/analyze.py 直接读取各次实验的回放 SQLite,按"基线阶段 / 政策阶段"拆分并计算宏观指标与 处理效应,无需重跑仿真。

命令 ​

bash
python -m agri_sandbox.analyze [选项]
选项默认值说明
--results-dir PATH./results结果根目录(递归查找 **/run_meta.json)
--baseline-steps N取 run_meta.json覆盖基线阶段步数(用于与运行配置不一致时对齐)
--out PATH同 --results-dir摘要输出目录

它做什么 ​

  1. 递归扫描 results/**/run_meta.json,定位每个 (情景, 重复) 的 sqlite.db;
  2. 对 agri_policy_env_state 表按 step <= baseline_steps / step > baseline_steps 拆成 基线期与政策期,分别求各宏观指标均值;
  3. 对 agri_policy_agent_state 表,按农户计算"政策期均值 − 基线期均值"的农户级净收入处理效应;
  4. 按情景聚合多个重复,给出基线/政策均值、处理效应(绝对差 Δ 与相对变化 %)。

输出 ​

  • summary.json —— 结构化结果(每个情景的指标对象);
  • summary.csv —— 表格化结果,便于进一步绘图 / 统计;
  • 终端打印的 Markdown 摘要表,示例列:
指标基线政策处理效应(Δ)相对变化
平均家庭净收入(元/季)…………
平均补贴收入(元/季)…………
保险覆盖率…………
平均种植面积(亩)…………
全村补贴支出(元/季)…………

并附农户级净收入处理效应:均值 ± 标准差(n = 有前后两阶段数据的农户数)。

升级分析 analyze_full(bootstrap CI / 异质性 / 机制 / 稳健性 / 成本效益) ​

agri_sandbox/analyze_full.py 在基础分析之上提供统计升级(对应完整实验计划 §8):

bash
python -m agri_sandbox.analyze_full --results-dir results --bootstrap 2000
输出说明
summary_full.json / summary_full.csv完整结果(主效应 + CI + 异质性 + 机制 + 稳健性 + Pareto)
主效应Δ净收入 + 农户级 bootstrap 95% CI(b 可调)
异质性按经营规模分组(小农户/中农户/规模经营户,读自 core_agent_profile.profile.scale)
机制编码扫描决策日志/工作区文本,统计"风险预期"与"收益比较"关键词频次(无日志时提示跳过)
稳健性多重复(r>2)时剔除偏离中位数的极端重复后重算效应
成本效益单位补贴净收入增益 = 全村 Δ净收入 / 政策期补贴支出;粮食安全—增收 Pareto 点

回放审计 audit_replay(数据完整性检查) ​

agri_sandbox/audit_replay.py 检查回放数据的完整性与异常占比(完整实验计划 §7.3):

bash
python -m agri_sandbox.audit_replay --results-dir results    # 有异常退出码 1,可接入脚本门控

检查项:agent_state 行数 = 农户数 × 总季数、env_state 行数 = 总季数、 净收入 ≤ 0 占比、planted_area=0 占比、投保面积 > 种植面积占比、n_planting_farmers=0 季度数。

指标口径 ​

  • 结果指标:粮食播种面积占比、农户人均纯收入、务农劳动力占比、土地流转率、保险参与率。
  • 分配指标:收入基尼系数(按规模分组)。
  • 成本指标:单位增收的财政成本(补贴总额 / 增收额)。
  • 权衡:粮食安全指数对增收指数的 Pareto 前沿。

详见 研究方法 · 数据采集与分析方法。

基于 AgentSociety² 构建 · 仅供科研沙盒原型用途,经济学参数为示意值