资讯详情

Statsmodels GEE 完全指南:用广义估计方程处理面板、聚类与重复测量数据

📅 2026/9/23 12:18:09 | 华诺云谱 👁 阅读
Statsmodels GEE 完全指南:用广义估计方程处理面板、聚类与重复测量数据
数据分析数据科学科研【免费下载链接】statsmodelsStatsmodels: statistical modeling and econometrics in Python项目地址https://gitcode.com/gh_mirrors/st/statsmodels点击查看免费下载本文基于仓库文档 docs/source/gee.rst并结合 statsmodels/genmod/generalized_estimating_equations.py、statsmodels/genmod/cov_struct.py 与 statsmodels/genmod/qif.py 等源码与测试展开。广义估计方程Generalized Estimating Equations, GEE是 statsmodels 中处理面板数据、聚类数据与重复测量数据的核心边际回归模型它允许同一簇cluster内部的观测彼此相关同时假设不同簇之间相互独立。本文将从理论定位、真实数据集上的实战示例、三类模型类、十种依赖结构、结果对象与推断方法稳健方差、Score 检验、QIC以及 QIF 备选方案等维度完整梳理 GEE 在 statsmodels 中的使用方法与底层实现读者读完即可在自己的纵向/聚类数据上完成建模、拟合、诊断与模型比较。一、什么是 GEE边际模型如何建模“组内相关”GEE 由 Liang 与 Zeger 于 1986 年提出是广义线性模型GLM在依赖数据dependent data上的延伸。它估计的是边际marginal回归模型描述响应变量均值如何随协变量变化而不对簇内的随机效应做完整建模簇内相关性通过一个“工作相关结构”working correlation/covariance structure来描述。关键适用场景面板数据panel data同一实体如国家、公司、个体多个时间点的观测聚类数据cluster data同一学校、医院、家庭内的多个观测重复测量数据repeated measures data同一受试者多次随访的测量值。在统计假设上GEE 只要求同一簇内的观测可能相关不同簇之间的观测相互独立。它支持与 GLM 完全相同的单参数指数族分布one-parameter exponential families如高斯、泊松、二项、负二项、伽马、逆高斯等。正因为“工作相关结构”即使设定错误回归系数的点估计依然一致一致性不依赖相关结构GEE 在生物统计与计量经济学中被广泛使用。二、快速上手癫痫发作数据的 Poisson GEE文档 docs/source/gee.rst 给出了一个可直接运行的示例使用 MASS 包的epil癫痫数据集拟合以subject患者为簇、簇内采用可交换Exchangeable相关结构的 Poisson 回归。import statsmodels.api as sm import statsmodels.formula.api as smf data sm.datasets.get_rdataset(epil, packageMASS).data fam sm.families.Poisson() ind sm.cov_struct.Exchangeable() mod smf.gee(y ~ age trt base, subject, data, cov_structind, familyfam) res mod.fit() print(res.summary())要点拆解代码片段作用smf.gee(formula, groups, data, ...)通过公式接口创建 GEE 模型groups指定簇标识列名sm.families.Poisson()指定分布族计数数据常用sm.cov_struct.Exchangeable()指定簇内工作相关结构任意两个簇内观测相关性相同res.summary()输出系数、标准误、z 值与 p 值等回归表关于本示例与真实癫痫数据仓库测试 statsmodels/genmod/tests/test_gee.py 中的test_poisson_epil给出了可复现版本使用GEE.from_formula(y ~ age trt base, data[subject], data, cov_structind, familyfam)拟合并在cov_typenaive下断言 GEE 的系数与标准误与普通 Poisson GLMGLM.from_formula一致rtol1e-6。这印证了一个重要性质当相关结构退化为独立时GEE 的均值参数估计与 GLM 一致。三、模型类GEE、NominalGEE 与 OrdinalGEE模块statsmodels.genmod.generalized_estimating_equations从statsmodels.api与statsmodels.formula.api均可访问见 statsmodels/api.py 与 statsmodels/genmod/api.py提供了三个模型类类适用响应变量默认分布族默认相关结构GEE连续/计数/二值等GaussianIndependenceOrdinalGEE有序分类BinomialOrdinalIndependenceNominalGEE无序分类_MultinomialNominalIndependence3.1 GEE 构造函数与核心参数GEE直接继承自GLMgeneralized_estimating_equations.py构造函数签名如下GEE(endog, exog, groups, timeNone, familyNone, cov_structNone, missingnone, offsetNone, exposureNone, dep_dataNone, constraintNone, update_depTrue, weightsNone, **kwargs)各参数含义依据源码 docstringendog/exog因变量与自变量groups簇标签数组观测按此分组簇间要求独立time观测的时间/位置信息用于依赖距离的相关结构如 AR、Stationary、Unstructured若不提供默认取簇内等间隔的 0,1,2,... 网格L653-662familyGLM 分布族实例缺省为Gaussian若传入非families.Family子类实例会抛出ValueErrorL599-603cov_struct工作相关结构实例缺省为IndependenceL606-613missing缺失值处理方式none/drop/raiseoffset/exposure线性预测项中的偏移量与暴露量当链接为 log 时log(exposure)会加入 offsetdep_data供Nested等结构使用的依赖数据constraint形如(lhs, rhs)的线性等式约束满足lhs * params rhsupdate_dep是否在迭代中更新相关参数当所有簇都只有 1 个观测等价于拟合 GLM时会自动置为FalseL686-690weights簇内观测权重。3.2 from_formula 公式接口GEE.from_formula(formula, groups, data, subsetNone, timeNone, offsetNone, exposureNone, *args, **kwargs)是文档示例使用的入口。它的特殊之处在于groups、time、offset、exposure、dep_data均支持传字符串形式的列名内部会从data中取值L771-794。例如文档示例中subject就是数据框中簇标识列名。3.3 OrdinalGEE 与 NominalGEE分类响应的重编码有序与无序分类响应无法直接套用高斯/泊松框架statsmodels 的做法是将多分类数据重编码为一组二值指示变量再走 GEE 流程OrdinalGEE.setup_ordinal将每个有序观测展开为ncut水平数减 1个累积指示变量I(y 阈值)并额外为每个阈值生成截距列列名形如I(y1.0)要求使用Binomial族L2468-2589NominalGEE.setup_nominal则用np.kron构造分块对角设计矩阵为每个非基准水平生成独立系数块列名形如x1[1.0]默认使用_Multinomial族L2798-2927。两者对应的相关结构是OrdinalIndependence与NominalIndependence详见下一节。仓库中 statsmodels/genmod/tests/gee_categorical_simulation_check.py 专门对这两类模型做仿真检验。四、依赖相关结构cov_struct 模块全景GEE 的核心在于“工作相关结构”。所有结构均定义在 statsmodels/genmod/cov_struct.py 中统一继承自基类CovStruct。基类通过dep_params属性保存当前相关参数并约定四个核心接口initialize(model)、update(params)、covariance_matrix(endog_expval, index)、covariance_matrix_solve(...)。文档 docs/source/gee.rst 列出的十种结构及源码要点如下结构类描述关键实现细节Independence独立结构相关矩阵恒为单位阵update不做任何事L208-235Exchangeable可交换结构簇内任意两观测相关性相同dep_params为标量相关用矩估计残差平方和更新L330-413Unstructured无结构每个位置对都有独立相关参数必须提供整数类型的time否则抛ValueErrorL260-268Autoregressive一阶自回归相关性 dep_params ** 距离dist_func自定义距离函数gridTrue走网格加速实现默认time为簇内索引位置L792-863Stationary平稳结构相关性是观测间距的任意函数max_lag控制纳入的最大距离grid参数决定用索引位置还是time定义距离L620-789Nested嵌套结构刻画层级分区如学校→班级→学生每层独立的随机效应方差层级由dep_data定义公式形式建议0 a b ...L416-448GlobalOddsRatio全局比值比面向有序/无序分类数据的相关结构endog_type取ordinal或nominal用粗比值比crude odds ratio初始化L1087-1161NominalIndependence名义独立名义分类模型专用L1354Equivalence等价结构基于配对定义等价关系的相关结构支持pairs/labels构造L13834.1 关于 PSD 投影与数值稳健性CovStruct.covariance_matrix_solve负责求解形如covmat * soln rhs的线性方程组。当相关矩阵不是半正定PSD时基类会用cov_nearest将其投影到最近的 PSD 矩阵投影方法由构造参数cov_nearest_method控制取值clipped默认或nearestL46-49、L160-198。若 20 次投影仍无法分解会回退为对角矩阵并发出ConvergenceWarning。Exchangeable与Stationary(gridTrue)等结构重写了covariance_matrix_solve利用结构的解析性质避免显式构造矩阵大幅提升大簇计算效率。4.2 结构选择的实践建议簇内相关性大致恒定 →Exchangeable时间序列式重复测量、相关性随间隔衰减 →Autoregressive/Stationary观测位置不完全等间隔 → 为Autoregressive提供time并自定义dist_func数据存在多级嵌套 →Nesteddep_data有序/无序分类 →OrdinalIndependence/NominalIndependence/GlobalOddsRatio不确定相关形式时Independence仍能给出一致的均值参数估计配合稳健方差。五、分布族与链接函数与 GLM 完全一致GEE 支持的分布族与 GLM 相同文档明确指出“当前实现的分布族与 GLM 相同”完整列表见 docs/source/glm.rst 的家族清单实现位于 statsmodels/genmod/families/包括Gaussian高斯Binomial二项Poisson泊松NegativeBinomial负二项Gamma伽马InverseGaussian逆高斯TweedieTweedie含var_power参数链接函数同样复用 GLM 的链接体系。并非每个链接都适用于每个分布族可用链接列表可通过以下方式查询文档原句 sm.families.family.familyname.links例如sm.families.Poisson().links会列出泊松族可用的链接如log、identity、sqrt。源码中GEE.__init__会检查传入族实例的链接是否在该族的safe_links内若不满足会发出DomainWarningL525-537。六、拟合与推断fit 参数、稳健方差与偏差校正6.1 fit 方法与收敛控制GEE.fit的签名L1295-1307fit(maxiter60, ctol1e-6, start_paramsNone, params_niter1, first_dep_update0, cov_typerobust, ddof_scaleNone, scaling_factor1.0, scaleNone)maxiter最大迭代次数默认 60达到上限未收敛会发IterationLimitWarningctol收敛阈值基于回归参数更新向量的 L2 范数del_params sqrt(sum(score**2))params_niter/first_dep_update控制相关参数更新的频率与起始时机——只有同时满足itr % params_niter 0且itr first_dep_update才更新依赖结构且至少完成一次相关参数更新后才允许提前收敛L1360-1372cov_type可选robust默认三明治稳健协方差、naive模型假定方差、bias_reducedMancl–DeRouen 小样本偏差校正ddof_scale估计尺度参数时从样本量中减去的自由度默认取exog列数scale若为数值则直接固定尺度参数None时对Binomial、Poisson、NegativeBinomial等族默认取 1.0estimate_scale见 L981-1026。拟合循环的核心是交替执行两步_update_mean_params求解当前相关结构下的拟得分方程更新均值参数_update_assoc基于残差更新相关参数。二者在源码 L1081-1136 与 L1337-1372 中实现。6.2 三明治协方差robust / naive / bias_reduced_covmatL1166-1233同时计算两个协方差naivemodel-basedcov_naive B^{-1} * scale仅在相关结构正确设定时有效robustsandwichcov_robust B^{-1} * C * B^{-1}其中C是各簇得分向量的外积之和即使工作相关结构设定错误依然渐进有效这也是 GEE 的默认选择。_bc_covmatL1237实现 Mancl 与 DeRouen2001提出的偏差校正三明治估计用于小簇数场景对应cov_typebias_reduced。GEEResults中还提供了standard_errors(cov_type...)便捷方法可在三种协方差间任意切换L1946-1977。6.3 假设检验Score 检验与模型比较GEE.compare_score_test(submodel)给定一个已拟合的子模型对大模型做 Score 检验返回{statistic, p-value, df}字典无需对大模型调用 fitL834-979GEEResults.score_test()针对带线性约束constraint拟合的模型返回 Score 检验结果与compare_score_test互为补充——后者适合比较两个显式模型前者支持任意线性等式约束L1984-2013。两个方法均以 Guo 与 Pan2002关于 GEE Score 检验小样本表现的研究为依据。6.4 模型选择QIC 与 QICuGEE 没有传统似然模型比较使用 Pan2001提出的拟信息准则 QIC。GEE.qicL1798-1883通过数值积分 Wedderburn 拟似然返回三个量ql拟似然值qic可同时比较均值结构与相关结构qicu简化的 QIC只能比较均值结构。结果对象的res.qic(scale..., n_step1000)是便捷入口L2052-2076。源码特别提示两点L1827-1842数值拟似然与其它软件用解析式算出的 QIC 绝对值不同只有同一数据上不同模型的 QIC 之差才有意义当尺度参数未知时比较模型应使用同一个scale 估计值。6.5 正则化 GEEGEE.fit_regularized(pen_wt, scad_param3.7, maxiter100, ddof_scaleNone, update_assoc5, ctol1e-5, ztol1e-3, eps1e-6, scaleNone)提供 SCAD 惩罚的稀疏估计面向高维纵向数据Wang, Zhou Qu, 2012要求使用正则链接L1538-1661。测试 statsmodels/genmod/tests/test_gee.py 中的test_regularized_poisson与test_regularized_gaussian覆盖了该路径。6.6 边际效应与其他结果方法GEEResults继承自GLMResults因此具备残差resid、resid_split、resid_centered、get_margeff边际效应、plot_added_variable/plot_partial_residuals/plot_ceres_residuals诊断图等能力GEEMarginsL3258封装边际效应的推断结果。簇级残差按簇拆分的方法resid_split/resid_centered_split由test_gee_results_resid_split验证。七、备选方案二次推断函数 QIF模块 statsmodels/genmod/qif.py 提供 QIFQuadratic Inference Functions作为 GEE 的高效替代。QIF 的优势在于对相关结构设定更稳健、可能更高效并提供不同于 GEE 的模型选择与推断途径L117-148。其理论依据为 Qu, Lindsay Li2000发表在Biometrika的论文。使用方式与 GEE 对称from statsmodels.genmod.qif import QIF from statsmodels.genmod.families import Poisson from statsmodels.genmod import cov_struct model QIF(endog, exog, groups, familyPoisson(), cov_structcov_struct.Exchangeable()) res model.fit()QIF 配套三种协方差结构继承自QIFCovarianceQIFIndependence、QIFExchangeable、QIFAutoregressive结果类为QIFResults含aic、bic、fittedvalues、summary。模型类的fit(maxiter100, start_paramsNone, tol1e-6, gtol1e-4, ddof_scaleNone)与from_formula(formula, groups, data, ...)均已实现测试见 statsmodels/genmod/tests/test_qif.py其test_qif_numdiff用数值微分验证了 QIF 目标函数的梯度。八、模块参考速查表按 docs/source/gee.rst 的 Module Reference 整理类别符号所在源码文件模型类GEE、NominalGEE、OrdinalGEEstatsmodels/genmod/generalized_estimating_equations.py模型类QIFstatsmodels/genmod/qif.py结果类GEEResults、GEEMarginsgeneralized_estimating_equations.py结果类QIFResultsstatsmodels/genmod/qif.py依赖结构CovStruct、Autoregressive、Equivalence、Exchangeable、GlobalOddsRatio、Independence、Nested、NominalIndependence、Stationary、Unstructuredstatsmodels/genmod/cov_struct.py分布族同 GLMGaussian/Binomial/Poisson/NegativeBinomial/Gamma/InverseGaussian/Tweediestatsmodels/genmod/families/链接函数同 GLM可用sm.families.family.name.links查询statsmodels/genmod/families/links.py九、进一步阅读核心实现statsmodels/genmod/generalized_estimating_equations.py3530 行含 GEE/OrdinalGEE/NominalGEE 完整实现依赖结构statsmodels/genmod/cov_struct.pyQIF 实现statsmodels/genmod/qif.py测试与验证statsmodels/genmod/tests/test_gee.py、statsmodels/genmod/tests/test_qif.py、statsmodels/genmod/tests/gee_simulation_check.py仿真恢复真实参数检验分布族与链接statsmodels/genmod/generalized_linear_model.py 及 docs/source/glm.rst十、参考文献与文档一致Liang KY, Zeger SL. Longitudinal data analysis using generalized linear models.Biometrika(1986) 73(1): 13-22.Zeger SL, Liang KY. Longitudinal Data Analysis for Discrete and Continuous Outcomes.BiometricsVol. 42, No. 1 (Mar., 1986), pp. 121-130.Rotnitzky A, Jewell NP (1990). Hypothesis testing of regression parameters in semiparametric generalized linear models for cluster correlated data,Biometrika, 77, 485-497.Guo X, Pan W (2002). Small sample performance of the score test in GEE.Mancl LA, DeRouen TA (2001). A covariance estimator for GEE with improved small-sample properties.Biometrics57(1): 126-134.Pan W (2001). Akaikes information criterion in generalized estimating equations.Biometrics57(1).Qu A, Lindsay B, Li B (2000). Improving Generalized Estimating Equations using Quadratic Inference Functions,Biometrika87:4.Heagerty PJ, Zeger SL (1996). Marginal Regression Models for Clustered Ordinal Measurements.JASA91(435).Wang L, Zhou J, Qu A (2012). Penalized generalized estimating equations for high-dimensional longitudinal data analysis.Biometrics68(2): 353-360.赞分享数据分析数据科学科研【免费下载链接】statsmodelsStatsmodels: statistical modeling and econometrics in Python项目地址https://gitcode.com/gh_mirrors/st/statsmodels点击查看免费下载相关推荐Statsmodels中的广义估计方程与面板数据分析Statsmodels中的广义估计方程与面板数据分析 本文全面介绍了Statsmodels库中广义估计方程GEE和面板数据分析方法的原理、实现与应用。内容涵数据分析数据科学科研5种相关结构选择技巧Statsmodels广义估计方程纵向数据分析完全指南5种相关结构选择技巧Statsmodels广义估计方程纵向数据分析完全指南 广义估计方程 GEE 是Statsmodels统计建模库中用于处理纵向数据的强大工数据分析数据科学科研Statsmodels广义矩估计工具变量过度识别检验与权重选择Statsmodels广义矩估计工具变量过度识别检验与权重选择 你是否在处理经济数据时遇到过变量内生性问题是否为工具变量选择和模型有效性检验而困扰本文将通数据分析数据科学科研上一篇OneUptime 单服务器 Docker Compose 部署指南从克隆仓库到生产就绪的完整实操下一篇从零开始构建六足机器人Hexapod5开源项目全解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。