项目中一张Table需要基于Logistic回归模型,输出某事件发生的概率。该模型中,因变量为二分类资料,表示事件发生与否;自变量为定量资料。Table中需要输出,当自变量为特定值时,事件发生的概率以及对应的可信区间。
这篇文章简单介绍回归模型,然后分享Logistic回归模型预测概率的SAS程序实现。
我们常说的自变量(X)与因变量(Y)的关系是,自变量影响因变量,或者说因变量依赖于自变量。而回归模型的作用,就是使得自变量X与因变量Y间的关系得到量化、准确的描述。
常见的回归模型有线性回归、Logistic回归以及Cox回归。对于这3类回归,自变量X可以是数值变量、分类变量以及等级变量;而对于因变量Y,线性回归是数值变量,Logistic回归是分类变量,Cox回归是二分类+时间变量。
这3类回归中,线性回归是基础。Logistic回归与Cox回归是线性回归的扩展,即通过特定的变换(logit变换、Cox变换),转化为线性回归进行分析。
具体的模型介绍,可以参考相关的数理统计教材。
前面提到Loggistic回归的因变量是分类变量,包含3类:二分类变量、无序多分类变量、有序多分类变量。在日常分析中,因变量Y为二分类变量的情况居多,我们这次事件发生结果就是二分类变量。
二分类资料可以计算出“发病率”p、“未发病率”1-p。对于线性回归模型来说,因变量服从正态分布。而对于二分类资料,率的取值在0-1之间,不服从正态分布,不能直接应用线性回归模型。这时,对率进行logit变换:
loigt P = ln[P/(1-P)]
变换后,logitP的范围为 (-∞, +∞),服从正态分布,可以构建线性回归模型。Logistic回归模型定义为:
由于loigt P = ln[P/(1-P)],上式也可以等价写成:
这就是“发病率”P与自变量X的关系。根据现有数据可以估计出回归系数,建立回归方程。然后,将具体的自变量值代入方程,就可以获得其对应的事件发生概率的预测值。
在实际应用中,对于模型我们并不需要掌握得很深,只需知道如何应用就行。
下面进行SAS程序演示,选择SASHelp.class数据集作为演示数据集。不考虑实际意义,以二分类变量Sex作为因变量,Sex = “M”作为结果事件,数值变量Height作为自变量。
那么在各个Height取值下,发生Sex = “M”这个事件的预测发生概率以及对应的可信区间,实现程序如下:
proc logistic data = sashelp.class noprint;
model sex(event="M") = height;
output out = result predicted = pred lower = lcl upper = ucl;
run;
输出结果如下:
以上预测的概率值,是原始数据集中的各个Height值发生目标事件的预测概率。那么如何获取特定Height值对应的预测概率呢?例如,Height=59、69、79。
因为数据集中自变量的既有值不一定涵盖,想要分析的既定值。比如,当前数据集中就没有Height=79的数据。这就需要自己先构建自变量特定取值的记录,与原始数据集拼接,然后构建模型进行预测。
具体代码如下:
data tmp_pred;
do height = 59, 69, 79;
output;
end;
run;
data class;
set sashelp.class(in = a) tmp_pred(in = b);
if a then tmp_pred = 0;
if b then tmp_pred = 1;
run;
proc logistic data = class noprint;
model sex(event="M") = height;
output out = result predicted = pred lower = lcl upper = ucl;
run;
模型结果如下:
这样就获取了特定的Heigth值(59、69、79)的预测概率,我们可以看到原始数据集中也有Height=59、69的记录,新增记录与原始记录中的预测概率是相同的。
最后,整理输出结果时,只需筛选tmp_pred = 1
的记录整理到Table中,即获取特定自变量值得预测值。这样就完成了自变量的既定取值对应的事件发生率的概率预测。
以上演示代码只涉及一个亚组的分析,若涉及多个亚组,需要使用by语句,例如by trt01pn paramcd;
。演示模型中,自变量只纳入了一个数值变量,如果需要纳入数值变量,直接在模型中添加。如果纳入的自变量为分类变量,该变量需要在class
语句中进行申明。
对模型的进一步理解,可以参考SAS官方文档中的这个例子,SAS Help Center: Example 74.2 Logistic Modeling with Categorical Predictors。
这篇文章简单介绍了回归模型的分类、二项Logistic回归模型的构建,演示了利用Logistic回归模型预测事件发生率的SAS程序实现。
这里有一点说明,在临床试验SAS编程工作中,对于程序员来讲,模型都是有统计师确定好的,程序员只需要将结果输出展现。如果对于构建模型感兴趣,可以参阅相关统计教材。
感谢阅读, 欢迎关注!
若有疑问,欢迎评论交流!