本文介绍了利用MSTATA软件,根据调整协变量的不同组合,同时建立多个模型,一键完成确证性影响因素分析。并可以一键标化、一键将连续性变量拆分成 N 个组的分类变量,四分位数等等。并给出 P for trend。
MSTATA 的用户一直在催,想要一键完成带有 P for trend 的统计表格。本来我们极其厌恶这个指标,本不想在软件中提供。总有一些统计学鄙视链,导致有些一些统计学家十分嘲讽这种滑稽的指标。奈何用户实在想要,本着存在即是合理的原则,给用户多一个选项也是好的:
先抄一段官方教科书的解释:
P for trend(趋势的 p 值)是统计学中用于检测某一变量的趋势是否显著的一种检验。它通常用于分析有序分类变量与结果变量之间的关系。例如,当我们研究暴露水平(如剂量、时间、或某种行为的频率)与某个健康结果之间的关联时,如果暴露水平有多个有序的分类(如低、中、高剂量),我们可能想知道这种关联是否随着暴露水平的增加或减少而显著变化。
主要特点和定义:
用于有序的分类变量:p for trend 适用于分析有序分类自变量(ordinal variables)的趋势,如低、中、高暴露水平。
检测线性趋势:p for trend 旨在检测自变量的不同水平是否存在线性的剂量-效应关系。例如,随着暴露水平的增加,风险是否逐渐增加或减少。
回归分析的应用:通常通过线性回归或 logistic 回归来计算趋势的 p 值,将有序分类变量视为连续变量进行检验。如果趋势检验的 p 值显著(例如 p < 0.05),这表明随着暴露水平的变化,结果变量也呈现显著的线性变化。
计算方法:
线性回归法:将有序变量转换为连续变量进行回归分析,然后检验其回归系数的显著性。
Cochran-Armitage趋势检验:用于分析二项分类数据中的线性趋势,尤其是在案例对照研究中非常常见。
举例:
假设我们在一项研究中按三种剂量水平(低、中、高)研究药物对疾病的影响,计算得到的 p for trend 表示随着剂量增加,疾病发生率是否显著增加。如果 p for trend 很小(如 p < 0.05),可以推断存在剂量-效应关系。
回到现实,针对第一种线性回归法,P for trend 又有两种算法,
1)将有序分类自变量每个分组的中位数提取出来,用这些数字作为连续性自变量进行回归;
2)给每个分组赋值1,2,3,4 等等,然后设为连续性变量进行回归(将有序变量转换为连续变量进行回归分析,然后检验其回归系数的显著性)。
得到的 P 值就是 P for trend。通常情况下,两种方法的 P 值是一样的,而回归系数/OR/HR不同。
但我们只关注 P for trend 并不关注回归系数/OR/HR(没有临床价值)。但是第一种算法由于不同软件计算中位数有所不同(SPSS 和 R 默认是不同的),在小样本下容易造成差异出错,因此本软件采用第二种算法。
网上有些公众号为了显摆自己的统计学知识,写教程捧第一种,排斥第二种,纯属没事找抽,哗众取宠。多位世界著名统计学家两种都接受:
The p for trend is a statistical method used to test whether there is a significant trend or ordered relationship between an ordinal independent variable (like exposure levels) and an outcome. It is particularly useful when dealing with variables that have multiple ordered categories (e.g., low, medium, and high levels of a factor) to see if the outcome changes in a consistent direction as the categories increase or decrease. This test is commonly applied in medical studies to assess dose-response relationships.
For example, in a study evaluating the effect of different doses of a drug on a health outcome, the p for trend can help determine if the outcome (like risk reduction) improves or worsens progressively with increasing doses.
To compute the p for trend, researchers often perform a regression analysis where the ordinal variable is treated as continuous, allowing the identification of a linear trend. If the resulting p-value is below a certain threshold (e.g., p < 0.05), it suggests that there is a statistically significant trend.
MSTATA 勾上一个复选框即可一键显示 P for trend:
软件在 www.mstata.com ,点击 MSTATA 医学统计机器人 VIP 版进入后下拉菜单选“因果推断” - “有明确的感兴趣的研究因素,调整不同个数混杂因素,进行多模型比较的套路分析” 即可进入:
附录:
全自动验证性性影响因素分析(根据不同的混杂因素/协变量个数进行多模型比较)
一键生成多模型(调整不同的协变量)比较的论文发表级(Publication - ready) 表格:
一键完成多模型评价指标(拟合优度、多重共线性分析)比较:
引言
在医学统计分析中,我们经常要评估各种因素如何影响某个特定的健康结局。这些因素可以是生活习惯(如抽烟、饮酒)、遗传倾向、疾病状态(如心脏病)、环境暴露或者医疗干预(如药物治疗)。为了理解这些影响因素(或自变量)与健康结局(或因变量)之间的关系,研究者会运用多种统计回归模型来分析数据。
回归分析是一种强大的统计工具,它可以揭示一个或多个自变量对一个因变量的影响。根据因变量的类型和研究的需求,可以选择不同类型的回归分析:
逻辑回归(Logistic regression)适用于二分类结果变量,如疾病有无。
线性回归(Linear regression)适合连续结果变量,如血压或胆固醇水平。
Cox回归(Cox proportional hazards regression)用于分析生存时间数据,即时间到一个事件(如死亡或复发)的发生。
Poisson 回归 适用于计数数据或事件发生率的分析。
研究者会拟合多个模型来比较的原因是,这可以帮助他们理解在控制了其他变量(如性别、年龄等)后,主要自变量(如抽烟)的独立效应是否仍然显著。这也有助于识别和校正混杂因子的影响,这些混杂因子可能扭曲了主要自变量和结果变量之间的真实关系。
例如,在研究抽烟是否增加心脏病风险的研究中,一个简单的模型可能只考虑抽烟的影响。而更复杂的模型可能会加入年龄、性别、饮食和运动等协变量。通过比较这些模型,研究者可以更好地了解在不同情境下抽烟和心脏病风险之间的关系。
为了判断模型的效度,研究者会查看比值比(Odds Ratio)、风险比(Hazard Ratio)或回归系数,以及它们的统计显著性(p-value)和置信区间(Confidence Interval, CI)。如果在多个模型中,这些统计量保持稳定,这增加了研究结果的可靠性。
综上所述,通过拟合和比较多个模型,研究者可以更全面地评估影响因素对健康结局的影响,这为制定预防策略和治疗干预提供了科学依据。
准备数据
首先务必按照下面的格式准备数据(网站上可下载,下载后在此基础上修改):
下载csv样例数据(右击另存为)
打开如下图:
本样例数据的规则:
一个患者一行(这是准备数据最重要的前提)。
每个患者准备两大类数据,影响因素变量和结局变量,影响因素和结局分别都可以有多个变量。
如图所示,hospital, treatment, age, age2, sex, obstruct, prfor, adhear, differ, extent 为影响因素(自变量),而blood, effect, status, time, occurrence在本例中是结局变量。
影响因素变量有两种,连续性变量(值是连续数据,它可以在变量值所属区间内任意进行取值,如年龄[岁]、血糖值、人的身高、智商等)以及分类变量(是说明事物类别的一个名称,其取值是分类数据。如”性别”就是一个分类变量,其变量值为”男”或”女”;“行业”也是一个分类变量,其变量值可以为”零售业”、“旅游业”、“汽车制造 业”等),在本例中 age是连续性变量(numeric), 其他的是分类变量(factor)。age单位为”岁”时为连续变量,而age2为年龄段分组,这时候为分类变量。
以上概念很重要,后面有一个页面专门设置连续变量和分类变量。
结局变量在本工具中分为几类:
连续型结局变量
如本例中的blood(某血液检测指标)
二分类结局变量
如本例中的effect(疗效)为二分类变量(Good,Bad)
生存型结局变量
需要用两个变量组合来表示,如本例中的status和time。
status代表患者在研究结束时的状态,在本工具中只能取0和1两个数字,不要用字符文本,否则会出错。0 代表没观察到事件发生(如没死或者失访),1 代表观察到了事件发生(如已经死亡且录入了死亡日期)。
time代表从开始日期(开始日期的定义由你的研究目的决定,如随机对照研究往往取随机化入组的那一天为开始日期,而观察性研究可以取首次诊断日期或首次治疗日期等等根据研究目的而定)到结局日期的时间差。当status=1时,结局日期为发生事件(如死亡)的日期,当status=0时,结局日期为最后一次活着的日期(如研究结束日,或随后一次随访日)。
总之,time是一个数值型变量,您需要填入患者从开始到死亡或者随后一次随访时,一共活着的天数。如time为56,status为1时代表患者从开始到死亡活了56天;当time为56,status为0时代表患者没观察到死亡,从开始到最后一次随访,活了56天。
准备数据时,time填入一个非负的整数,status填入0或1,time和status都不能为空,每个患者都必须填入数字。time或status不确定(缺失)时,该患者最好不要放入本数据库。
计数型结局变量
计数型的结局变量为一个非负的整数,如本例中occurrence,是急性发作次数,无法取负数,也不可能取小数。
分数型结局变量
当结局变量为一个分数,如发病率、患病率、受精率等,结局包含一个分子和一个分母。如要研究全国各地疾病患病率的影响因素时,按照每个地区一行来准备数据,分子和分母设置成两个变量(列),如分子为患病人数,分母为地区人口数。
准备数据的规则是:分子和分母都是非负整数,不允许填入负数,也不允许填入小数,分子的数值不能大于分母。
操作步骤
步骤 1: 数据准备
在开始之前,请确保您已经在软件的“数据准备”页面上传了您的数据集,并在“定义字段”选项卡检查并应用了更改。
步骤 2: 等待数据转换
打开页面后,请耐心等待半分钟让系统处理并加载您的数据。如果您的数据库较大,这个过程可能需要更长时间。系统会自动把水平数低于6的数值型变量转换为分类变量,当然您也可以手动改回来不做转换
步骤 3: 选择模型类型
接下来,您需要根据结局变量的类型选择合适的模型。可选的模型包括二分类变量(Logistic回归)、连续性变量(线性回归)、生存变量(Cox回归)、计数变量(Poisson回归)等。
步骤 4: 选择结局变量
根据您选择的模型类型,系统会要求您从数据库中选择相应的结局变量。例如,如果您选择了Logistic回归,就需要选择一个二分类的结局变量。
步骤 5: 定义模型协变量
确定您想要在模型中调整哪些协变量。协变量可以帮助控制混杂因素,提高模型的准确性。
如果选择了连续性变量,还可以选择仅按照连续性变量进行回归分析,还是进行标准化,或者转换成分类变量(例如 Q1/Q2/Q3/Q4 四分位数等)同时进行多种分析
步骤 6: 模型比较
您可以建立并比较多个模型。选择要比较的模型数量,并为每个模型选择要调整的协变量。请确保不同模型之间的协变量选择不完全相同。
步骤 7: 分类变量参照组设定
对于非数值型的分类变量,您需要为每个变量选择一个参照组。
步骤 8: 结果呈现
确定您如何呈现结果数据,包括是否显示N和Event值,以及效应量和P值的小数位数。
步骤 9: 生成结果
完成上述设置后,点击相应的按钮生成影响因素分析表。
在整个过程中,如果您在某个步骤遇到了问题,系统可能会提供警告或错误信息。请按照提示进行相应的修改。如果一切顺利,您将能够生成反映不同影响因素对结果影响的统计模型比较表格。