一键完成NHANES复杂抽样加权的单因素+多因素回归分析并自动生成R代码

文摘   科学   2024-05-17 19:13   上海  


本文介绍了利用 MSTATA 软件,一键完成 NHANES 复杂抽样加权的单因素+多因素回归分析,生成论文需要统计图表,并自动生成 R 代码,作为溯源依据。


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



在研究中,我们通常感兴趣的是量化某些群体特征,例如某种病症的患病率、某一测量值的平均值,或暴露与疾病之间的关联性。通常,我们会在总体中抽取一个样本,并利用样本中的信息对总体特征进行推断。样本单位可以是个人、社区、医院、县甚至国家。

简单随机抽样

简单随机抽样是一种最基础的抽样方法,其特点是总体中每个单位被选中的概率相等。这种方法的优点是计算简单,分析方便,且能够保证样本统计量是总体参数的无偏估计。

例子:假设我们要研究一个城市中居民的平均收入。我们可以将这个城市的所有居民列成一个清单,然后随机选取其中的100人进行调查。每个居民被选中的概率都是相同的。在这种设计下,样本均值、样本方差等统计量都是总体参数的无偏估计,可以直接用来推断总体。

复杂抽样设计

许多调查使用复杂抽样设计而非简单随机抽样。这有多种原因。例如,如果构建列出总体中每个单位的抽样框架很困难或可能导致错误,可以使用多阶段抽样,先抽取较大且易于列出的单位群体,然后在每个群体内调查某些或全部单位,这样可以在现场构建准确的抽样框架。在多阶段抽样中,首先抽取主抽样单位(PSU)(例如,家庭),然后在每个PSU内抽取单位(例如,家庭中的个体)。当然,可以有超过两个阶段的抽样。早期阶段的单位形成簇。

另一个使用复杂抽样设计的原因是简单随机样本可能会导致某些感兴趣的子群体样本量过小。例如,如果关注种族/民族特定的平均血压,研究人员可能希望增加较小子群体的样本量。简单随机样本可能会导致多数种族/民族的样本量较大,而少数群体的样本量较小。与其增加总体样本量以确保较小群体的足够样本量,不如使用不等概率抽样对大群体进行欠抽样,对小群体进行过抽样,这样更具成本效益。

一种不等概率抽样的方法是在一些多阶段抽样设计中按比例概率抽样(PPS),其中较大的PSU有更大的被选中概率。另一种是分层随机抽样,即首先将总体非随机地分成若干层(例如,地理区域),然后在每层内进行简单随机抽样。将总体分层成不等大小的层,然后在每层内进行简单随机抽样,会导致不等概率抽样,因为较小层中的个体有更大的被选中概率。

NHANES

国家健康与营养检查调查(NHANES)是一个具有复杂设计的调查的例子。

NHANES样本不是简单随机样本,而是使用复杂的多阶段概率抽样设计来选择参与者,以代表美国民间非机构化人口。还对某些人口子群体进行过度抽样,以提高这些特定子群体健康状况指标估计的可靠性和精确性。研究人员需要在分析中适当指定抽样设计参数。

简而言之,NHANES采用了分层四阶段抽样设计。首先,根据人口普查区域和其他地理信息构建分层(非随机)。在每个分层内,随机选取美国县(PSU),较大的县有更大的被选中概率。在县内,按比例选取街区。在街区内,随机选取家庭,并对某些年龄、种族和收入群体进行过度抽样(较高的选中概率)。最后,在家庭内随机选取个体。有关NHANES复杂抽样设计的完整描述,请参见官方NHANES教程。

NHANES网站提供了使用survey软件包分析NHANES数据的示例R代码,以及在分析NHANES数据时的一些特殊考虑。

准备数据

NHANES数据的下载地址在 https://wwwn.cdc.gov/nchs/nhanes/

这里我们可以点击下方下载一段样例数据片段来做测试:

下载csv样例数据(右击另存为)

在本说明书中,我们使用了2017周期的NHANES数据,因此以下信息来自该周期。数据集中包含以下变量以考虑抽样设计:

  • 分层变量(SDMVSTRA):共有15个分层。

  • 主要抽样单位(SDMVPSU)

  • 访谈抽样权重(WTINT2YR)

  • 检查抽样权重(WTMEC2YR)

  • 空腹子样本抽样权重(WTSAF2YR):

在使用NHANES数据时,请务必查阅相关数据文档和代码手册,以确保使用适当的抽样权重。

使用方法

进入软件界面,首先进行如下设置:

设置复杂抽样参数

请按照以下步骤设置您的复杂抽样参数:

  1. 选择分层变量

  • 在设置界面中,找到“请选择代表分层(strata)的变量”选项。

  • 从下拉菜单中选择一个变量,该变量代表数据中的分层信息。例如,在NHANES数据库中,这个变量通常是SDMVSTRA。

  • 背景知识:分层抽样(Stratified Sampling)是一种将总体分为若干个互不重叠的层,然后在每个层内进行随机抽样的方法。这种方法可以提高估计的精确性,特别是在总体内部具有较大异质性的情况下。例如,在NHANES中,不同地理区域(如不同的州或县)可能存在健康状况的差异,通过分层抽样可以确保每个区域的代表性。

  • 如果您的数据不需要分层,请选择“无”。

  • 选择主抽样单位(PSU)变量

    • 选择完分层变量后,系统会自动弹出“请选择代表主抽样单位(id)的变量”选项。

    • 从下拉菜单中选择一个变量,该变量代表数据中的主抽样单位(PSU)。例如,在NHANES数据库中,这个变量通常是SDMVPSU。

    • 背景知识:主抽样单位(Primary Sampling Unit, PSU)是多阶段抽样中的第一层单位。在NHANES中,PSU通常是县或县级等价单位。在每个PSU内,再进一步抽取次级单位(如家庭或个人)。这种方法可以减少调查成本,提高抽样效率。

    • 确保所选变量不同于分层变量。

  • 选择权重变量

    • 访谈权重(WTINT2YR):如果您的分析仅使用在访谈中收集的数据,则选择此权重。每个参与者都接受了访谈,因此每个人的访谈抽样权重都大于0。

    • 检查权重(WTMEC2YR):如果您的分析包含体检数据,则应选择此权重。大多数参与者在移动检查中心(MEC)接受了体检,收集了客观测量数据。

    • 空腹子样本权重(WTSAF2YR):如果您的分析包含空腹血液测量数据,则应选择此权重。只有部分参与者在空腹状态下提供了血液样本,因此需要使用相应的权重进行调整。

    • 选择完PSU变量后,系统会自动弹出“请选择代表权重(weights)的变量”选项。

    • 从下拉菜单中选择一个权重变量。权重变量有助于确保样本的代表性。在NHANES数据库中,常见的权重变量有WTINT2YR、WTMEC2YR等。

    • 背景知识:权重(Weights)是用于调整样本统计量以反映总体参数的因子。在复杂抽样设计中,由于不同单位被抽中的概率不同,直接使用样本统计量可能会产生偏差。权重的作用是校正这种偏差,使估计值更接近于总体参数。例如,在NHANES中,不同个体的被抽中概率不同,通过使用合适的权重,可以确保结果具有全国代表性。

    • 选择权重的指南(简化版,仅做示例)

    • 注意:选择权重变量非常复杂,以上只是一个简要规则,实际规则比这个复杂,请务必登录和参考NHANES官网的说明书,对于选择哪个权重有详细的规则说明,以确保选择适当的权重。

  • 处理权重缺失值

    • 将权重缺失值用0填充

    • 将权重缺失的数据整行删除

    • 将权重缺失以及权重≤0的数据整行删除(Cox回归请勾选此项)

    • 在权重变量选择下方,您需要选择如何处理权重变量中的缺失值。

    • 选项包括:

    • 背景知识:在调查数据中,权重缺失值可能会影响分析结果的准确性。不同处理方法可以应对不同的分析需求和数据质量问题。例如,将缺失值填充为0可以保留数据行,但可能导致偏差;而删除权重缺失的数据则可以提高结果的准确性,但会减少样本量。

  • 设置嵌套集群标识(Nest)

    • 选择是否应用嵌套集群标识。如果您的数据集的ID值在分层中是嵌套的(如NHANES数据库),推荐选择“是”。

    • 选择“是”可以确保在每个分层内,集群ID是唯一的,避免分析时出现问题。

    • 背景知识:嵌套集群(Nested Clusters)是指在复杂抽样设计中,主抽样单位ID在不同分层内可能重复。通过设置嵌套集群标识,可以确保每个分层内的集群ID是唯一的,从而避免在数据分析时出现混淆和错误。例如,在NHANES中,不同地理区域可能有相同的PSU ID,通过嵌套设置可以确保分析的准确性。

    3. 完成设置

    完成以上设置后,您的数据就准备好进行复杂抽样加权和回归分析了。请确保所有步骤都已正确完成,以确保分析结果的准确性。

    参考资料

    • NHANES官网:提供关于分层、PSU和权重变量的详细说明。

    • NHANES教程:提供关于权重选择和多周期数据合并的详细指南。

    重要提示

    在使用本软件进行分析时,务必遵循NHANES提供的指导原则和说明,以确保结果的准确性和科学性。特别是对于权重变量的选择和处理,请仔细阅读相关文档和说明书。

    影响因素分析

    下一步就是影响因素分析啦:

    选择结局变量

    机器人根据结局变量的类型来选择分析方法。二分类变量,系统会选择logistic回归,如果是连续性变量,系统会选择一般线性回归。如果是生存变量Time和Status的组合,系统会采用Cox回归。如果是计次计数变量,系统会选择Poisson回归,当然如果是率或者百分比,也会采用Poisson/负二项回归。

    选择影响因素变量

    根据提示选择结局变量和影响因素变量,最后点击”生成/更新影响因素按钮”即可。这里要注意的是,如果上传的数据Excel文件里把连续性变量设置成了字符型,如年龄设置成了字符型,需要在前面”选择字段”功能里改回成numeric,如果按照分类变量放进影响因素分析,会因为分类巨多把服务器卡死。同理,如果把ID号也作为分类变量放进影响因素,服务器也容易卡顿死机。

    另外,在分类变量里,有些亚组人数很少,最好把它和其他亚组合并之后再传上来分析,亚组人数太少容易让可信区间特别宽,影响排版。当然,后续我们也会增加一个合并亚组的小工具。

    哪些变量入选多因素模型

    单因素和多因素分析时同时自动完成的。事先可以规定哪些变量从单因素模型入选多因素模型,可以选择全部都进入,或者部分筛选进入。一般可以全部都纳入多因素。但如果因素太多,十几个几十个,那就要筛选一下变量了,放入模型的变量数不应该超过 样本量N/20。我们的经验是放十个以下就可以了。如果只放部分单因素变量进入多因素,可以点”选项2”,自行选择哪些变量纳入多因素分析,这时候主要是参考历史研究以及研究者的临床经验。另外也可以选逐步回归,StepAIC,然后系统会自动用backward法筛选纳入多因素的变量组合,筛选的标准是让模型的AIC最小。

    当然,最好的方法可能是lasso 回归选择变量功能,这里我们郑重推荐本站另一个APP:“自动筛选单因素进入多因素模型变量” 的模块。大家可以在 www.mstata.com 网站进入Mstata医学统计机器人,在”影响因素研究” 菜单下可以找到,里面包括了逐步回归、最佳子集、lasso、岭回归、弹性网络等多种变量筛选方法,以及对多重共线性的判定。在另一个APP中完成变量筛选后,可以用筛选出来的变量,回到本APP这里,选择2,手工填入要进入多因素模型的变量,即可完成变量筛选。

    连续性变量拆成分类变量

    连续性变量需要拆成分类变量的场景有:

    1. 本身就是一个分类变量,如 I 期,II 期,III 期,IV 期等,只不过用了数字1,2,3,4来表示,这可以在前面筛选变量的界面直接把它设置为分类变量即可。

      前面如果忘记了,或者不方便,这里提供了一个功能,可以设置唯一取值数小于多少个水平的变量,全部转换成分类变量。例如只有5个取值 (比如只有数字1-5可取)以下的变量,全部批量转换成分类变量;

    2. 本身是连续性变量,例如年龄、血糖等等,但需要转换成 低、高的二分类变量,或低、中、高的三分类变量,或Q1,Q2,Q3,Q4的四分位数分类变量,这里也提供了一个自动化转换工具,可以根据患者数量,平均拆分成N个组。

      如图,对于只能取值6以下的变量,统统变成分类变量。

    如上图,将 RIDAGEYR 连续性变量,切成四等分的分类变量

    结果如下:

    需要注意的是,Q1-Q4是根据整个数据集中的RIDAGEYR 进行分割的,如果其他变量有缺失数据,会导致最终纳入多因素分析的样本量减少,从而导致 RIDAGEYR 在单因素分析中是四等分的,在多因素分析中就不是四等分了。因此推荐进行缺失值填补。

    另外也可以勾选显示分组的界值点:

    结果如下:

    显示了切割分界点的界值。

    多大支持切割成20组,因为更多分组没有太大医学价值。

    如果需要更强大的分组功能呢,例如自定义切割点,如<10岁,>65岁等,或者用K-means 聚类分组等,可以去本站的 数据预处理模块,选择”数据离散化” 模块进行复杂的分组操作。

    生成森林图

    先完成单因素多因素分析,分析完之后,到森林图页面即可生成:


    生成 R 代码:


    完成分析后,点集查看代码,自动显示 R 源代码和 R 分析的原始结果



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