aigroup-econ-mcp 0.1.1__tar.gz → 0.1.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of aigroup-econ-mcp might be problematic. Click here for more details.
- {aigroup_econ_mcp-0.1.1 → aigroup_econ_mcp-0.1.2}/PKG-INFO +1 -1
- aigroup_econ_mcp-0.1.2/PUBLISHING.md +109 -0
- aigroup_econ_mcp-0.1.2/RELEASE_NOTES_v0.1.1.md +121 -0
- aigroup_econ_mcp-0.1.2/RELEASE_NOTES_v0.1.2.md +83 -0
- {aigroup_econ_mcp-0.1.1 → aigroup_econ_mcp-0.1.2}/pyproject.toml +1 -1
- {aigroup_econ_mcp-0.1.1 → aigroup_econ_mcp-0.1.2}/src/aigroup_econ_mcp/__init__.py +1 -1
- {aigroup_econ_mcp-0.1.1 → aigroup_econ_mcp-0.1.2}/src/aigroup_econ_mcp/server.py +368 -21
- {aigroup_econ_mcp-0.1.1 → aigroup_econ_mcp-0.1.2}/.gitignore +0 -0
- {aigroup_econ_mcp-0.1.1 → aigroup_econ_mcp-0.1.2}/BUG_FIX_SUMMARY.md +0 -0
- {aigroup_econ_mcp-0.1.1 → aigroup_econ_mcp-0.1.2}/CHANGELOG.md +0 -0
- {aigroup_econ_mcp-0.1.1 → aigroup_econ_mcp-0.1.2}/LICENSE +0 -0
- {aigroup_econ_mcp-0.1.1 → aigroup_econ_mcp-0.1.2}/README.md +0 -0
- {aigroup_econ_mcp-0.1.1 → aigroup_econ_mcp-0.1.2}/comprehensive_test.py +0 -0
- {aigroup_econ_mcp-0.1.1 → aigroup_econ_mcp-0.1.2}/examples/README.md +0 -0
- {aigroup_econ_mcp-0.1.1 → aigroup_econ_mcp-0.1.2}/examples/basic_usage.py +0 -0
- {aigroup_econ_mcp-0.1.1 → aigroup_econ_mcp-0.1.2}/examples/mcp_client_example.py +0 -0
- {aigroup_econ_mcp-0.1.1 → aigroup_econ_mcp-0.1.2}/final_test.py +0 -0
- {aigroup_econ_mcp-0.1.1 → aigroup_econ_mcp-0.1.2}/quick_test.py +0 -0
- {aigroup_econ_mcp-0.1.1 → aigroup_econ_mcp-0.1.2}/simple_test.py +0 -0
- {aigroup_econ_mcp-0.1.1 → aigroup_econ_mcp-0.1.2}/src/aigroup_econ_mcp/cli.py +0 -0
- {aigroup_econ_mcp-0.1.1 → aigroup_econ_mcp-0.1.2}/src/aigroup_econ_mcp/tools/__init__.py +0 -0
- {aigroup_econ_mcp-0.1.1 → aigroup_econ_mcp-0.1.2}/src/aigroup_econ_mcp/tools/regression.py +0 -0
- {aigroup_econ_mcp-0.1.1 → aigroup_econ_mcp-0.1.2}/src/aigroup_econ_mcp/tools/statistics.py +0 -0
- {aigroup_econ_mcp-0.1.1 → aigroup_econ_mcp-0.1.2}/src/aigroup_econ_mcp/tools/time_series.py +0 -0
- {aigroup_econ_mcp-0.1.1 → aigroup_econ_mcp-0.1.2}/test_error.txt +0 -0
- {aigroup_econ_mcp-0.1.1 → aigroup_econ_mcp-0.1.2}/test_mcp.py +0 -0
- {aigroup_econ_mcp-0.1.1 → aigroup_econ_mcp-0.1.2}/test_mcp_connection.py +0 -0
- {aigroup_econ_mcp-0.1.1 → aigroup_econ_mcp-0.1.2}/test_mcp_features.py +0 -0
- {aigroup_econ_mcp-0.1.1 → aigroup_econ_mcp-0.1.2}/test_output.txt +0 -0
- {aigroup_econ_mcp-0.1.1 → aigroup_econ_mcp-0.1.2}/tests/__init__.py +0 -0
- {aigroup_econ_mcp-0.1.1 → aigroup_econ_mcp-0.1.2}/tests/test_econometrics.py +0 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# PyPI 发布指南
|
|
2
|
+
|
|
3
|
+
## 已完成的准备工作
|
|
4
|
+
|
|
5
|
+
✅ 版本号已更新到 0.1.1
|
|
6
|
+
✅ 包已成功构建
|
|
7
|
+
✅ 创建了更新日志 (CHANGELOG.md)
|
|
8
|
+
✅ 所有功能测试通过
|
|
9
|
+
|
|
10
|
+
## 构建产物
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
dist/
|
|
14
|
+
├── aigroup_econ_mcp-0.1.1.tar.gz # 源码分发包
|
|
15
|
+
└── aigroup_econ_mcp-0.1.1-py3-none-any.whl # 二进制wheel包
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## 发布到PyPI
|
|
19
|
+
|
|
20
|
+
### 方法1: 使用uv发布(推荐)
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# 发布到PyPI(需要PyPI账号和Token)
|
|
24
|
+
uv publish
|
|
25
|
+
|
|
26
|
+
# 或指定token
|
|
27
|
+
uv publish --token YOUR_PYPI_TOKEN
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### 方法2: 使用twine发布
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
# 安装twine
|
|
34
|
+
pip install twine
|
|
35
|
+
|
|
36
|
+
# 检查包
|
|
37
|
+
twine check dist/*
|
|
38
|
+
|
|
39
|
+
# 上传到TestPyPI(测试)
|
|
40
|
+
twine upload --repository testpypi dist/*
|
|
41
|
+
|
|
42
|
+
# 上传到PyPI(正式)
|
|
43
|
+
twine upload dist/*
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## 配置PyPI凭据
|
|
47
|
+
|
|
48
|
+
### 选项1: 使用环境变量
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Windows PowerShell
|
|
52
|
+
$env:UV_PUBLISH_TOKEN="pypi-..."
|
|
53
|
+
|
|
54
|
+
# Linux/Mac
|
|
55
|
+
export UV_PUBLISH_TOKEN="pypi-..."
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 选项2: 使用.pypirc文件
|
|
59
|
+
|
|
60
|
+
创建 `~/.pypirc` 文件:
|
|
61
|
+
|
|
62
|
+
```ini
|
|
63
|
+
[pypi]
|
|
64
|
+
username = __token__
|
|
65
|
+
password = pypi-YOUR_TOKEN_HERE
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## 获取PyPI Token
|
|
69
|
+
|
|
70
|
+
1. 访问 https://pypi.org/manage/account/token/
|
|
71
|
+
2. 登录你的PyPI账号
|
|
72
|
+
3. 创建新的API Token
|
|
73
|
+
4. 复制token(格式: pypi-...)
|
|
74
|
+
|
|
75
|
+
## 发布后验证
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
# 安装发布的包
|
|
79
|
+
pip install aigroup-econ-mcp
|
|
80
|
+
|
|
81
|
+
# 或使用uvx
|
|
82
|
+
uvx aigroup-econ-mcp --version
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## 发布检查清单
|
|
86
|
+
|
|
87
|
+
- [x] 版本号已更新
|
|
88
|
+
- [x] 包已构建成功
|
|
89
|
+
- [x] 所有测试通过
|
|
90
|
+
- [x] README.md完整
|
|
91
|
+
- [x] LICENSE存在
|
|
92
|
+
- [x] CHANGELOG.md已创建
|
|
93
|
+
- [ ] PyPI凭据已配置
|
|
94
|
+
- [ ] 执行发布命令
|
|
95
|
+
- [ ] 验证安装
|
|
96
|
+
|
|
97
|
+
## 注意事项
|
|
98
|
+
|
|
99
|
+
⚠️ **重要**:
|
|
100
|
+
- 发布到PyPI后不能删除或修改
|
|
101
|
+
- 建议先发布到TestPyPI测试
|
|
102
|
+
- 确保版本号遵循语义化版本规范
|
|
103
|
+
- 每次发布必须使用新的版本号
|
|
104
|
+
|
|
105
|
+
## 快速发布命令
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
# 一键发布(需要已配置token)
|
|
109
|
+
cd d:/aigroup-econ-mcp && uv publish
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# aigroup-econ-mcp v0.1.1 发布说明
|
|
2
|
+
|
|
3
|
+
## 🎉 发布信息
|
|
4
|
+
|
|
5
|
+
- **版本**: 0.1.1
|
|
6
|
+
- **发布日期**: 2025-10-25
|
|
7
|
+
- **PyPI链接**: https://pypi.org/project/aigroup-econ-mcp/
|
|
8
|
+
|
|
9
|
+
## 📦 已发布文件
|
|
10
|
+
|
|
11
|
+
✅ aigroup_econ_mcp-0.1.0-py3-none-any.whl (16.1 KB)
|
|
12
|
+
✅ aigroup_econ_mcp-0.1.0.tar.gz (26.9 KB)
|
|
13
|
+
✅ aigroup_econ_mcp-0.1.1-py3-none-any.whl (16.3 KB)
|
|
14
|
+
✅ aigroup_econ_mcp-0.1.1.tar.gz (28.5 KB)
|
|
15
|
+
|
|
16
|
+
## 🐛 重要修复
|
|
17
|
+
|
|
18
|
+
### 修复MCP连接失败的严重Bug
|
|
19
|
+
|
|
20
|
+
**问题**: 运行 `uvx aigroup-econ-mcp` 时出现 "MCP error -32000: Connection closed"
|
|
21
|
+
|
|
22
|
+
**根本原因**: CLI入口点结构混乱
|
|
23
|
+
- 同时使用 `@click.command()` 和 `@click.group()`
|
|
24
|
+
- 默认行为显示帮助而非启动MCP服务器
|
|
25
|
+
- MCP客户端期望stdio通信,但收到帮助文本导致连接关闭
|
|
26
|
+
|
|
27
|
+
**解决方案**:
|
|
28
|
+
- ✅ 完全重构CLI入口点为单一命令结构
|
|
29
|
+
- ✅ 确保默认行为正确启动stdio模式
|
|
30
|
+
- ✅ 修复Windows UTF-8编码问题
|
|
31
|
+
- ✅ 保留所有功能(版本、调试、多传输协议)
|
|
32
|
+
|
|
33
|
+
## ✅ 功能验证
|
|
34
|
+
|
|
35
|
+
所有7项功能测试通过:
|
|
36
|
+
|
|
37
|
+
| 测试项 | 状态 | 说明 |
|
|
38
|
+
|-------|------|------|
|
|
39
|
+
| 初始化服务器 | ✓ | MCP协议握手成功 |
|
|
40
|
+
| 工具列表 | ✓ | 5个计量经济学工具 |
|
|
41
|
+
| 资源列表 | ✓ | 资源系统正常 |
|
|
42
|
+
| 提示词列表 | ✓ | 1个分析模板 |
|
|
43
|
+
| 描述性统计 | ✓ | 计算成功 |
|
|
44
|
+
| 相关性分析 | ✓ | 分析成功 |
|
|
45
|
+
| 获取资源 | ✓ | 数据获取成功 |
|
|
46
|
+
|
|
47
|
+
## 📊 测试结果示例
|
|
48
|
+
|
|
49
|
+
### 描述性统计输出
|
|
50
|
+
```
|
|
51
|
+
均值: 0.0060
|
|
52
|
+
标准差: 0.0131
|
|
53
|
+
相关系数矩阵:
|
|
54
|
+
stock_returns market_returns
|
|
55
|
+
stock_returns 1.0000 0.9951
|
|
56
|
+
market_returns 0.9951 1.0000
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### 相关性分析输出
|
|
60
|
+
```
|
|
61
|
+
Pearson相关系数矩阵:
|
|
62
|
+
GDP_Growth Inflation Unemployment
|
|
63
|
+
GDP_Growth 1.0000 -0.9492 -0.3322
|
|
64
|
+
Inflation -0.9492 1.0000 0.3514
|
|
65
|
+
Unemployment -0.3322 0.3514 1.0000
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## 🚀 安装使用
|
|
69
|
+
|
|
70
|
+
### 从PyPI安装(推荐)
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
# 使用uvx(推荐)
|
|
74
|
+
uvx aigroup-econ-mcp
|
|
75
|
+
|
|
76
|
+
# 使用pip
|
|
77
|
+
pip install aigroup-econ-mcp
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 与Claude Desktop集成
|
|
81
|
+
|
|
82
|
+
在配置文件中添加:
|
|
83
|
+
|
|
84
|
+
```json
|
|
85
|
+
{
|
|
86
|
+
"mcpServers": {
|
|
87
|
+
"aigroup-econ-mcp": {
|
|
88
|
+
"command": "uvx",
|
|
89
|
+
"args": ["aigroup-econ-mcp"]
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## 📝 可用工具
|
|
96
|
+
|
|
97
|
+
1. **descriptive_statistics** - 描述性统计分析
|
|
98
|
+
2. **ols_regression** - OLS回归分析
|
|
99
|
+
3. **hypothesis_testing** - 假设检验
|
|
100
|
+
4. **time_series_analysis** - 时间序列分析
|
|
101
|
+
5. **correlation_analysis** - 相关性分析
|
|
102
|
+
|
|
103
|
+
## 🔗 相关链接
|
|
104
|
+
|
|
105
|
+
- **PyPI**: https://pypi.org/project/aigroup-econ-mcp/
|
|
106
|
+
- **GitHub**: https://github.com/aigroup/aigroup-econ-mcp
|
|
107
|
+
- **文档**: [README.md](README.md)
|
|
108
|
+
- **更新日志**: [CHANGELOG.md](CHANGELOG.md)
|
|
109
|
+
|
|
110
|
+
## 📧 联系方式
|
|
111
|
+
|
|
112
|
+
- **Email**: jackdark425@gmail.com
|
|
113
|
+
- **Issues**: https://github.com/aigroup/aigroup-econ-mcp/issues
|
|
114
|
+
|
|
115
|
+
## 🙏 致谢
|
|
116
|
+
|
|
117
|
+
感谢所有用户的支持和反馈!
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
**注意**: PyPI索引可能需要几分钟更新。如果遇到安装问题,请稍后重试或使用 `--refresh` 标志。
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# 🎉 aigroup-econ-mcp v0.1.2 发布说明
|
|
2
|
+
|
|
3
|
+
## 📅 发布日期
|
|
4
|
+
2025-01-25
|
|
5
|
+
|
|
6
|
+
## ✨ 主要更新
|
|
7
|
+
|
|
8
|
+
### 📚 文档增强
|
|
9
|
+
本次更新大幅增强了所有MCP工具的说明文档,显著提升大模型的调用准确性和效率。
|
|
10
|
+
|
|
11
|
+
#### 1. descriptive_statistics(描述性统计)
|
|
12
|
+
- ✅ 新增详细的参数说明和数据格式示例
|
|
13
|
+
- ✅ 补充了数据要求说明(样本量、格式、缺失值处理)
|
|
14
|
+
- ✅ 详细解释输出指标含义(偏度、峰度、相关系数等)
|
|
15
|
+
- ✅ 提供使用场景和注意事项
|
|
16
|
+
|
|
17
|
+
#### 2. ols_regression(OLS回归分析)
|
|
18
|
+
- ✅ 详细说明因变量和自变量的数据格式
|
|
19
|
+
- ✅ 提供二维列表的具体示例
|
|
20
|
+
- ✅ 解释R²、F统计量、AIC/BIC等指标的经济学含义
|
|
21
|
+
- ✅ 说明多重共线性等常见问题及解决方案
|
|
22
|
+
|
|
23
|
+
#### 3. hypothesis_testing(假设检验)
|
|
24
|
+
- ✅ 区分单样本t检验和双样本t检验的应用场景
|
|
25
|
+
- ✅ 详细说明ADF检验用于时间序列平稳性检验
|
|
26
|
+
- ✅ 解释p值的统计学含义和显著性判断标准
|
|
27
|
+
- ✅ 提供实际应用场景示例(新药测试、教学方法对比等)
|
|
28
|
+
|
|
29
|
+
#### 4. time_series_analysis(时间序列分析)
|
|
30
|
+
- ✅ 说明时间序列数据的格式要求和排序规则
|
|
31
|
+
- ✅ 详细解释ADF检验、ACF、PACF的含义
|
|
32
|
+
- ✅ 提供结果解读指南和模型选择建议
|
|
33
|
+
- ✅ 说明如何根据ACF/PACF识别AR、MA、ARMA模型
|
|
34
|
+
|
|
35
|
+
#### 5. correlation_analysis(相关性分析)
|
|
36
|
+
- ✅ 详细对比pearson、spearman、kendall三种方法的适用场景
|
|
37
|
+
- ✅ 提供相关系数的标准解读方法
|
|
38
|
+
- ✅ 强调"相关性≠因果关系"的重要概念
|
|
39
|
+
- ✅ 提供多重共线性检测等实际应用场景
|
|
40
|
+
|
|
41
|
+
## 🎯 改进效果
|
|
42
|
+
|
|
43
|
+
大模型在使用本工具时将能够:
|
|
44
|
+
1. **准确理解参数**:每个参数都有详细说明和示例格式
|
|
45
|
+
2. **正确选择工具**:根据分析任务选择合适的工具
|
|
46
|
+
3. **提供正确输入**:遵循规定的数据格式和要求
|
|
47
|
+
4. **解释输出结果**:理解每个统计指标的含义
|
|
48
|
+
5. **避免常见错误**:注意事项说明帮助避免误用
|
|
49
|
+
|
|
50
|
+
## 📋 文档结构
|
|
51
|
+
|
|
52
|
+
每个工具的说明现在都包含:
|
|
53
|
+
- 📊 **功能说明**:清晰描述工具的作用和原理
|
|
54
|
+
- 📈 **输出指标**:详细解释每个返回值的统计学含义
|
|
55
|
+
- 💡 **使用场景**:提供经济学/统计学实际应用示例
|
|
56
|
+
- ⚠️ **注意事项**:说明常见问题、限制和最佳实践
|
|
57
|
+
- 📖 **结果解读**:帮助理解和应用输出结果
|
|
58
|
+
|
|
59
|
+
## 🔧 技术改进
|
|
60
|
+
|
|
61
|
+
- 使用 `Annotated` 和 `Field` 为每个参数添加详细的描述信息
|
|
62
|
+
- 提供多种数据格式示例,覆盖常见使用场景
|
|
63
|
+
- 添加参数验证说明,帮助用户提供正确的输入
|
|
64
|
+
- 统一文档风格,使用emoji和结构化格式提高可读性
|
|
65
|
+
|
|
66
|
+
## 📦 安装升级
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# 使用pip安装或升级
|
|
70
|
+
pip install --upgrade aigroup-econ-mcp
|
|
71
|
+
|
|
72
|
+
# 使用uv安装或升级
|
|
73
|
+
uv pip install --upgrade aigroup-econ-mcp
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## 🙏 致谢
|
|
77
|
+
|
|
78
|
+
感谢社区用户的反馈和建议,帮助我们持续改进工具的易用性。
|
|
79
|
+
|
|
80
|
+
## 📞 支持
|
|
81
|
+
|
|
82
|
+
- GitHub Issues: https://github.com/aigroup/aigroup-econ-mcp/issues
|
|
83
|
+
- 邮箱: jackdark425@gmail.com
|
|
@@ -152,12 +152,54 @@ def economic_analysis_prompt(data_description: str, analysis_type: str = "descri
|
|
|
152
152
|
@mcp.tool()
|
|
153
153
|
async def descriptive_statistics(
|
|
154
154
|
ctx: Context[ServerSession, AppContext],
|
|
155
|
-
data:
|
|
155
|
+
data: Annotated[
|
|
156
|
+
Dict[str, List[float]],
|
|
157
|
+
Field(
|
|
158
|
+
description="""数据字典,格式为 {变量名: [数值列表]}
|
|
159
|
+
|
|
160
|
+
示例格式:
|
|
161
|
+
{
|
|
162
|
+
"GDP增长率": [3.2, 2.8, 3.5, 2.9],
|
|
163
|
+
"通货膨胀率": [2.1, 2.3, 1.9, 2.4],
|
|
164
|
+
"失业率": [4.5, 4.2, 4.0, 4.3]
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
要求:
|
|
168
|
+
- 至少包含一个变量
|
|
169
|
+
- 每个变量的数据点数量应相同
|
|
170
|
+
- 数值必须为浮点数或整数
|
|
171
|
+
- 建议样本量 >= 30 以获得可靠的统计推断"""
|
|
172
|
+
)
|
|
173
|
+
]
|
|
156
174
|
) -> Annotated[CallToolResult, DescriptiveStatsResult]:
|
|
157
175
|
"""计算描述性统计量
|
|
176
|
+
|
|
177
|
+
📊 功能说明:
|
|
178
|
+
对输入数据进行全面的描述性统计分析,包括集中趋势、离散程度、分布形状等指标。
|
|
179
|
+
|
|
180
|
+
📈 输出指标:
|
|
181
|
+
- 样本数量 (count)
|
|
182
|
+
- 均值 (mean):数据的平均水平
|
|
183
|
+
- 标准差 (std):数据的离散程度
|
|
184
|
+
- 最小值/最大值 (min/max):数据的取值范围
|
|
185
|
+
- 中位数 (median):数据的中间值,对异常值不敏感
|
|
186
|
+
- 偏度 (skewness):分布的对称性,0表示对称,>0右偏,<0左偏
|
|
187
|
+
- 峰度 (kurtosis):分布的尖峭程度,0表示正态分布
|
|
188
|
+
- 相关系数矩阵:变量间的线性相关关系
|
|
189
|
+
|
|
190
|
+
💡 使用场景:
|
|
191
|
+
- 初步了解数据的分布特征
|
|
192
|
+
- 检查数据质量和异常值
|
|
193
|
+
- 为后续建模提供基础信息
|
|
194
|
+
- 比较不同变量的统计特征
|
|
195
|
+
|
|
196
|
+
⚠️ 注意事项:
|
|
197
|
+
- 偏度绝对值 > 1 表示数据明显偏斜,可能需要转换
|
|
198
|
+
- 峰度绝对值 > 3 表示尖峭或扁平分布
|
|
199
|
+
- 相关系数 > 0.8 表示强相关,可能存在多重共线性
|
|
158
200
|
|
|
159
201
|
Args:
|
|
160
|
-
data:
|
|
202
|
+
data: 数据字典,键为变量名,值为数值列表
|
|
161
203
|
ctx: MCP上下文对象
|
|
162
204
|
"""
|
|
163
205
|
await ctx.info(f"开始计算描述性统计,处理 {len(data)} 个变量")
|
|
@@ -211,16 +253,85 @@ async def descriptive_statistics(
|
|
|
211
253
|
@mcp.tool()
|
|
212
254
|
async def ols_regression(
|
|
213
255
|
ctx: Context[ServerSession, AppContext],
|
|
214
|
-
y_data:
|
|
215
|
-
|
|
216
|
-
|
|
256
|
+
y_data: Annotated[
|
|
257
|
+
List[float],
|
|
258
|
+
Field(
|
|
259
|
+
description="""因变量数据(被解释变量/响应变量)
|
|
260
|
+
|
|
261
|
+
示例:[12000, 13500, 11800, 14200, 15100]
|
|
262
|
+
|
|
263
|
+
要求:
|
|
264
|
+
- 必须为数值列表
|
|
265
|
+
- 长度必须与自变量观测数量一致
|
|
266
|
+
- 不能包含缺失值(NaN)
|
|
267
|
+
- 建议样本量 >= 30"""
|
|
268
|
+
)
|
|
269
|
+
],
|
|
270
|
+
x_data: Annotated[
|
|
271
|
+
List[List[float]],
|
|
272
|
+
Field(
|
|
273
|
+
description="""自变量数据(解释变量/预测变量),二维列表格式
|
|
274
|
+
|
|
275
|
+
示例格式(3个观测,2个自变量):
|
|
276
|
+
[
|
|
277
|
+
[800, 5.2], # 第1个观测的自变量值
|
|
278
|
+
[900, 5.8], # 第2个观测的自变量值
|
|
279
|
+
[750, 4.9] # 第3个观测的自变量值
|
|
280
|
+
]
|
|
281
|
+
|
|
282
|
+
要求:
|
|
283
|
+
- 外层列表:每个元素代表一个观测
|
|
284
|
+
- 内层列表:该观测的所有自变量值
|
|
285
|
+
- 所有观测的自变量数量必须相同
|
|
286
|
+
- 观测数量必须与y_data长度一致
|
|
287
|
+
- 自变量数量建议 < 观测数量/10(避免过拟合)"""
|
|
288
|
+
)
|
|
289
|
+
],
|
|
290
|
+
feature_names: Annotated[
|
|
291
|
+
Optional[List[str]],
|
|
292
|
+
Field(
|
|
293
|
+
default=None,
|
|
294
|
+
description="""自变量名称列表(可选)
|
|
295
|
+
|
|
296
|
+
示例:["广告支出", "价格指数"]
|
|
297
|
+
|
|
298
|
+
说明:
|
|
299
|
+
- 如果不提供,将自动命名为 x1, x2, x3...
|
|
300
|
+
- 名称数量必须与自变量数量一致
|
|
301
|
+
- 建议使用有意义的名称以便解释结果"""
|
|
302
|
+
)
|
|
303
|
+
] = None
|
|
217
304
|
) -> Annotated[CallToolResult, OLSRegressionResult]:
|
|
218
|
-
"""
|
|
305
|
+
"""执行普通最小二乘法(OLS)回归分析
|
|
306
|
+
|
|
307
|
+
📊 功能说明:
|
|
308
|
+
使用最小二乘法估计线性回归模型,分析因变量与自变量之间的线性关系。
|
|
309
|
+
模型形式:Y = β₀ + β₁X₁ + β₂X₂ + ... + βₖXₖ + ε
|
|
310
|
+
|
|
311
|
+
📈 输出指标:
|
|
312
|
+
- R²:决定系数,取值0-1,衡量模型拟合优度
|
|
313
|
+
- 调整R²:考虑自变量数量的修正R²
|
|
314
|
+
- F统计量及p值:检验模型整体显著性
|
|
315
|
+
- AIC/BIC:信息准则,用于模型比较,越小越好
|
|
316
|
+
- 回归系数:每个自变量的估计值、标准误、t统计量、p值、置信区间
|
|
317
|
+
|
|
318
|
+
💡 使用场景:
|
|
319
|
+
- 因果关系分析(如广告支出对销售额的影响)
|
|
320
|
+
- 预测建模(如根据经济指标预测GDP)
|
|
321
|
+
- 控制变量分析(如研究教育回报率时控制工作经验)
|
|
322
|
+
- 假设检验(如检验某变量是否对结果有显著影响)
|
|
323
|
+
|
|
324
|
+
⚠️ 注意事项:
|
|
325
|
+
- R² > 0.7 表示拟合良好,但需警惕过拟合
|
|
326
|
+
- p值 < 0.05 表示该系数在5%水平显著
|
|
327
|
+
- 需检查残差的正态性、同方差性和独立性假设
|
|
328
|
+
- 自变量间高度相关(相关系数>0.8)可能导致多重共线性问题
|
|
329
|
+
- 样本量过小可能导致不可靠的估计结果
|
|
219
330
|
|
|
220
331
|
Args:
|
|
221
332
|
y_data: 因变量数据
|
|
222
333
|
x_data: 自变量数据,每行一个观测
|
|
223
|
-
feature_names:
|
|
334
|
+
feature_names: 自变量名称(可选)
|
|
224
335
|
ctx: MCP上下文对象
|
|
225
336
|
"""
|
|
226
337
|
await ctx.info(f"开始OLS回归分析,样本大小: {len(y_data)},自变量数量: {len(x_data[0]) if x_data else 0}")
|
|
@@ -286,16 +397,97 @@ async def ols_regression(
|
|
|
286
397
|
@mcp.tool()
|
|
287
398
|
async def hypothesis_testing(
|
|
288
399
|
ctx: Context[ServerSession, AppContext],
|
|
289
|
-
data1:
|
|
290
|
-
|
|
291
|
-
|
|
400
|
+
data1: Annotated[
|
|
401
|
+
List[float],
|
|
402
|
+
Field(
|
|
403
|
+
description="""第一组数据或单一样本数据
|
|
404
|
+
|
|
405
|
+
示例:[3.2, 2.8, 3.5, 2.9, 3.1, 2.7, 3.3]
|
|
406
|
+
|
|
407
|
+
要求:
|
|
408
|
+
- 必须为数值列表
|
|
409
|
+
- 不能包含缺失值
|
|
410
|
+
- 建议样本量 >= 30(大样本)
|
|
411
|
+
- t检验要求数据近似正态分布"""
|
|
412
|
+
)
|
|
413
|
+
],
|
|
414
|
+
data2: Annotated[
|
|
415
|
+
Optional[List[float]],
|
|
416
|
+
Field(
|
|
417
|
+
default=None,
|
|
418
|
+
description="""第二组数据(可选,用于双样本检验)
|
|
419
|
+
|
|
420
|
+
示例:[2.5, 2.9, 2.3, 2.6, 2.8]
|
|
421
|
+
|
|
422
|
+
说明:
|
|
423
|
+
- 仅在双样本t检验时需要提供
|
|
424
|
+
- 单样本t检验时保持为None
|
|
425
|
+
- 两组数据可以有不同的样本量
|
|
426
|
+
- ADF检验不需要第二组数据"""
|
|
427
|
+
)
|
|
428
|
+
] = None,
|
|
429
|
+
test_type: Annotated[
|
|
430
|
+
str,
|
|
431
|
+
Field(
|
|
432
|
+
default="t_test",
|
|
433
|
+
description="""假设检验类型
|
|
434
|
+
|
|
435
|
+
可选值:
|
|
436
|
+
- "t_test": t检验(默认)
|
|
437
|
+
* 单样本t检验:检验样本均值是否等于0(data2=None)
|
|
438
|
+
* 双样本t检验:检验两组样本均值是否相等(提供data2)
|
|
439
|
+
|
|
440
|
+
- "adf": 增强迪基-富勒检验(Augmented Dickey-Fuller Test)
|
|
441
|
+
* 用于检验时间序列的平稳性
|
|
442
|
+
* 原假设:存在单位根(非平稳)
|
|
443
|
+
* p<0.05 拒绝原假设,序列平稳
|
|
444
|
+
|
|
445
|
+
使用建议:
|
|
446
|
+
- 比较均值差异 → 使用 t_test
|
|
447
|
+
- 检验时间序列平稳性 → 使用 adf"""
|
|
448
|
+
)
|
|
449
|
+
] = "t_test"
|
|
292
450
|
) -> Annotated[CallToolResult, HypothesisTestResult]:
|
|
293
|
-
"""
|
|
451
|
+
"""执行统计假设检验
|
|
452
|
+
|
|
453
|
+
📊 功能说明:
|
|
454
|
+
对数据进行统计假设检验,判断样本是否支持某个统计假设。
|
|
455
|
+
|
|
456
|
+
📈 检验类型详解:
|
|
457
|
+
|
|
458
|
+
1️⃣ t检验 (t_test):
|
|
459
|
+
- 单样本:H₀: μ = 0 vs H₁: μ ≠ 0
|
|
460
|
+
- 双样本:H₀: μ₁ = μ₂ vs H₁: μ₁ ≠ μ₂
|
|
461
|
+
- 适用于小样本(n<30)且数据近似正态分布
|
|
462
|
+
|
|
463
|
+
2️⃣ ADF检验 (adf):
|
|
464
|
+
- H₀: 序列存在单位根(非平稳)
|
|
465
|
+
- H₁: 序列不存在单位根(平稳)
|
|
466
|
+
- 用于时间序列分析前的平稳性检验
|
|
467
|
+
|
|
468
|
+
📊 输出指标:
|
|
469
|
+
- 检验统计量:用于判断是否拒绝原假设
|
|
470
|
+
- p值:显著性水平,<0.05表示在5%水平显著
|
|
471
|
+
- 是否显著:基于5%显著性水平的判断
|
|
472
|
+
- 置信区间:参数的可能取值范围(仅t检验)
|
|
473
|
+
|
|
474
|
+
💡 使用场景:
|
|
475
|
+
- 检验新药是否有效(单样本t检验)
|
|
476
|
+
- 比较两种教学方法的效果差异(双样本t检验)
|
|
477
|
+
- 检验股价序列是否平稳(ADF检验)
|
|
478
|
+
- 验证经济理论假说(如购买力平价理论)
|
|
479
|
+
|
|
480
|
+
⚠️ 注意事项:
|
|
481
|
+
- p值 < 0.05:拒绝原假设(结果显著)
|
|
482
|
+
- p值 >= 0.05:不能拒绝原假设(结果不显著)
|
|
483
|
+
- t检验要求数据近似正态分布
|
|
484
|
+
- 小样本(<30)时t检验结果可能不可靠
|
|
485
|
+
- ADF检验中p<0.05表示序列平稳(拒绝非平稳假设)
|
|
294
486
|
|
|
295
487
|
Args:
|
|
296
488
|
data1: 第一组数据
|
|
297
|
-
data2:
|
|
298
|
-
test_type:
|
|
489
|
+
data2: 第二组数据(可选,用于双样本检验)
|
|
490
|
+
test_type: 检验类型(t_test或adf)
|
|
299
491
|
ctx: MCP上下文对象
|
|
300
492
|
"""
|
|
301
493
|
await ctx.info(f"开始假设检验: {test_type}")
|
|
@@ -359,12 +551,82 @@ async def hypothesis_testing(
|
|
|
359
551
|
@mcp.tool()
|
|
360
552
|
async def time_series_analysis(
|
|
361
553
|
ctx: Context[ServerSession, AppContext],
|
|
362
|
-
data:
|
|
554
|
+
data: Annotated[
|
|
555
|
+
List[float],
|
|
556
|
+
Field(
|
|
557
|
+
description="""时间序列数据(按时间顺序排列)
|
|
558
|
+
|
|
559
|
+
示例格式:
|
|
560
|
+
[12000, 13500, 11800, 14200, 15100, 14800, 16200, 15900]
|
|
561
|
+
# 表示连续8期的观测值,如月度销售额
|
|
562
|
+
|
|
563
|
+
要求:
|
|
564
|
+
- 必须按时间顺序排列(从早到晚)
|
|
565
|
+
- 建议至少30个观测点以获得可靠结果
|
|
566
|
+
- 数据应等间隔采样(如日度、月度、季度)
|
|
567
|
+
- 不能包含缺失值
|
|
568
|
+
- 数据量越大,ACF/PACF分析越准确
|
|
569
|
+
|
|
570
|
+
应用示例:
|
|
571
|
+
- 股票价格序列
|
|
572
|
+
- GDP季度数据
|
|
573
|
+
- 月度销售额
|
|
574
|
+
- 日均气温数据"""
|
|
575
|
+
)
|
|
576
|
+
]
|
|
363
577
|
) -> Annotated[CallToolResult, TimeSeriesStatsResult]:
|
|
364
|
-
"""
|
|
578
|
+
"""时间序列统计分析
|
|
579
|
+
|
|
580
|
+
📊 功能说明:
|
|
581
|
+
对时间序列数据进行全面的统计分析,包括平稳性检验和自相关分析。
|
|
582
|
+
|
|
583
|
+
📈 分析内容:
|
|
584
|
+
|
|
585
|
+
1️⃣ ADF单位根检验(Augmented Dickey-Fuller Test):
|
|
586
|
+
- 检验序列是否平稳
|
|
587
|
+
- H₀: 存在单位根(序列非平稳)
|
|
588
|
+
- p < 0.05:拒绝原假设,序列平稳
|
|
589
|
+
- 平稳性是时间序列建模的基础
|
|
590
|
+
|
|
591
|
+
2️⃣ 自相关函数(ACF):
|
|
592
|
+
- 衡量序列与其滞后值之间的相关性
|
|
593
|
+
- 用于识别MA模型的阶数
|
|
594
|
+
- 指数衰减→AR过程;q阶截尾→MA(q)过程
|
|
595
|
+
|
|
596
|
+
3️⃣ 偏自相关函数(PACF):
|
|
597
|
+
- 剔除中间滞后项影响后的相关性
|
|
598
|
+
- 用于识别AR模型的阶数
|
|
599
|
+
- p阶截尾→AR(p)过程
|
|
600
|
+
|
|
601
|
+
📊 输出指标:
|
|
602
|
+
- ADF统计量:越负越可能平稳
|
|
603
|
+
- ADF p值:<0.05表示序列平稳
|
|
604
|
+
- 平稳性判断:基于5%显著性水平
|
|
605
|
+
- ACF值:前20阶(或更少)的自相关系数
|
|
606
|
+
- PACF值:前20阶(或更少)的偏自相关系数
|
|
607
|
+
|
|
608
|
+
💡 使用场景:
|
|
609
|
+
- ARIMA建模前的平稳性检验
|
|
610
|
+
- 识别合适的时间序列模型(AR、MA、ARMA)
|
|
611
|
+
- 检测季节性和趋势
|
|
612
|
+
- 评估序列的记忆性和持续性
|
|
613
|
+
|
|
614
|
+
⚠️ 注意事项:
|
|
615
|
+
- 非平稳序列需要差分或变换后才能建模
|
|
616
|
+
- ACF和PACF应结合使用以识别模型类型
|
|
617
|
+
- 数据点太少(<30)可能导致不可靠的结果
|
|
618
|
+
- 强烈的季节性可能影响ACF/PACF的解读
|
|
619
|
+
- 建议同时观察ACF/PACF图形以获得更好的直观理解
|
|
620
|
+
|
|
621
|
+
📖 结果解读:
|
|
622
|
+
- ADF p值 < 0.05 + ACF快速衰减 → 平稳序列,可直接建模
|
|
623
|
+
- ADF p值 >= 0.05 → 非平稳序列,需要差分处理
|
|
624
|
+
- PACF在p阶截尾 → 考虑AR(p)模型
|
|
625
|
+
- ACF在q阶截尾 → 考虑MA(q)模型
|
|
626
|
+
- ACF和PACF都衰减 → 考虑ARMA模型
|
|
365
627
|
|
|
366
628
|
Args:
|
|
367
|
-
data:
|
|
629
|
+
data: 时间序列数据(按时间顺序)
|
|
368
630
|
ctx: MCP上下文对象
|
|
369
631
|
"""
|
|
370
632
|
await ctx.info(f"开始时间序列分析,数据点数量: {len(data)}")
|
|
@@ -413,14 +675,99 @@ async def time_series_analysis(
|
|
|
413
675
|
@mcp.tool()
|
|
414
676
|
async def correlation_analysis(
|
|
415
677
|
ctx: Context[ServerSession, AppContext],
|
|
416
|
-
data:
|
|
417
|
-
|
|
678
|
+
data: Annotated[
|
|
679
|
+
Dict[str, List[float]],
|
|
680
|
+
Field(
|
|
681
|
+
description="""多变量数据字典
|
|
682
|
+
|
|
683
|
+
示例格式:
|
|
684
|
+
{
|
|
685
|
+
"销售额": [12000, 13500, 11800, 14200],
|
|
686
|
+
"广告支出": [800, 900, 750, 1000],
|
|
687
|
+
"价格": [99, 95, 102, 98],
|
|
688
|
+
"竞争对手数量": [3, 3, 4, 3]
|
|
689
|
+
}
|
|
690
|
+
|
|
691
|
+
要求:
|
|
692
|
+
- 至少包含2个变量
|
|
693
|
+
- 所有变量的数据点数量必须相同
|
|
694
|
+
- 建议样本量 >= 30
|
|
695
|
+
- 数值不能包含缺失值
|
|
696
|
+
|
|
697
|
+
应用:
|
|
698
|
+
- 探索变量间的关联关系
|
|
699
|
+
- 识别潜在的多重共线性
|
|
700
|
+
- 为回归分析筛选变量"""
|
|
701
|
+
)
|
|
702
|
+
],
|
|
703
|
+
method: Annotated[
|
|
704
|
+
str,
|
|
705
|
+
Field(
|
|
706
|
+
default="pearson",
|
|
707
|
+
description="""相关系数计算方法
|
|
708
|
+
|
|
709
|
+
可选值:
|
|
710
|
+
- "pearson": 皮尔逊相关系数(默认)
|
|
711
|
+
* 衡量线性相关关系
|
|
712
|
+
* 取值范围:-1到1
|
|
713
|
+
* 要求:数据近似正态分布
|
|
714
|
+
* 对异常值敏感
|
|
715
|
+
|
|
716
|
+
- "spearman": 斯皮尔曼秩相关系数
|
|
717
|
+
* 衡量单调相关关系(不要求线性)
|
|
718
|
+
* 基于数据的秩次
|
|
719
|
+
* 对异常值不敏感
|
|
720
|
+
* 适用于非正态分布
|
|
721
|
+
|
|
722
|
+
- "kendall": 肯德尔τ相关系数
|
|
723
|
+
* 衡量一致性程度
|
|
724
|
+
* 更稳健但计算较慢
|
|
725
|
+
* 适用于小样本和有序数据
|
|
726
|
+
|
|
727
|
+
选择建议:
|
|
728
|
+
- 数据正态分布 + 关注线性关系 → pearson
|
|
729
|
+
- 数据有异常值或非正态 → spearman
|
|
730
|
+
- 有序分类数据 → kendall"""
|
|
731
|
+
)
|
|
732
|
+
] = "pearson"
|
|
418
733
|
) -> str:
|
|
419
|
-
"""
|
|
734
|
+
"""变量间相关性分析
|
|
735
|
+
|
|
736
|
+
📊 功能说明:
|
|
737
|
+
计算多个变量之间的相关系数矩阵,揭示变量间的关联关系强度和方向。
|
|
738
|
+
|
|
739
|
+
📈 相关系数解读:
|
|
740
|
+
- 相关系数范围:-1 到 +1
|
|
741
|
+
- |r| = 0.0-0.3:弱相关或无相关
|
|
742
|
+
- |r| = 0.3-0.7:中等程度相关
|
|
743
|
+
- |r| = 0.7-1.0:强相关
|
|
744
|
+
- r > 0:正相关(同向变化)
|
|
745
|
+
- r < 0:负相关(反向变化)
|
|
746
|
+
- r = 0:无线性相关
|
|
747
|
+
|
|
748
|
+
💡 使用场景:
|
|
749
|
+
- 探索性数据分析(EDA)
|
|
750
|
+
- 回归分析前的变量筛选
|
|
751
|
+
- 识别多重共线性问题
|
|
752
|
+
- 构建投资组合(寻找低相关资产)
|
|
753
|
+
- 因子分析和主成分分析的前置步骤
|
|
754
|
+
|
|
755
|
+
⚠️ 注意事项:
|
|
756
|
+
- 相关≠因果:高相关不代表因果关系
|
|
757
|
+
- 皮尔逊相关仅衡量线性关系,可能错过非线性关系
|
|
758
|
+
- 异常值会显著影响皮尔逊相关系数
|
|
759
|
+
- 回归分析中,自变量间相关系数>0.8可能导致多重共线性
|
|
760
|
+
- 小样本(<30)的相关系数可能不稳定
|
|
761
|
+
|
|
762
|
+
📖 实际应用示例:
|
|
763
|
+
- 营销分析:广告支出与销售额的相关性
|
|
764
|
+
- 金融分析:不同股票收益率之间的相关性
|
|
765
|
+
- 经济研究:GDP增长与失业率的关系
|
|
766
|
+
- 多重共线性检测:回归模型中自变量间的相关性
|
|
420
767
|
|
|
421
768
|
Args:
|
|
422
|
-
data:
|
|
423
|
-
method:
|
|
769
|
+
data: 变量数据字典
|
|
770
|
+
method: 相关系数类型(pearson/spearman/kendall)
|
|
424
771
|
ctx: MCP上下文对象
|
|
425
772
|
"""
|
|
426
773
|
await ctx.info(f"开始相关性分析: {method}")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|