Skip to content

Repository files navigation

Data Analysis Agent (DAA)

一个面向 CSV / Excel 表格的本地数据分析与实证研究 Agent。Streamlit 负责交互界面,pandas、statsmodels 和 scipy 负责本地计算;可选的 OpenAI 兼容模型只参与研究设计与结果解释,不执行任意代码。

Data Analysis Agent 界面概览

项目特点

  • 本地优先:未配置 API Key 时,数据清洗、业务分析、计量模型、诊断和导出仍可使用。
  • 结构化执行:LLM 生成的研究设计必须通过本地 AnalysisSpec 校验,并由白名单工具执行。
  • 诊断优先:模型运行成功不等于结论可靠;项目会报告平行趋势、共同支持、弱工具变量、共线性、聚类数量和收敛状态。
  • 数据最小化:启用 LLM 后默认只发送字段画像、数据字典、聚合统计和压缩后的模型结果,不发送原始明细行。
  • 多格式导出:支持 Markdown、Excel、Word、Python 和 Stata 复现材料。

主要能力

数据与业务分析

  • CSV / XLSX / XLS 导入,单文件默认上限 100 MB。
  • 列名规范化、缺失值清洗、数值文本/百分比转换和日期识别。
  • 利润率、成本率、ROAS、营销 ROI 等业务指标派生。
  • 数据画像、异常值、相关性、分组比较、趋势、贡献度和直接问数。
  • 岭回归预测基线与特征重要性。
  • 多表关联键推荐、关系识别、行数膨胀预估和安全阻断。

实证研究 Agent

  • 数据审计、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 桌面版时需要)

启动 Web 应用

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

可选:启用 LLM

使用 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:合成城市—年份面板数据,包含 PanelDataDataDictionarySuggestedModels

示例 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 -

构建 Windows 桌面版

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

About

Local-first CSV/Excel data analysis and econometric research agent built with Streamlit, pandas and statsmodels.

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages