NHANES 复杂抽样加权:为何层内 PSU 只有 1 个时 R 软件会报错?

文摘   科学   2024-08-23 19:20   北京  

引言


在流行病学和公共卫生研究中,复杂抽样设计(Complex Survey Design)广泛用于数据收集,例如美国国家健康与营养检查调查(NHANES)。这种设计方式可以提高数据的代表性和统计效率。然而,当分析这些数据时,我们会遇到一些特定的挑战,比如当一个分层中的主抽样单元(Primary Sampling Unit,PSU)只剩下一个时,R 软件中的 survey 包可能会报错。本文将通过具体实例说明这一问题,并探讨如何使用 survey.lonely.psu 和 survey.adjust.domain.lonely 选项来解决。


NHANES 与复杂抽样设计


NHANES 数据库是一个基于复杂抽样设计的数据集。复杂抽样设计通常包括以下几个要素:


  1. 分层(Stratification):将总体划分为不同的层,以减少估计量的方差。

  2. 聚类(Clustering):在每个层中抽取 PSU,例如地区或社区。

  3. 加权(Weighting):为每个个体赋予一个权重,以调整不同样本的代表性。


在 NHANES 中,这意味着调查对象并不是简单随机抽样的,而是根据一定的分层和聚类结构抽取的。这种设计提高了调查的效率和代表性,但也引入了复杂的统计问题。


为什么当某个层内,PSU 只有一个时会报错?


在进行数据分析时,我们希望能够准确估计总体特征。这就要求我们能够计算每个估计量的方差。当一个分层中的 PSU 只剩一个时,R 软件中的 survey 包会遇到以下问题:


  • 方差估计问题:方差估计需要比较不同 PSU 之间的变异性。如果某个层内只有一个 PSU,无法进行这种变异性的计算,导致方差估计不准确。

  • 自由度问题:层内 PSU 过少会导致自由度不足,从而影响统计推断的准确性。自由度是估计模型复杂度的一个指标,当自由度不足时,估计结果的可靠性会下降。


这些问题会导致 R 的 survey 包在分析时出现报错。


解决方案:survey.lonely.psu 和 survey.adjust.domain.lonely


为了解决这一问题,R 的 survey 包提供了两种选项:survey.lonely.psu survey.adjust.domain.lonely。这些选项允许用户定义如何处理只有一个 PSU 的分层。


1. survey.lonely.psu


该选项用于控制当层内只剩一个 PSU 时的行为。它有几种可能的设置:


    • "fail"(默认):直接报错,不允许存在只有一个 PSU 的分层。

    • "remove":移除这些只有一个 PSU 的层。

    • "adjust":使用某种调整方法来处理,保证方差估计的可行性。

    • "average":将剩余的 PSU 与总体平均相结合,计算一个折中的方差。

    示例代码如下:

    options(survey.lonely.psu = "adjust")


    2. survey.adjust.domain.lonely:


    该选项用于控制在分层分析中,如果某个域(domain)内只有一个 PSU 时如何处理。类似于 survey.lonely.psu,这个选项的设置包括:

    • TRUE:对有单个 PSU 的域进行方差调整。

    • FALSE:不进行调整。


    示例代码如下:

    options(survey.adjust.domain.lonely = TRUE)


    实例分析:使用NHANES数据


    以下是一个简单的例子,使用 NHANES 数据分析胆固醇水平与年龄、性别的关系。在分析之前,我们设置 survey.lonely.psu 和  survey.adjust.domain.lonely 以确保不会因为层内PSU 过少而报错。


    library(survey)

    # 设置复杂抽样选项options(survey.lonely.psu = "adjust")options(survey.adjust.domain.lonely = TRUE)

    # 构建复杂抽样设计对象svy_design <- svydesign( id = ~SDMVPSU, strata = ~SDMVSTRA, weights = ~WTMEC2YR, nest = TRUE, data = NHANES)

    # 拟合逻辑回归模型result <- svyglm(HighChol ~ Age + Gender, family = binomial(), design = svy_design)

    # 打印模型摘要summary(result)


    当分析复杂抽样设计的数据时,例如 NHANES,确保每个层内有足够的 PSU 至关重要。通过正确设置 survey.lonely.psu 和 survey.adjust.domain.lonely,可以避免由于 PSU 过少导致的报错,从而得到更准确和可靠的统计结果。这些设置帮助研究者在面对复杂抽样设计中的挑战时,依然能够进行有效的统计推断。



    如果觉得以上表述太复杂,也可以用一个傻瓜软件 Mstata 来一键解决问题:


    软件位于 www.mstata.com 进入软件后选 “复杂抽样加权(NHANES等)” 下拉菜单,选 “单因素多因素分析” 模块。



    我们看到该软件在做复杂抽样加权回归的时候,有个这样的选项:




    在选第一个默认设置的时候,软件不允许出现层中只有一个 PSU 的情况,但软件会贴心的告诉用户,哪几个层有这样的情况,以便用户调整自己的数据:



    在选第 survey.lonely.psu 设置为 adjust 的时候:




    就可以顺利的跑出统计结果:




    真是方便得不要不要的。

    同时,软件也内置了上述过程的源代码在附件里,需要留底给审稿人的,直接复制软件自动生成的 R 源代码保存即可。


    真实世界数据
    介绍真实世界数据,真实世界研究和真实世界证据
     最新文章