aigroup-econ-mcp 1.3.3__py3-none-any.whl → 2.0.1__py3-none-any.whl

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.
Files changed (198) hide show
  1. .gitignore +253 -0
  2. PKG-INFO +732 -0
  3. README.md +687 -0
  4. __init__.py +14 -0
  5. aigroup_econ_mcp-2.0.1.dist-info/METADATA +732 -0
  6. aigroup_econ_mcp-2.0.1.dist-info/RECORD +170 -0
  7. aigroup_econ_mcp-2.0.1.dist-info/entry_points.txt +2 -0
  8. aigroup_econ_mcp-2.0.1.dist-info/licenses/LICENSE +21 -0
  9. cli.py +32 -0
  10. econometrics/README.md +18 -0
  11. econometrics/__init__.py +191 -0
  12. econometrics/advanced_methods/modern_computing_machine_learning/__init__.py +30 -0
  13. econometrics/advanced_methods/modern_computing_machine_learning/causal_forest.py +253 -0
  14. econometrics/advanced_methods/modern_computing_machine_learning/double_ml.py +268 -0
  15. econometrics/advanced_methods/modern_computing_machine_learning/gradient_boosting.py +249 -0
  16. econometrics/advanced_methods/modern_computing_machine_learning/hierarchical_clustering.py +243 -0
  17. econometrics/advanced_methods/modern_computing_machine_learning/kmeans_clustering.py +293 -0
  18. econometrics/advanced_methods/modern_computing_machine_learning/neural_network.py +264 -0
  19. econometrics/advanced_methods/modern_computing_machine_learning/random_forest.py +195 -0
  20. econometrics/advanced_methods/modern_computing_machine_learning/support_vector_machine.py +226 -0
  21. econometrics/advanced_methods/modern_computing_machine_learning/test_all_modules.py +329 -0
  22. econometrics/advanced_methods/modern_computing_machine_learning/test_report.md +107 -0
  23. econometrics/basic_parametric_estimation/__init__.py +31 -0
  24. econometrics/basic_parametric_estimation/gmm/__init__.py +13 -0
  25. econometrics/basic_parametric_estimation/gmm/gmm_model.py +256 -0
  26. econometrics/basic_parametric_estimation/mle/__init__.py +13 -0
  27. econometrics/basic_parametric_estimation/mle/mle_model.py +241 -0
  28. econometrics/basic_parametric_estimation/ols/__init__.py +13 -0
  29. econometrics/basic_parametric_estimation/ols/ols_model.py +141 -0
  30. econometrics/causal_inference/__init__.py +66 -0
  31. econometrics/causal_inference/causal_identification_strategy/__init__.py +104 -0
  32. econometrics/causal_inference/causal_identification_strategy/control_function.py +112 -0
  33. econometrics/causal_inference/causal_identification_strategy/difference_in_differences.py +107 -0
  34. econometrics/causal_inference/causal_identification_strategy/event_study.py +119 -0
  35. econometrics/causal_inference/causal_identification_strategy/first_difference.py +89 -0
  36. econometrics/causal_inference/causal_identification_strategy/fixed_effects.py +103 -0
  37. econometrics/causal_inference/causal_identification_strategy/hausman_test.py +69 -0
  38. econometrics/causal_inference/causal_identification_strategy/instrumental_variables.py +145 -0
  39. econometrics/causal_inference/causal_identification_strategy/mediation_analysis.py +121 -0
  40. econometrics/causal_inference/causal_identification_strategy/moderation_analysis.py +109 -0
  41. econometrics/causal_inference/causal_identification_strategy/propensity_score_matching.py +140 -0
  42. econometrics/causal_inference/causal_identification_strategy/random_effects.py +100 -0
  43. econometrics/causal_inference/causal_identification_strategy/regression_discontinuity.py +98 -0
  44. econometrics/causal_inference/causal_identification_strategy/synthetic_control.py +111 -0
  45. econometrics/causal_inference/causal_identification_strategy/triple_difference.py +86 -0
  46. econometrics/distribution_analysis/__init__.py +28 -0
  47. econometrics/distribution_analysis/oaxaca_blinder.py +184 -0
  48. econometrics/distribution_analysis/time_series_decomposition.py +152 -0
  49. econometrics/distribution_analysis/variance_decomposition.py +179 -0
  50. econometrics/missing_data/__init__.py +18 -0
  51. econometrics/missing_data/imputation_methods.py +219 -0
  52. econometrics/missing_data/missing_data_measurement_error/__init__.py +0 -0
  53. econometrics/model_specification_diagnostics_robust_inference/README.md +173 -0
  54. econometrics/model_specification_diagnostics_robust_inference/__init__.py +78 -0
  55. econometrics/model_specification_diagnostics_robust_inference/diagnostic_tests/__init__.py +20 -0
  56. econometrics/model_specification_diagnostics_robust_inference/diagnostic_tests/diagnostic_tests_model.py +149 -0
  57. econometrics/model_specification_diagnostics_robust_inference/generalized_least_squares/__init__.py +15 -0
  58. econometrics/model_specification_diagnostics_robust_inference/generalized_least_squares/gls_model.py +130 -0
  59. econometrics/model_specification_diagnostics_robust_inference/model_selection/__init__.py +18 -0
  60. econometrics/model_specification_diagnostics_robust_inference/model_selection/model_selection_model.py +286 -0
  61. econometrics/model_specification_diagnostics_robust_inference/regularization/__init__.py +15 -0
  62. econometrics/model_specification_diagnostics_robust_inference/regularization/regularization_model.py +177 -0
  63. econometrics/model_specification_diagnostics_robust_inference/robust_errors/__init__.py +15 -0
  64. econometrics/model_specification_diagnostics_robust_inference/robust_errors/robust_errors_model.py +122 -0
  65. econometrics/model_specification_diagnostics_robust_inference/simultaneous_equations/__init__.py +15 -0
  66. econometrics/model_specification_diagnostics_robust_inference/simultaneous_equations/simultaneous_equations_model.py +246 -0
  67. econometrics/model_specification_diagnostics_robust_inference/weighted_least_squares/__init__.py +15 -0
  68. econometrics/model_specification_diagnostics_robust_inference/weighted_least_squares/wls_model.py +127 -0
  69. econometrics/nonparametric/__init__.py +35 -0
  70. econometrics/nonparametric/gam_model.py +117 -0
  71. econometrics/nonparametric/kernel_regression.py +161 -0
  72. econometrics/nonparametric/nonparametric_semiparametric_methods/__init__.py +0 -0
  73. econometrics/nonparametric/quantile_regression.py +249 -0
  74. econometrics/nonparametric/spline_regression.py +100 -0
  75. econometrics/spatial_econometrics/__init__.py +68 -0
  76. econometrics/spatial_econometrics/geographically_weighted_regression.py +211 -0
  77. econometrics/spatial_econometrics/gwr_simple.py +154 -0
  78. econometrics/spatial_econometrics/spatial_autocorrelation.py +356 -0
  79. econometrics/spatial_econometrics/spatial_durbin_model.py +177 -0
  80. econometrics/spatial_econometrics/spatial_econometrics_new/__init__.py +0 -0
  81. econometrics/spatial_econometrics/spatial_regression.py +315 -0
  82. econometrics/spatial_econometrics/spatial_weights.py +226 -0
  83. econometrics/specific_data_modeling/micro_discrete_limited_data/README.md +164 -0
  84. econometrics/specific_data_modeling/micro_discrete_limited_data/__init__.py +40 -0
  85. econometrics/specific_data_modeling/micro_discrete_limited_data/count_data_models.py +311 -0
  86. econometrics/specific_data_modeling/micro_discrete_limited_data/discrete_choice_models.py +294 -0
  87. econometrics/specific_data_modeling/micro_discrete_limited_data/limited_dependent_variable_models.py +282 -0
  88. econometrics/specific_data_modeling/survival_duration_data/__init__.py +0 -0
  89. econometrics/specific_data_modeling/time_series_panel_data/__init__.py +143 -0
  90. econometrics/specific_data_modeling/time_series_panel_data/arima_model.py +104 -0
  91. econometrics/specific_data_modeling/time_series_panel_data/cointegration_vecm.py +334 -0
  92. econometrics/specific_data_modeling/time_series_panel_data/dynamic_panel_models.py +653 -0
  93. econometrics/specific_data_modeling/time_series_panel_data/exponential_smoothing.py +176 -0
  94. econometrics/specific_data_modeling/time_series_panel_data/garch_model.py +198 -0
  95. econometrics/specific_data_modeling/time_series_panel_data/panel_diagnostics.py +125 -0
  96. econometrics/specific_data_modeling/time_series_panel_data/panel_var.py +60 -0
  97. econometrics/specific_data_modeling/time_series_panel_data/structural_break_tests.py +87 -0
  98. econometrics/specific_data_modeling/time_series_panel_data/time_varying_parameter_models.py +106 -0
  99. econometrics/specific_data_modeling/time_series_panel_data/unit_root_tests.py +204 -0
  100. econometrics/specific_data_modeling/time_series_panel_data/var_svar_model.py +372 -0
  101. econometrics/statistical_inference/__init__.py +21 -0
  102. econometrics/statistical_inference/bootstrap_methods.py +162 -0
  103. econometrics/statistical_inference/permutation_test.py +177 -0
  104. econometrics/statistical_inference/statistical_inference_techniques/__init__.py +0 -0
  105. econometrics/statistics/distribution_decomposition_methods/__init__.py +0 -0
  106. econometrics/survival_analysis/__init__.py +18 -0
  107. econometrics/survival_analysis/survival_models.py +259 -0
  108. econometrics/tests/basic_parametric_estimation_tests/__init__.py +3 -0
  109. econometrics/tests/basic_parametric_estimation_tests/test_gmm.py +128 -0
  110. econometrics/tests/basic_parametric_estimation_tests/test_mle.py +127 -0
  111. econometrics/tests/basic_parametric_estimation_tests/test_ols.py +100 -0
  112. econometrics/tests/causal_inference_tests/__init__.py +3 -0
  113. econometrics/tests/causal_inference_tests/detailed_test.py +441 -0
  114. econometrics/tests/causal_inference_tests/test_all_methods.py +418 -0
  115. econometrics/tests/causal_inference_tests/test_causal_identification_strategy.py +202 -0
  116. econometrics/tests/causal_inference_tests/test_difference_in_differences.py +53 -0
  117. econometrics/tests/causal_inference_tests/test_instrumental_variables.py +44 -0
  118. econometrics/tests/model_specification_diagnostics_tests/__init__.py +3 -0
  119. econometrics/tests/model_specification_diagnostics_tests/test_diagnostic_tests.py +86 -0
  120. econometrics/tests/model_specification_diagnostics_tests/test_robust_errors.py +89 -0
  121. econometrics/tests/specific_data_modeling_tests/__init__.py +3 -0
  122. econometrics/tests/specific_data_modeling_tests/test_arima.py +98 -0
  123. econometrics/tests/specific_data_modeling_tests/test_dynamic_panel.py +198 -0
  124. econometrics/tests/specific_data_modeling_tests/test_exponential_smoothing.py +105 -0
  125. econometrics/tests/specific_data_modeling_tests/test_garch.py +118 -0
  126. econometrics/tests/specific_data_modeling_tests/test_micro_discrete_limited_data.py +189 -0
  127. econometrics/tests/specific_data_modeling_tests/test_unit_root.py +156 -0
  128. econometrics/tests/specific_data_modeling_tests/test_var.py +124 -0
  129. econometrics//321/206/320/254/320/272/321/205/342/225/235/320/220/321/205/320/237/320/241/321/205/320/264/320/267/321/207/342/226/222/342/225/227/321/204/342/225/235/320/250/321/205/320/225/320/230/321/207/342/225/221/320/267/321/205/320/230/320/226/321/206/320/256/320/240.md +544 -0
  130. prompts/__init__.py +0 -0
  131. prompts/analysis_guides.py +43 -0
  132. pyproject.toml +85 -0
  133. resources/MCP_MASTER_GUIDE.md +422 -0
  134. resources/MCP_TOOLS_DATA_FORMAT_GUIDE.md +185 -0
  135. resources/__init__.py +0 -0
  136. server.py +97 -0
  137. tools/README.md +88 -0
  138. tools/__init__.py +119 -0
  139. tools/causal_inference_adapter.py +658 -0
  140. tools/data_loader.py +213 -0
  141. tools/decorators.py +38 -0
  142. tools/distribution_analysis_adapter.py +121 -0
  143. tools/econometrics_adapter.py +286 -0
  144. tools/gwr_simple_adapter.py +54 -0
  145. tools/machine_learning_adapter.py +567 -0
  146. tools/mcp_tool_groups/__init__.py +15 -0
  147. tools/mcp_tool_groups/basic_parametric_tools.py +173 -0
  148. tools/mcp_tool_groups/causal_inference_tools.py +643 -0
  149. tools/mcp_tool_groups/distribution_analysis_tools.py +169 -0
  150. tools/mcp_tool_groups/machine_learning_tools.py +422 -0
  151. tools/mcp_tool_groups/microecon_tools.py +325 -0
  152. tools/mcp_tool_groups/missing_data_tools.py +117 -0
  153. tools/mcp_tool_groups/model_specification_tools.py +402 -0
  154. tools/mcp_tool_groups/nonparametric_tools.py +225 -0
  155. tools/mcp_tool_groups/spatial_econometrics_tools.py +323 -0
  156. tools/mcp_tool_groups/statistical_inference_tools.py +131 -0
  157. tools/mcp_tool_groups/time_series_tools.py +494 -0
  158. tools/mcp_tools_registry.py +124 -0
  159. tools/microecon_adapter.py +412 -0
  160. tools/missing_data_adapter.py +73 -0
  161. tools/model_specification_adapter.py +369 -0
  162. tools/nonparametric_adapter.py +190 -0
  163. tools/output_formatter.py +563 -0
  164. tools/spatial_econometrics_adapter.py +318 -0
  165. tools/statistical_inference_adapter.py +90 -0
  166. tools/survival_analysis_adapter.py +46 -0
  167. tools/time_series_panel_data_adapter.py +858 -0
  168. tools/time_series_panel_data_tools.py +65 -0
  169. aigroup_econ_mcp/__init__.py +0 -19
  170. aigroup_econ_mcp/cli.py +0 -82
  171. aigroup_econ_mcp/config.py +0 -561
  172. aigroup_econ_mcp/server.py +0 -452
  173. aigroup_econ_mcp/tools/__init__.py +0 -19
  174. aigroup_econ_mcp/tools/base.py +0 -470
  175. aigroup_econ_mcp/tools/cache.py +0 -533
  176. aigroup_econ_mcp/tools/data_loader.py +0 -195
  177. aigroup_econ_mcp/tools/file_parser.py +0 -1027
  178. aigroup_econ_mcp/tools/machine_learning.py +0 -60
  179. aigroup_econ_mcp/tools/ml_ensemble.py +0 -210
  180. aigroup_econ_mcp/tools/ml_evaluation.py +0 -272
  181. aigroup_econ_mcp/tools/ml_models.py +0 -54
  182. aigroup_econ_mcp/tools/ml_regularization.py +0 -186
  183. aigroup_econ_mcp/tools/monitoring.py +0 -555
  184. aigroup_econ_mcp/tools/optimized_example.py +0 -229
  185. aigroup_econ_mcp/tools/panel_data.py +0 -619
  186. aigroup_econ_mcp/tools/regression.py +0 -214
  187. aigroup_econ_mcp/tools/statistics.py +0 -154
  188. aigroup_econ_mcp/tools/time_series.py +0 -698
  189. aigroup_econ_mcp/tools/timeout.py +0 -283
  190. aigroup_econ_mcp/tools/tool_descriptions.py +0 -410
  191. aigroup_econ_mcp/tools/tool_handlers.py +0 -1016
  192. aigroup_econ_mcp/tools/tool_registry.py +0 -478
  193. aigroup_econ_mcp/tools/validation.py +0 -482
  194. aigroup_econ_mcp-1.3.3.dist-info/METADATA +0 -525
  195. aigroup_econ_mcp-1.3.3.dist-info/RECORD +0 -30
  196. aigroup_econ_mcp-1.3.3.dist-info/entry_points.txt +0 -2
  197. /aigroup_econ_mcp-1.3.3.dist-info/licenses/LICENSE → /LICENSE +0 -0
  198. {aigroup_econ_mcp-1.3.3.dist-info → aigroup_econ_mcp-2.0.1.dist-info}/WHEEL +0 -0
@@ -1,478 +0,0 @@
1
- """
2
- 工具注册器模块
3
- 简化MCP工具的注册和管理
4
- """
5
-
6
- from typing import Dict, Any, Optional, List, Callable
7
- from pydantic import Field
8
- from typing import Annotated
9
-
10
- from .base import with_file_support_decorator as econometric_tool
11
-
12
-
13
- # 标准文件输入参数定义
14
- FILE_INPUT_PARAMS = {
15
- "file_content": Annotated[
16
- Optional[str],
17
- Field(
18
- default=None,
19
- description="""CSV、JSON或TXT文件内容
20
-
21
- 📁 支持格式:
22
- - CSV: 带表头的列数据,自动检测分隔符(逗号、制表符、分号等)
23
- - JSON: {"变量名": [数据], ...} 或 [{"变量1": 值, ...}, ...]
24
- - TXT: 支持多种格式
25
- * 单列数值:每行一个数值
26
- * 多列数值:空格或制表符分隔,可带表头
27
- * 键值对:变量名: 值列表 或 变量名 = 值列表
28
-
29
- 💡 使用方式:
30
- - 提供文件内容字符串(可以是base64编码)
31
- - 系统会自动解析并识别变量和数据格式
32
- - 优先使用file_content,如果提供则忽略其他数据参数
33
- - 也可以直接传入文件路径(.csv/.json/.txt)
34
-
35
- 📝 示例:
36
- CSV: "变量1,变量2\\n1.2,3.4\\n2.3,4.5"
37
- JSON: "{\\"x\\": [1,2,3], \\"y\\": [4,5,6]}"
38
- TXT单列: "1.5\\n2.3\\n3.1"
39
- TXT多列: "x y\\n1 2\\n3 4"
40
- TXT键值对: "x: 1 2 3\\ny: 4 5 6"
41
- """
42
- )
43
- ],
44
- "file_format": Annotated[
45
- str,
46
- Field(
47
- default="auto",
48
- description="""文件格式类型
49
-
50
- 可选值:
51
- - "auto": 自动检测(默认,推荐)- 根据文件内容智能识别格式
52
- - "csv": CSV格式 - 逗号、制表符或分号分隔的表格数据
53
- - "json": JSON格式 - 结构化JSON数据
54
- - "txt": TXT格式 - 纯文本数据,支持多种子格式
55
-
56
- 🔍 自动检测规则:
57
- 1. 尝试解析JSON格式
58
- 2. 检测CSV特征(逗号、制表符)
59
- 3. 检测TXT特征(纯数值、键值对、空格分隔)
60
- 4. 根据文件扩展名(.csv/.json/.txt)
61
-
62
- 💡 建议:
63
- - 大多数情况使用"auto"即可
64
- - 当自动检测失败时,手动指定格式
65
- - TXT格式会自动识别具体子格式(单列/多列/键值对)"""
66
- )
67
- ]
68
- }
69
-
70
-
71
- class ToolConfig:
72
- """工具配置类"""
73
-
74
- def __init__(
75
- self,
76
- name: str,
77
- impl_func: Callable,
78
- tool_type: str,
79
- description: str = "",
80
- extra_params: Dict[str, Any] = None
81
- ):
82
- self.name = name
83
- self.impl_func = impl_func
84
- self.tool_type = tool_type
85
- self.description = description
86
- self.extra_params = extra_params or {}
87
-
88
-
89
- def create_tool_wrapper(config: ToolConfig):
90
- """
91
- 创建工具包装器,自动添加文件输入支持
92
-
93
- Args:
94
- config: 工具配置对象
95
-
96
- Returns:
97
- 包装后的工具函数
98
- """
99
- @econometric_tool(config.tool_type)
100
- async def tool_wrapper(ctx, **kwargs):
101
- """动态生成的工具包装器"""
102
- # 调用实际的实现函数
103
- return await config.impl_func(ctx, **kwargs)
104
-
105
- # 设置函数名和文档
106
- tool_wrapper.__name__ = config.name
107
- tool_wrapper.__doc__ = config.description
108
-
109
- return tool_wrapper
110
-
111
-
112
- # 工具类型到参数映射
113
- TOOL_TYPE_PARAMS = {
114
- "multi_var_dict": {
115
- "data": Annotated[
116
- Optional[Dict[str, List[float]]],
117
- Field(
118
- default=None,
119
- description="""多变量数据字典
120
-
121
- 📊 数据格式:
122
- - 键:变量名(字符串)
123
- - 值:数值列表(浮点数数组)
124
- - 结构:{"变量1": [值1, 值2, ...], "变量2": [值1, 值2, ...]}
125
-
126
- 📝 要求:
127
- - 所有变量的数据长度必须相同
128
- - 数值必须是浮点数或可转换为浮点数
129
- - 变量名建议使用有意义的描述性名称
130
- - 至少需要1个变量
131
-
132
- 💡 示例:
133
- {"GDP": [100.5, 102.3, 104.1], "CPI": [2.1, 2.3, 2.2]}
134
-
135
- 🔧 用途:
136
- - 描述性统计分析
137
- - 相关性分析
138
- - 多变量时间序列分析"""
139
- )
140
- ]
141
- },
142
- "regression": {
143
- "y_data": Annotated[
144
- Optional[List[float]],
145
- Field(
146
- default=None,
147
- description="""因变量(被解释变量)数据
148
-
149
- 📊 数据格式:
150
- - 一维数值列表
151
- - 元素类型:浮点数
152
- - 长度:必须与x_data的观测数一致
153
-
154
- 📝 要求:
155
- - 不能包含缺失值(NaN)
156
- - 建议数据已做适当的预处理
157
- - 至少需要 n+2 个观测(n为自变量个数)
158
-
159
- 💡 示例:
160
- [12.5, 13.2, 14.1, 13.8, 15.0] # 销售额数据
161
-
162
- 🔧 用途:
163
- - OLS回归分析的被解释变量
164
- - 机器学习回归的目标变量
165
- - 各类回归模型的预测目标"""
166
- )
167
- ],
168
- "x_data": Annotated[
169
- Optional[List[List[float]]],
170
- Field(
171
- default=None,
172
- description="""自变量(解释变量)数据矩阵
173
-
174
- 📊 数据格式:
175
- - 二维数值列表
176
- - 外层列表:每个元素代表一个观测
177
- - 内层列表:每个元素代表一个自变量的值
178
- - 结构:[[x1_1, x2_1, ...], [x1_2, x2_2, ...], ...]
179
-
180
- 📝 要求:
181
- - 行数(观测数)必须与y_data长度一致
182
- - 列数(变量数)必须在所有行保持一致
183
- - 不能包含缺失值
184
- - 数值型变量,分类变量需要先编码
185
-
186
- 💡 示例:
187
- [[100, 50, 3], # 观测1: 广告支出=100, 价格=50, 竞争者=3
188
- [120, 48, 3], # 观测2: 广告支出=120, 价格=48, 竞争者=3
189
- [110, 52, 4]] # 观测3: 广告支出=110, 价格=52, 竞争者=4
190
-
191
- 🔧 用途:
192
- - OLS回归的自变量矩阵
193
- - 机器学习模型的特征矩阵
194
- - 多元回归分析的解释变量"""
195
- )
196
- ],
197
- "feature_names": Annotated[
198
- Optional[List[str]],
199
- Field(
200
- default=None,
201
- description="""自变量名称列表
202
-
203
- 📝 格式:
204
- - 字符串列表
205
- - 长度必须与x_data的列数一致
206
- - 建议使用描述性名称
207
-
208
- 💡 示例:
209
- ["广告支出", "价格", "竞争对手数量", "促销活动"]
210
-
211
- 🔧 用途:
212
- - 提高结果可读性
213
- - 便于解释模型系数
214
- - 用于生成可视化标签
215
- - 如果不提供,系统会自动生成(x1, x2, x3...)
216
-
217
- ⚠️ 注意:
218
- - 避免使用特殊字符
219
- - 中英文均可
220
- - 建议简洁明了"""
221
- )
222
- ]
223
- },
224
- "single_var": {
225
- "data": Annotated[
226
- Optional[List[float]],
227
- Field(
228
- default=None,
229
- description="""单变量时间序列数据
230
-
231
- 📊 数据格式:
232
- - 一维数值列表
233
- - 按时间顺序排列
234
- - 元素类型:浮点数
235
-
236
- 📝 要求:
237
- - 数据必须按时间顺序排列
238
- - 不能包含缺失值
239
- - 建议时间间隔均匀(等间隔)
240
- - 至少需要5个观测点进行基本分析
241
- - 复杂模型(如ARIMA)建议30+观测点
242
-
243
- 💡 示例:
244
- [100.5, 102.3, 101.8, 103.5, 104.2, 103.8, 105.1] # 股票价格序列
245
-
246
- 🔧 用途:
247
- - 时间序列分析
248
- - 平稳性检验(ADF、KPSS)
249
- - 自相关分析(ACF、PACF)
250
- - ARIMA/GARCH模型
251
- - 预测和趋势分析
252
-
253
- ⚠️ 注意事项:
254
- - 确保数据按时间顺序
255
- - 处理缺失值和异常值
256
- - 考虑季节性调整
257
- - 检查数据平稳性"""
258
- )
259
- ]
260
- },
261
- "panel": {
262
- "y_data": Annotated[
263
- Optional[List[float]],
264
- Field(
265
- default=None,
266
- description="""面板数据因变量
267
-
268
- 📊 数据格式:
269
- - 一维数值列表
270
- - 包含所有个体所有时期的观测
271
- - 长度 = 个体数 × 时期数
272
-
273
- 📝 排列方式(可选其一):
274
- 1. 按个体排列:[个体1的所有时期, 个体2的所有时期, ...]
275
- 2. 按时期排列:[时期1的所有个体, 时期2的所有个体, ...]
276
- 3. 需与entity_ids和time_periods的排列方式一致
277
-
278
- 💡 示例(3个公司,2个年份):
279
- [1000, 1100, 800, 900, 1200, 1300] # 按个体排列
280
- 公司1: 2020=1000, 2021=1100
281
- 公司2: 2020=800, 2021=900
282
- 公司3: 2020=1200, 2021=1300
283
-
284
- 🔧 用途:
285
- - 固定效应模型
286
- - 随机效应模型
287
- - 面板数据回归分析"""
288
- )
289
- ],
290
- "x_data": Annotated[
291
- Optional[List[List[float]]],
292
- Field(
293
- default=None,
294
- description="""面板数据自变量矩阵
295
-
296
- 📊 数据格式:
297
- - 二维数值列表
298
- - 行数 = 个体数 × 时期数
299
- - 列数 = 自变量个数
300
- - 排列顺序必须与y_data一致
301
-
302
- 📝 要求:
303
- - 与y_data的观测顺序完全对应
304
- - 所有行的列数必须相同
305
- - 不能包含缺失值
306
-
307
- 💡 示例(3个公司,2年,2个自变量):
308
- [[50, 100], # 公司1-2020: 员工=50, 投资=100
309
- [52, 110], # 公司1-2021: 员工=52, 投资=110
310
- [40, 80], # 公司2-2020
311
- [42, 90], # 公司2-2021
312
- [60, 150], # 公司3-2020
313
- [62, 160]] # 公司3-2021
314
-
315
- 🔧 用途:
316
- - 面板回归的解释变量
317
- - 控制时变特征"""
318
- )
319
- ],
320
- "entity_ids": Annotated[
321
- Optional[List[str]],
322
- Field(
323
- default=None,
324
- description="""个体标识符列表
325
-
326
- 📝 格式:
327
- - 字符串列表
328
- - 标识每个观测所属的个体(如公司、国家、个人)
329
- - 长度 = y_data长度
330
-
331
- 📊 要求:
332
- - 每个个体的标识符在所有时期保持一致
333
- - 与y_data、x_data的顺序完全对应
334
- - 建议使用清晰的标识符
335
-
336
- 💡 示例(3个公司,各2年):
337
- ["公司A", "公司A", "公司B", "公司B", "公司C", "公司C"]
338
-
339
- ["1", "1", "2", "2", "3", "3"]
340
-
341
- 🔧 用途:
342
- - 识别面板数据的横截面维度
343
- - 计算固定效应
344
- - 分组和聚合
345
- - Hausman检验
346
-
347
- ⚠️ 注意:
348
- - ID可以是数字或字符串
349
- - 但必须以字符串形式传入
350
- - 保持格式一致性"""
351
- )
352
- ],
353
- "time_periods": Annotated[
354
- Optional[List[str]],
355
- Field(
356
- default=None,
357
- description="""时间标识符列表
358
-
359
- 📝 格式:
360
- - 字符串列表
361
- - 标识每个观测所属的时期
362
- - 长度 = y_data长度
363
-
364
- 📊 要求:
365
- - 每个时期的标识符在所有个体保持一致
366
- - 与y_data、x_data的顺序完全对应
367
- - 建议使用标准时间格式
368
-
369
- 💡 示例(3个公司,各2年):
370
- ["2020", "2021", "2020", "2021", "2020", "2021"]
371
-
372
- ["2020-01", "2020-02", "2020-01", "2020-02", "2020-01", "2020-02"]
373
-
374
- 🔧 用途:
375
- - 识别面板数据的时间维度
376
- - 计算时间固定效应
377
- - 识别时间趋势
378
- - 面板单位根检验
379
-
380
- ⚠️ 注意:
381
- - 可以是年份、季度、月份等
382
- - 必须以字符串形式传入
383
- - 保持格式统一"""
384
- )
385
- ],
386
- "feature_names": Annotated[
387
- Optional[List[str]],
388
- Field(
389
- default=None,
390
- description="""自变量名称列表(同regression类型)
391
-
392
- 📝 格式:
393
- - 字符串列表
394
- - 长度 = x_data的列数
395
-
396
- 💡 示例:
397
- ["员工数", "研发投资", "市场份额", "行业集中度"]
398
-
399
- 🔧 用途:
400
- - 提高结果可读性
401
- - 便于解释回归系数
402
- - 如不提供会自动生成"""
403
- )
404
- ]
405
- },
406
- "time_series": {
407
- "data": Annotated[
408
- Optional[Dict[str, List[float]]],
409
- Field(
410
- default=None,
411
- description="""多变量时间序列数据字典
412
-
413
- 📊 数据格式:
414
- - 键:变量名(字符串)
415
- - 值:时间序列数据(浮点数列表)
416
- - 所有变量长度必须相同
417
- - 数据按时间顺序排列
418
-
419
- 📝 要求:
420
- - 至少2个变量(VAR、VECM模型)
421
- - 单变量请使用single_var类型
422
- - 所有序列等长且按时间对齐
423
- - 时间间隔均匀
424
- - VAR模型建议40+观测
425
- - VECM模型建议60+观测
426
-
427
- 💡 示例:
428
- {
429
- "GDP": [100.5, 102.3, 104.1, 105.8], # GDP增长率序列
430
- "CPI": [2.1, 2.3, 2.2, 2.4], # CPI通胀率序列
431
- "利率": [3.5, 3.6, 3.4, 3.7] # 利率序列
432
- }
433
-
434
- 🔧 用途:
435
- - VAR模型分析
436
- - VECM模型分析
437
- - 脉冲响应函数
438
- - 方差分解
439
- - Granger因果检验
440
- - 协整分析
441
-
442
- ⚠️ 注意事项:
443
- - 确保所有序列时间对齐
444
- - 检查序列平稳性
445
- - VAR要求所有序列平稳
446
- - VECM允许非平稳序列(需协整)
447
- - 注意滞后阶数选择"""
448
- )
449
- ]
450
- }
451
- }
452
-
453
-
454
- def get_tool_params(tool_type: str, extra_params: Dict[str, Any] = None) -> Dict[str, Any]:
455
- """
456
- 获取工具的完整参数定义
457
-
458
- Args:
459
- tool_type: 工具类型
460
- extra_params: 额外的参数定义
461
-
462
- Returns:
463
- 完整的参数字典
464
- """
465
- params = {}
466
-
467
- # 添加基础参数
468
- if tool_type in TOOL_TYPE_PARAMS:
469
- params.update(TOOL_TYPE_PARAMS[tool_type])
470
-
471
- # 添加文件输入参数
472
- params.update(FILE_INPUT_PARAMS)
473
-
474
- # 添加额外参数
475
- if extra_params:
476
- params.update(extra_params)
477
-
478
- return params