statsmodels 0.8.0 版本深度解析:状态空间平滑、MICE 多重插补与马尔可夫区制转移模型的引入
数据分析数据科学科研【免费下载链接】statsmodelsStatsmodels: statistical modeling and econometrics in Python项目地址https://gitcode.com/gh_mirrors/st/statsmodels点击查看免费下载statsmodels 0.8.0 是该项目在时间序列计量与统计推断方向上的一次里程碑式发布它以 0.7 引入的状态空间框架为地基补齐了 Kalman 平滑、后估计post-estimation诊断、不可观测成分Unobserved Components、VARMAX 与动态因子模型同时带来了 MICE 多重插补、马尔可夫区制转移模型、KPSS/BDS 检验与大量工程性改进。本文以 version0.8.rst 发布说明为主线结合当前仓库源码逐项还原 0.8.0 的核心功能、API 形态与使用方式帮助你理解这些现代计量工具在 statsmodels 中的落地位置与调用入口。一、发布总览0.8.0 的三个关键词按发布说明的概括0.8.0 的主线功能可以浓缩为三点状态空间statespace框架的家族扩张新增平滑器、后估计工具、残差诊断、不可观测成分模型以及 VARMAX、动态因子模型两类多元模型多重插补MICE子包正式落地statsmodels.imputation成为新子包MICE 与基于次序统计量的回归插补ROS同时加入兼容性与收尾工作代码库全面兼容较新的 numpy 与 pandas且这是最后一个支持 Python 2.6 的版本。文档同时提示了两点重要事实官方文档此后托管于 statsmodels.orgstable/devel 两套构建新功能的 API 稳定性不做保证但改动会尽量保持向后兼容。此外predict的行为发生了一次向后不兼容的调整——当exog传入 DataFrame 时predict现在返回 pandas Series含缺失/NaN 值PCA 也从statsmodels.tools移入新的statsmodels.multivariate子包。二、状态空间从滤波到平滑的完整推断链0.8.0 的状态空间工作主要由 Chad Fulton 在 GSOC 2015 期间完成对应 PR #2434、#2566、#2431、#2432、#2563、#2830 等其成果集中沉淀在 statsmodels/tsa/statespace 目录下包括representation.py、kalman_filter.py、kalman_smoother.py、mlemodel.py、structural.py、varmax.py、dynamic_factor.py等核心文件。2.1 Kalman 平滑器利用全样本信息推断状态0.7 时代的状态空间模型只能做滤波filtering即仅使用截至 t 时刻的信息估计 t 时刻的隐状态。0.8 通过Kalman smootherPR #2434补齐了利用整段样本对每一时刻的状态做推断的能力其实现位于 kalman_smoother.py并通过_kalman_smoother.pyx.in的 Cython 内核支撑性能。平滑能力的引入还带来了两个直接收益它是后续**模拟平滑simulation smoothing**与EM 算法期望最大化估计的基础设施所有状态空间模型从此统一继承smooth方法见 mlemodel.pyfit在得到最大似然估计后也会附带平滑后的状态估计结果对象可直接访问smoothed_state等属性。2.2 后估计工具预测、模拟与脉冲响应PR #2566 为所有状态空间模型统一补齐了四类后估计post-estimation方法均定义在 mlemodel.py 中方法定位源码位置get_prediction样本内/样本外预测附带标准误与置信区间mlemodel.pyget_forecast前向多步预测的便捷入口steps控制步数mlemodel.pysimulate按给定状态空间过程模拟时间序列路径mlemodel.pyimpulse_responses计算状态向量创新innovations引发的脉冲响应mlemodel.py其中get_forecast(steps1, signal_onlyFalse, **kwargs)还支持signal_only参数——置为True时只考虑信号成分而忽略观测噪声这在分解趋势/周期/季节成分时非常实用。2.3 残差诊断三个统计检验与四联图PR #2431 将三组经典残差诊断统一接入所有状态空间模型方法定义在 mlemodel.pytest_normalityL3512对残差做Jarque-Bera 正态性检验test_heteroskedasticityL3561检验残差同方差性机制类似Goldfeld-Quandt 检验支持alternativetwo-sided与use_f两种形式test_serial_correlationL3661基于Ljung-Box或 Box-Pierce统计量检验残差自相关可用lags控制滞后阶数。这三组检验统计量现已自动并入summary输出mlemodel.py无需单独计算即可在模型汇总表中看到。此外plot_diagnosticsmlemodel.py一次产出四张图从标准化残差、QQ 图、自相关图到 p 值序列直观评估拟合质量。2.4 不可观测成分模型结构时间序列的通用分解**Unobserved Components不可观测成分**模型即结构时间序列模型由 PR #2432 引入实现为 structural.py 中的UnobservedComponents(MLEModel)结果类为 UnobservedComponentsResults。它把单变量时间序列泛化解耦为y_t trend_t cycle_t seasonal_t irregular_t β·x_t 自回归误差项特殊情形包含局部水平模型local level与局部线性趋势模型local linear trend通用形式允许趋势trend、周期cycle、季节seasonal、不规则irregular四类成分自由组合并可叠加外生回归元exogenous regressors与 AR 误差典型调用形如UnobservedComponents(endog, levelTrue, trendTrue, seasonal12)随后fit()得到最大似然估计。2.5 多元模型VARMAX 与动态因子PR #2563 同时落地了两个标准多元计量模型VARMAX向量自回归移动平均 外生回归元varmax.py是探索多条时间序列协方差结构的流行简约reduced form方法动态因子模型Dynamic Factorsdynamic_factor.py用于从大量观测序列中提取少数共同因子。2.6 递归最小二乘扩展窗口 OLSPR #2830 新增的recursive least squares递归最小二乘又称 expanding-window OLS位于 statsmodels/regression/recursive_ls.py核心类为RecursiveLSL34与RecursiveLSResultsL277。它同样构建在状态空间估计框架之上继承MLEModel适合在线/滚动估计系数并监控参数稳定性。此外状态空间框架还收获了两类工程改进缺失数据处理的增强PR #2770、#2809以及边界与角点场景fringes and corner cases的持续重构与 bug 修复。三、时间序列分析马尔可夫区制转移模型PR #2980Chad Fulton将**马尔可夫区制转移Markov Switching**模型引入 statsmodels/tsa/regime_switching 子目录MarkovRegressionmarkov_regression.py回归效应随不可观测区制regime变化MarkovAutoregressionmarkov_autoregression.py自回归动力学随区制变化。其核心假设是区制之间的转换服从马尔可夫过程转移概率只依赖当前区制由此可以刻画经济周期中的扩张/衰退切换、利率制度变化等典型场景。两个模型均继承自公共基类MarkovSwitching共享fit、expected_durations、smoothed_marginal_probabilities等推断接口。四、统计模块新增KPSS、BDS 与协整检验0.8.0 在 statsmodels/tsa/stattools 与 statsmodels/tsa/_bds.py 中新增/重构了三项重要检验KPSS 平稳性/单位根检验PR #2775N-Woudakpss_stattools.py与 ADF 检验形成互补——ADF 原假设为存在单位根KPSS 原假设为平稳BDS 检验PR #934Chad Fultonbds(x, max_dim2, epsilonNone, distance1.5)_bds.py检验序列中的非线性依赖结构增强 Engle/Granger 协整检验PR #3146Josef Perktold将隐藏函数重构为公开的coint_stattools.py。同批还包含adfuller_stattools.py等既有函数的持续维护测试覆盖可参考 test_stattools.py。五、统计推断全家桶列联表、局部 FDR、中介分析与多项比例置信区间0.8.0 对 statsmodels.stats 的扩充集中在假设检验与推断工具列联表Contingency TablesPR #2418Kerby Sheddencontingency_tables.py 提供TableL90、SquareTable、Table2x2L670、StratifiedTableL965以及mcnemar检验L1349等局部 FDR 与多重检验PR #2297Kerby Shedden补充了大规模假设检验场景下的错误发现率控制工具中介分析Mediation AnalysisPR #2352Kerby Shedden支持因果中介效应的点估计与置信区间多项比例置信区间PR #3162Sebastien Lerique / Josef Perktold为多项分布的比例构造区间估计加权分位数PR #2707Kerby Shedden在DescrStatsW中新增加权分位数支持。六、生存分析DurationKaplan-Meier 全面升级0.8.0 在 statsmodels/duration 中完善了生存分析工具Kaplan-Meier 生存函数PR #2614Kerby Shedden位于 survfunc.py累积发生率函数Cumulative incidence ratePR #3016Kerby Shedden同时补充了三项细化能力KM 估计中的频率权重#2992、**进入时间entry times**支持#3126以及PHReg比例风险回归的截距处理#3095。七、多重插补新子包 statsmodels.imputation0.8.0 正式新增statsmodels.imputation子包覆盖两大方法MICEMultivariate Imputation by Chained Equations链式方程多重插补PR #2076Frank Cheng GSOC 2014 / Kerby Shedden核心实现为 mice.py 中的MICEDataL142、MICEL1203与MICEResultsL1390。MICEData负责按变量逐个以条件回归模型填补MICE负责运行多重填补循环并汇总分析结果基于次序统计量的回归插补ROSImputation by regression on Order StatisticPR #3019Paul Hobson适用于左截断/检出限detection limit数据的插补场景。八、惩罚估计、GLM 与多元分析8.1 Elastic Net 正则化Elastic netL1L2 混合惩罚通过fit_regularized统一接入OLS、GLM 与 PHRegKerby Shedden。与早期 L1 惩罚实现相比0.8 的弹性网同时支持 L1 与 L2 两个方向的收缩为用户提供了alpha/L1_wt之类的调节旋钮对应实现见 base/_penalized.py 与各模型类的fit_regularized方法。8.2 GLMTweedie 新族与更灵活的收敛控制Tweedie 分布族成为 GLM 新成员PR #2872Peter Quackenbush / Josef Perktold实现位于 genmod/families覆盖了介于泊松与伽马之间的幂方差结构GLM 获得频率权重支持当时尚不完整文档明确标注 currently without full support收敛选项更加灵活PR #2803Peter Quackenbush可精细控制迭代与容差。8.3 多元子包与 PCA 迁移statsmodels.multivariate成为新子包0.7 中位于statsmodels.tools的PCA 迁移至此此为 0.8 明确列出的向后不兼容变更之一当前实现为 multivariate/pca.py。九、文档体系与工具链改进文档构建全面升级Tom Augspurger使用最新 jupyter 与 Python 3 兼容流程重新构建文档即当前 docs/source 的 Sphinx 体系既有工具的批量打磨均可在当前仓库对应文件找到实现与测试seasonal_decompose改进周期性处理PR #2987add_constant/add_trendtools/tools.py重构并增强 pandas 兼容性PR #2240Kevin Sheppardacf/pacf/acovf新增缺失值处理选项PR #3020与滞后阶数数组支持PR #2989ARIMA 增加 pickling 支持PR #3412zaemyung模型可序列化持久化io.SimpleTablesummary允许名称含特殊字符PR #3015lagmat/lagmat2ds支持 pandas 输入PR #2310 / #3042CompareMeans新增from_data与summary方法PR #2754robust/sandwich 协方差 API 清理PR #3162Josef Perktold相关实现可参考 stats/sandwich_covariance.py 的cov_cluster、cov_hac_simple等修复 influence plot 参数顺序颠倒的 bugPR #3158。十、质量标签、向后不兼容与版本收尾10.1 错误分类标签type-bug-wrong发布说明特别指出从 0.8 起issue 系统引入type-bug-wrong标签专门标记会静默返回错误数值而非报错的 bug 类型以区别于普通可用性问题。这是对数值库可靠性治理的重要举措——静默错误比崩溃更危险值得使用者在升级后复核既有模型的输出。10.2 向后不兼容与弃用清单predict在exog为 DataFrame 时返回 pandas Series含缺失/NaNPCA 由statsmodels.tools迁入statsmodels.multivariate该版本为最后一个支持 Python 2.6 的发布。10.3 维护与致谢除新功能贡献者外0.8 的常规维护工作主要来自 Kevin Sheppard、Pierre Barbier de Reuille、Tom Augspurger总维护与代码评审人为 Josef Perktold。发布说明依据 git log 自动生成了 0.8 与 0.7 两届贡献者名单详见 version0.8.rst 文末 note 块。结语0.8.0 在 statsmodels 演进中的坐标从当前仓库结构回看0.8.0 的价值在于把 0.7 的状态空间框架从一个理论骨架补成了可直接用于实证研究的工具族——平滑、预测、模拟、脉冲响应、残差诊断一应俱全并顺势带出 VARMAX、动态因子、马尔可夫区制转移等现代时间序列模型统计侧则通过 MICE、列联表、中介分析、KPSS/BDS 等补强了横截面与推断能力。这一版本确立的 API 形态get_forecast、plot_diagnostics、fit_regularized等至今仍在 statsmodels/tsa/statespace 与 statsmodels/stats 中延续是理解后续版本时间序列与统计模块设计的关键参照。赞分享数据分析数据科学科研【免费下载链接】statsmodelsStatsmodels: statistical modeling and econometrics in Python项目地址https://gitcode.com/gh_mirrors/st/statsmodels点击查看免费下载相关推荐终极指南如何让旧款Mac安装最新macOS系统终极指南如何让旧款Mac安装最新macOS系统 还在为老款Mac无法升级到最新的macOS系统而烦恼吗OpenCore Legacy PatcherOCL操作系统固件驱动开发3步掌控微信记忆WeChatMsg数据自主备份终极指南3步掌控微信记忆WeChatMsg数据自主备份终极指南 你是否曾经因为手机丢失、系统更新或微信清理而痛失珍贵的聊天记录那些与亲友的温馨对话、工作群里的重要决Statsmodels马尔可夫转换模型捕捉时间序列结构变化Statsmodels马尔可夫转换模型捕捉时间序列结构变化 在时间序列分析中许多经济和金融数据会表现出明显的结构性变化特征例如经济扩张与衰退的交替、市场波数据分析数据科学科研上一篇Zero 批量发邮件 从建草稿到 CC/BCC 群发只需三步下一篇【亲测免费】 探索ROS中的robot_localization精准定位与导航的利器创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考