一个面向 CSV / Excel 表格的本地数据分析与实证研究 Agent。Streamlit 负责交互界面,pandas、statsmodels 和 scipy 负责本地计算;可选的 OpenAI 兼容模型只参与研究设计与结果解释,不执行任意代码。
- 本地优先:未配置 API Key 时,数据清洗、业务分析、计量模型、诊断和导出仍可使用。
- 结构化执行:LLM 生成的研究设计必须通过本地
AnalysisSpec校验,并由白名单工具执行。 - 诊断优先:模型运行成功不等于结论可靠;项目会报告平行趋势、共同支持、弱工具变量、共线性、聚类数量和收敛状态。
- 数据最小化:启用 LLM 后默认只发送字段画像、数据字典、聚合统计和压缩后的模型结果,不发送原始明细行。
- 多格式导出:支持 Markdown、Excel、Word、Python 和 Stata 复现材料。
- CSV / XLSX / XLS 导入,单文件默认上限 100 MB。
- 列名规范化、缺失值清洗、数值文本/百分比转换和日期识别。
- 利润率、成本率、ROAS、营销 ROI 等业务指标派生。
- 数据画像、异常值、相关性、分组比较、趋势、贡献度和直接问数。
- 岭回归预测基线与特征重要性。
- 多表关联键推荐、关系识别、行数膨胀预估和安全阻断。
- 数据审计、VIF、OLS、固定效应和稳健/聚类标准误。
- 稳健性、异质性、DID、事件研究、平行趋势和安慰剂检验。
- PSM-DID:共同支持、caliper、带放回匹配、匹配权重和余额诊断。
- FE/RE Hausman、机制检验、矩阵 2SLS、第一阶段 F、部分 R²、秩检查和 Hansen J。
- 诊断感知的执行状态、阻断原因和可信度评分。
数据画像 / DataDictionary
↓
LLM 或本地规则生成研究设计
↓
本地 AnalysisSpec 校验
↓
用户确认因果识别步骤
↓
白名单工具执行本地计算
↓
诊断、可信度评分、解释与报告导出
只做/仅做 会限制工具范围,不要/不做/排除 会过滤对应工具。DID、事件研究、PSM-DID、Hausman、机制和 IV 等步骤会先展示研究设计,再等待用户确认。
- Python 3.12
- Node.js 20+(仅构建 Electron 桌面版时需要)
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
python -m streamlit run app.py --server.address 127.0.0.1也可以使用会自动选择可用端口并打开浏览器的启动器:
python launcher.py使用 OpenAI 官方服务时,只需设置 Key 和模型名;OPENAI_BASE_URL 留空即可。
$env:OPENAI_API_KEY='你的 API Key'
$env:OPENAI_MODEL='gpt-4.1-mini'
python -m streamlit run app.py --server.address 127.0.0.1使用其他 OpenAI 兼容服务时,再设置服务商提供的 /v1 地址:
$env:OPENAI_BASE_URL='https://your-provider.example/v1'
$env:OPENAI_MODEL='your-model-name'完整变量示例见 .env.example。项目不会把侧栏输入的 API Key 写入仓库文件。
sample_data/sales_demo.csv:合成销售业务数据。sample_data/DAA_panel_demo.xlsx:合成城市—年份面板数据,包含PanelData、DataDictionary和SuggestedModels。
示例 Excel 中的“距试点距离公里”在加入城市固定效应后没有个体内变化,因此 IV 会被阻断,而不是输出不可识别的估计结果。
安装开发依赖后运行:
python -m pip install -r requirements-dev.txt
.\scripts\check.ps1等价的单项命令:
python -m compileall -q app.py launcher.py src tests
python -m ruff check app.py launcher.py src tests
python -m pytest -q
node --check electron/main.js计量引擎自检:
@'
from src import econometrics
print(econometrics.run_self_check().to_string(index=False))
'@ | python -python -m pip install -r requirements-build.txt
.\scripts\build-desktop.ps1脚本会先通过 DAA.spec 构建 dist/DAA.exe,再在 electron/ 中安装依赖并生成桌面发行包。build/、dist/、electron/node_modules/ 和 electron/release/ 都是本地产物,不进入 Git。
.
├─ app.py # Streamlit UI 与交互编排
├─ launcher.py # 本地启动器 / PyInstaller 入口
├─ src/
│ ├─ data_tools.py # 清洗、画像、问数、预测和多表关联
│ ├─ econometrics.py # 计量模型、诊断与复现导出
│ ├─ agent.py # 业务分析 Agent
│ ├─ agent_schema.py # 结构化研究设计和工具白名单
│ ├─ econ_agent.py # 实证研究规划、校验和执行
│ ├─ agent_reporting.py # 可信度评分与 Agent 报告
│ ├─ llm.py # OpenAI 兼容 API 集成
│ └─ reporting.py # 通用报告导出
├─ tests/ # 数据、计量和 Agent 行为测试
├─ sample_data/ # 合成示例数据
├─ docs/ # 设计文档与发布清单
├─ electron/ # Electron 桌面壳
└─ scripts/ # 检查与构建脚本
更详细的实现说明见 docs/llm_agent_design.md。
- 显著性、DID、PSM 和 IV 输出不会自动证明因果关系成立。
- 平行趋势、工具变量外生性、排除限制、坏控制变量和样本选择仍需研究者论证。
- PSM 缺少共同支持或 caliper 内匹配样本时会阻断。
- 聚类数量较少、设计矩阵病态、共线性或模型不收敛会降低可信度评分。
- Stata do 文件是复现草稿,中文或非法变量名在正式运行前可能需要重命名。
提交问题或代码前请阅读 CONTRIBUTING.md。安全问题请参阅 SECURITY.md。
本项目采用 MIT License。
