资讯动态

FinceptTerminal Statsmodels Wrapper 完全指南:200+ 统计建模与计量分析函数的一站式封装

发布时间:2026/9/11 6:57:14 来源:尧图企业网站定制
FinceptTerminal Statsmodels Wrapper 完全指南200 统计建模与计量分析函数的一站式封装【免费下载链接】FinceptTerminalFinceptTerminal is a modern finance application offering advanced market analytics, investment research, and economic data tools, designed for interactive exploration and>项目地址: https://gitcode.com/GitHub_Trending/fi/FinceptTerminal导读本文围绕 FinceptTerminal 开源金融终端中 fincept-qt/scripts/Analytics/statsmodels_wrapper 目录下的官方文档展开系统讲解这一封装层如何把 statsmodels 生态回归、时间序列、GLM、假设检验、功效分析、多元分析、生存分析、非参数方法、GAM 等以统一、JSON 友好的返回值风格暴露给上层 Python 脚本、CLI 与 Qt 界面。读完本文你将掌握该 wrapper 的模块划分、每个子模块的核心函数签名与返回结构、懒加载机制以及它如何通过statsmodels_service.py与statsmodels_cli.py被 FinceptTerminal 的实际功能链调用。一、概述为什么需要一层 statsmodels Wrapperstatsmodels 是 Python 生态中最成熟的统计与计量经济学库之一但其 API 分散在statsmodels.api、statsmodels.tsa、statsmodels.stats等众多命名空间中且不同模型的拟合结果对象形态各异。FinceptTerminal 的 Statsmodels Wrapper 提供了200 个函数按逻辑主题组织成模块并将所有结果统一转换为纯字典dict结构便于序列化、展示与二次加工。根据官方文档该 wrapper 宣称对 statsmodels 库提供100% 覆盖以statsmodels.stats.api为核心覆盖目标主要能力矩阵如下回归模型9 个函数OLS、WLS、GLS、GLSAR、RecursiveLS、Rolling OLS、Rolling WLS 等时间序列模型16 个函数ARIMA、SARIMAX、VARMAX、AutoReg、ARDL、Exponential Smoothing、Holt、Simple ES、Markov Switching、STL Forecast 等时间序列函数12 个函数ACF、PACF、CCF、ADF、KPSS、协整检验、Ljung-Box、季节分解、ARMA 定阶等GLM 模型16 个函数Logit、Probit、Poisson、负二项、条件 Logit、条件 Poisson、广义 Poisson、零膨胀模型等统计检验20 个函数t 检验、ANOVA、卡方检验、异方差诊断、正态性检验等功效分析8 个函数样本量与检验功效计算多元分析4 个函数PCA、因子分析、MANOVA、典型相关分析稳健回归4 个函数RLM、MAD、Huber 尺度生存分析3 个函数Cox PH、Kaplan-Meier、Log-rank 检验非参数方法4 个函数KDE、核回归、LOWESSGAM2 个函数广义可加模型扩展统计模块stats_extended100 函数完整覆盖statsmodels.stats.api。二、安装与环境要求statsmodels 已经作为 FinceptTerminal 的依赖随项目一并安装无需单独配置虚拟环境。如需独立环境复现官方文档给出的版本约束为pip install statsmodels0.14.4其余依赖numpy、pandas、scipy为 statsmodels 的标准依赖链wrapper 源码中通过import statsmodels.api as sm统一引用。注意wrapper 的函数均接受list、numpy.ndarray、pandas.Series/DataFrame等常见输入类型内部会做归一化转换实际使用中几乎不需要手工预处理数据类型。三、模块结构12 个 Python 文件各司其职wrapper 目录结构如下与官方文档一致statsmodels_wrapper/ ├── __init__.py # 主导出入口 懒加载机制 ├── regression.py # 回归模型9 个函数 ├── timeseries_models.py # 时间序列模型16 个函数 ├── timeseries_funcs.py # 时间序列函数12 个函数 ├── glm.py # 广义线性模型16 个函数 ├── stats_tests.py # 统计检验20 个函数 ├── power_analysis.py # 功效与样本量分析8 个函数 ├── multivariate.py # 多元分析4 个函数 ├── robust.py # 稳健回归4 个函数 ├── survival.py # 生存分析3 个函数 ├── nonparametric.py # 非参数方法4 个函数 ├── gam.py # 广义可加模型2 个函数 ├── stats_extended.py # 扩展统计模块100 函数 └── statsmodels_service.py # 服务化封装供 Qt 子页签调用3.1 导出与懒加载__init__.py的 PEP 562 设计__init__.py除维护一份完整的__all__导出列表外还实现了一个值得注意的工程细节——PEP 562 懒加载参见init.py。源码中的注释解释了动机每个子模块都带if __name__ __main__:自测入口若在包导入时急切地把所有子模块拉进sys.modules当用户再用python -m方式执行某个子模块时Python 会发现它已被注册从而触发RuntimeWarningfound in sys.modules ... prior to execution。因此_LAZY_ATTRS: dict[str, tuple[str, str]] { fit_ols: (regression, fit_ols), fit_arima: (timeseries_models, fit_arima), ... } def __getattr__(name: str): # PEP 562 target _LAZY_ATTRS.get(name) ... mod importlib.import_module(f.{submodule}, __name__) value getattr(mod, original_name) globals()[name] value # cache for subsequent access return value对外部使用者而言这完全透明from statsmodels_wrapper import fit_arima依然可用但实际导入被推迟到首次属性访问且结果会被缓存避免重复 import。四、快速上手五个核心场景实战以下示例均继承自官方文档并结合源码补充返回值字段说明。4.1 回归分析OLS 与诊断from statsmodels_wrapper import fit_ols, regression_diagnostics result fit_ols(y, X, add_constantTrue) print(fR-squared: {result[rsquared]:.4f}) diagnostics regression_diagnostics(y, X) print(fDurbin-Watson: {diagnostics[durbin_watson]:.4f})根据 regression.py 的实现fit_ols返回的字典包含params、bse、tvalues、pvalues、rsquared、rsquared_adj、fvalue、f_pvalue、aic、bic、nobs共 11 个字段——这些与 statsmodels 的OLSResults属性一一对应并被转换为 Python 原生 list/float 以方便 JSON 序列化。regression_diagnostics则更进一步一次调用同时给出residuals/fitted_values残差与拟合值序列leverage帽子矩阵对角元hat_matrix_diagcooks_dCook 距离强影响点识别condition_number设计矩阵条件数多重共线性提示jarque_bera残差正态性检验的statistic与pvaluedurbin_watson残差一阶自相关检验统计量。除基础 OLS 外regression 模块还提供fit_wls加权最小二乘需传入weights、fit_gls广义最小二乘可传sigma协方差矩阵、fit_glsarAR 误差 GLSrho控制自回归阶数内部调用iterative_fit()、fit_recursive_ls递归最小二乘返回cusum/cusum_squares用于结构突变检验、predict_ols拟合后对新数据X_new预测、以及fit_rolling_ols/fit_rolling_wls滚动窗口回归window60为默认窗口内部使用RollingOLS/RollingWLS。4.2 时间序列分析ARIMA 建模与平稳性检验from statsmodels_wrapper import fit_arima, forecast_arima, adf_test model fit_arima(data, order(1, 1, 1)) print(fAIC: {model[aic]:.4f}) forecast forecast_arima(data, order(1, 1, 1), steps10) adf_result adf_test(data) print(fADF p-value: {adf_result[pvalue]:.4f})fit_arima见 timeseries_models.py有一个实用细节若传入seasonal_order(P, D, Q, s)内部会自动改用SARIMAX模型拟合返回字段包括params、aic、bic、hqic、resid、fittedvalues。adf_test的返回结构比裸的 statsmodels 更友好见 timeseries_funcs.pyadf_statistic、pvalue、usedlag、nobs、critical_values1%/5%/10% 三个临界值的字典、icbest信息准则最优值。同理kpss_test返回kpss_statistic、pvalue、lags、critical_values。4.3 分类模型Logit/Probitfrom statsmodels_wrapper import fit_logit, predict_logit result fit_logit(y_binary, X) print(fPseudo R-squared: {result[pseudo_rsquared]:.4f}) predictions predict_logit(y_binary, X, X_new) print(predictions[probabilities])fit_logit基于sm.Logit并调用fit(disp0)抑制迭代输出见 glm.py返回params、bse、tvalues、pvalues、aic、bic、llf对数似然、pseudo_rsquaredMcFadden 伪 R²。predict_logit则同时返回probabilities与拟合的params。4.4 统计检验t 检验、比例检验、异方差诊断from statsmodels_wrapper import ttest_ind, proportions_ztest, het_breuschpagan t_result ttest_ind(x1, x2) print(fT-test p-value: {t_result[pvalue]:.4f}) prop_result proportions_ztest(count, nobs, value0.5) bp_result het_breuschpagan(residuals, X) print(fBreusch-Pagan p-value: {bp_result[lm_pvalue]:.4f})这些函数位于 stats_tests.py。ttest_ind支持alternativetwo-sided/larger/smaller与usevarpooled/unequal两个参数返回statistic、pvalue、dfhet_breuschpagan一次返回lm_statistic、lm_pvalue、f_statistic、f_pvalue四个字段覆盖 LM 与 F 两种检验形式。4.5 功效分析研究设计与样本量计算from statsmodels_wrapper import ttest_power, anova_power power ttest_power(effect_size0.5, nobs50, alpha0.05) print(fPower: {power[power]:.4f}) sample_size ttest_power(effect_size0.5, power0.8, alpha0.05) print(fRequired n: {sample_size[nobs]:.0f})power_analysis.py 中ttest_power是基于TTestIndPower().solve_power的双向求解器在effect_size、nobs、power三个量中只给出两个时自动求解第三个。官方文档中的两个调用分别演示了「给定样本量算功效」与「给定目标功效反推所需样本量」两种用法。anova_power/ftest_power额外支持k_groups组数参数calculate_effect_size_cohens_d还会附带 Cohens d 的解释标签small/medium/large阈值 0.5 与 0.8。五、函数参考按模块全量速查5.1 Regressionregression.py函数说明fit_ols普通最小二乘回归fit_wls加权最小二乘回归需weightsfit_gls广义最小二乘可传sigmafit_glsar带 AR 误差项的 GLSrho阶数fit_recursive_ls递归最小二乘含 CUSUM 统计量predict_ols在新数据上做 OLS 预测regression_diagnostics综合诊断杠杆、Cook 距离、JB、DWfit_rolling_ols滚动 OLS默认窗口 60fit_rolling_wls滚动 WLS5.2 时间序列模型timeseries_models.py函数说明fit_arimaARIMA 模型传seasonal_order时自动转 SARIMAXforecast_arimaARIMA 拟合 向前预测steps步fit_sarimax带外生变量与季节项的 SARIMAXfit_varmax向量自回归滑动平均多变量fit_autoreg自回归模型lags、trendfit_ardl自回归分布滞后模型内生 外生fit_exponential_smoothing指数平滑trend/seasonal/seasonal_periodsstl_decomposeSTL 趋势-季节-残差分解period默认 12fit_dynamic_factor动态因子模型k_factors、factor_orderfit_unobserved_components不可观测成分模型状态空间fit_markov_regression马尔可夫区制转换回归k_regimesfit_vecm向量误差修正模型coint_rank、deterministicfit_holtHolt 双参数指数平滑可exponential、damped_trendfit_simple_exp_smoothing简单指数平滑fit_markov_autoregression马尔可夫转换自回归stl_forecastSTL 分解 外部预测模型组合5.3 时间序列函数timeseries_funcs.py函数说明calculate_acf自相关函数nlags默认 min(n/2, 40)支持alpha置信区间calculate_pacf偏自相关函数method默认ywmcalculate_ccf互相关函数adf_testADF 单位根检验regressioncautolagAICkpss_testKPSS 平稳性检验coint_testEngle-Granger 协整检验bds_testBDS 独立性检验max_dim、distanceq_statLjung-Box Q 统计量acorr_ljungboxLjung-Box 自相关检验支持return_dfseasonal_decompose_additive加性季节分解period默认 12arma_order_select基于 AIC/BIC 的 ARMA 定阶max_ar4、max_ma2detrend_linear/add_trend_to_data线性去趋势 / 添加趋势项5.4 GLM 模型glm.py函数说明fit_glm通用 GLMfamily支持 gaussian/binomial/poisson/gamma/inverse_gaussian/negative_binomial/tweediefit_logit/predict_logit逻辑回归拟合与预测fit_probitProbit 回归fit_poissonPoisson 回归计数数据fit_negative_binomial负二项回归返回离散参数alphafit_mnlogit多项 Logitfit_quantreg分位数回归quantile默认 0.5fit_gee广义估计方程面板/聚类数据需groupsfit_zero_inflated_poisson零膨胀 Poissonfit_conditional_logit/fit_conditional_poisson条件 Logit/Poisson配对数据需groupsfit_generalized_poisson广义 Poisson过度离散建模fit_zero_inflated_generalized_poisson零膨胀广义 Poisson5.5 统计检验stats_tests.py函数说明ttest_ind/ttest_1samp独立样本 / 单样本 t 检验ztest均值 Z 检验支持两样本与value假设值anova_lm线性模型 ANOVA 表proportions_ztest比例 Z 检验proportion_confint比例置信区间method默认normalchisquare_test卡方拟合优度检验jarque_bera_test/omnibus_normtest正态性检验JB 含偏度/峰度输出durbin_watson_test残差自相关 DW 检验het_breuschpagan/het_white/het_arch异方差诊断三件套acorr_breusch_godfrey序列相关 Breusch-Godfrey 检验linear_reset/linear_harvey_collier函数形式设定检验RESET / 线性性multipletests_correction/fdrcorrection_twostage多重比较校正默认fdr_bhcompare_means/descr_stats两样本均值比较 / 描述统计5.6 功效分析power_analysis.py函数说明ttest_powert 检验功效/样本量双向求解ftest_powerF 检验ANOVA功效anova_powerANOVA 功效k_groupsproportion_power比例检验功效calculate_effect_size_cohens_dCohens d 效应量calculate_effect_size_proportion比例效应量sample_size_proportion_confint比例置信区间所需样本量chisquare_power卡方检验功效n_bins5.7 多元分析multivariate.py函数说明perform_pca主成分分析返回特征值、载荷、得分、R²perform_factor_analysis因子分析method默认pa主轴法perform_manova多元方差分析通过 formula 接口canonical_correlation典型相关分析两组变量相关性5.8 稳健回归robust.py、生存分析survival.py、非参数nonparametric.py、GAMgam.pyrobust.pyfit_rlm稳健线性模型、mad中位绝对偏差、huber_scale、huber_location_scalesurvival.pyfit_cox_phCox 比例风险模型、survdiffLog-rank 检验、kaplan_meierKaplan-Meier 生存函数nonparametric.pykernel_density_estimation、kernel_regression、lowess_smoothing、multivariate_kdegam.pyfit_glm_gam广义可加模型、fit_gam_formulaformula 接口。六、stats_extended覆盖statsmodels.stats.api的百级函数库stats_extended.py共 1361 行源码是该 wrapper 覆盖面的关键官方文档明确其为 100 函数、完整对应statsmodels.stats.api。访问方式为模块属性风格from statsmodels_wrapper import stats_extended # 示例用法官方文档 result stats_extended.binom_test([60], [100], prop0.5) fdr stats_extended.fdrcorrection([0.01, 0.04, 0.1, 0.3]) het_test stats_extended.het_breuschpagan(residuals, X)官方文档列出的类别全景均已能在源码中找到对应实现二项检验binom_test、binom_test_reject_interval、binom_tost_reject_intervalANOVAanova_oneway、anova_generic置信区间confint_poisson、confint_mvmean、confint_effectsize_oneway效应量effectsize_2proportions、effectsize_oneway、effectsize_smd等价性检验equivalence_oneway、etest_poisson_2indep、nonequivalence_poisson_2indepFDR 校正fdrcorrection、fdrcorrection_twostage、multipletests、local_fdr异方差检验het_arch、het_breuschpagan、het_white、het_goldfeldquandt线性检验linear_harvey_collier、linear_lm、linear_rainbow、linear_reset正态性检验lilliefors、omni_normtest、jarque_bera、normal_adPoisson 检验test_poisson、test_poisson_2indep、tost_poisson_2indep功效计算power_binom_tost、power_equivalence_poisson_2indep、power_proportions_2indep比例检验proportions_chisquare、proportions_ztest、proportion_confint、test_proportions_2indep游程检验runstest_1samp、runstest_2sampt/z 检验ttest_ind、ttost_ind、ttost_paired、ztest、ztost协方差函数cov_nearest_factor_homog、cov_nw_panel、cov_white_simple相关函数corr_clipped、corr_nearest模型比较compare_cox、compare_encompassing、compare_j。完整函数清单以 stats_extended.py 源码为准。值得留意的是模块中还包含cochrans_qCochrans Q 检验、cohens_kappa/fleiss_kappa一致性系数等不在上述分类中的实用函数说明实际函数数量确实超过文档罗列的分类。七、服务化封装statsmodels_service.py 与 Qt 子页签README 是 wrapper 的入口文档而实际接入 FinceptTerminal 界面的桥梁是 statsmodels_service.py。该文件自述为 FinceptTerminal Statsmodels 子页签的计量经济学后端并声明与gs_quant_service/functime_service保持同一响应契约success: bool operation: str data: dict (when success) error: str (when failure) error_kind: str | None (validation | runtime | unknown_op) traceback: str | None (only on uncaught exceptions)这意味着所有操作都以「operation 名称 输入字典」的方式调用、以统一字典返回前端Qt/Python 桥无需关心底层模型差异。源码还做了两项工程化处理依赖探测try: import statsmodels... STATSMODELS_OK True缺失时优雅降级并显式报错而不是让整个服务崩溃告警抑制warnings.filterwarnings(ignore, ...)过滤 statsmodels 的 UserWarning/FutureWarning避免刷屏式日志干扰 UI。服务层实现了几类高层操作例如op_adf_kpss会同时执行 ADF 与 KPSS 检验并给出组合判定STATIONARY/NON-STATIONARY/DIFFERENCE-STATIONARY (trend present)/TREND-STATIONARY比单独调用adf_test/kpss_test更进一步op_acf_pacf在计算 ACF/PACF 的同时标注 95% 显著性带±1.96/√n内的显著滞后阶数并自动给出 ARIMA(p,q) 定阶建议op_granger_causality则提供序列间 Granger 因果检验。这类「组合判定 自动建议」能力正是 wrapper 在 raw statsmodels 之上带来的附加价值。八、CLI 集成statsmodels_cli.py 的命令式入口除直接 import 外wrapper 还被 statsmodels_cli.pyAnalytics目录下作为 CLI 引擎使用。其中的StatsmodelsEngine类在初始化时通过from statsmodels_wrapper import (...)按组加载四类能力并存入字典ts_modelsfit_arima、forecast_arima、fit_sarimax、fit_varmax、fit_autoreg、fit_exponential_smoothing、stl_decompose、fit_holt、fit_simple_exp_smoothing、fit_markov_regressionts_funcsacf、pacf、adf_test、kpss_test、coint_test、ljung_box、seasonal_decompose、arma_order_selectregressionols、wls、gls、predict_ols、diagnostics、rolling_olsglmglm、logit、predict_logit、probit、poisson、quantregstats_teststtest_ind、ttest_1samp、ztest、anova、jarque_bera、durbin_watson、breusch_pagan、white_test、descriptive。每个加载组都有独立的try/except ImportError保护——即使 statsmodels 部分能力不可用其余模块仍能正常运作。CLI 层还实现了 NaN/Inf 清洗的 JSON 编码器_sanitize_obj将 NaN/Inf 转为null确保统计结果中的缺失值可以无损进入 JSON 输出链路。九、自测与验证官方文档说明所有模块均内置自测if __name__ __main__块可逐个运行python regression.py python timeseries_models.py python glm.py python stats_extended.py # 测试扩展统计模块每个自测脚本都会生成合成数据如np.cumsum(np.random.randn(n)) 10的随机游走序列、sin叠加噪声的季节序列等拟合后打印关键指标R²、AIC、p-value、预测长度等最后输出Test: PASSED表示通过。例如regression.py的自测会依次验证 OLS、WLS、predict_ols、regression_diagnostics、滚动 OLS 五条链路timeseries_models.py则覆盖 ARIMA、预测、AutoReg、指数平滑、STL、VARMAX、Holt、SES 共 8 个模型。你也可以用python -m statsmodels_wrapper.regression的方式执行懒加载机制正是为兼容这种调用方式而设计。十、版本信息Statsmodels0.14.4Wrapper 版本2.0.0Complete Coverage总函数数200覆盖目标100% of statsmodels API以statsmodels.stats.api为完整覆盖对象最后更新2026-01-23十一、许可与定位与整个 FinceptTerminal 项目一致本 wrapper 采用 MIT License。作为项目 Analytics 目录下与gs_quant_wrapper、functime_wrapper、fortitudo_tech_wrapper等并列的「库封装层」之一它的定位非常明确把 statsmodels 的完整统计能力以统一、可序列化、可服务化的形态交付给上层量化分析 CLI 与图形界面——从回归诊断到时序预测从假设检验到功效分析一行 import 即可获得与项目其余模块一致的调用体验。【免费下载链接】FinceptTerminalFinceptTerminal is a modern finance application offering advanced market analytics, investment research, and economic data tools, designed for interactive exploration and>项目地址: https://gitcode.com/GitHub_Trending/fi/FinceptTerminal创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价