这两个都是广义的加法模型吗?

机器算法验证 广义线性模型 广义加法模型
2022-04-09 06:56:42

我一直在阅读有关广义加法模型的信息。我一直在使用这些数据(这是来自Hastie 网站的数据的重新格式化版本),并在 R 中运行我的代码。这些数据主要包括患者是否患有冠心病(要建模的变量)和几个患者特征。为了这个问题,我感兴趣的两个是sbp(收缩压)和chol.ratio(两种胆固醇的比率)。我一直在尝试用逻辑回归对 chd 建模。

查看散点图sbp似乎与 logit 非线性相关,因此我使用样条对其进行建模,如下所示:

使用gam

data1 <- read.csv("coris.csv", sep = ",", stringsAsFactors = F,
                            header = T)
require(gam)  
gam.object <- gam(chd ~ s(sbp, 5) + chol.ratio, data = data1,
                          family = binomial(link = "logit"))

并使用Design包:

require(design)
rcs.object <- lrm(chd ~ rcs(sbp, 6) + chol.ratio, data = data1)

我可以使用 rcl() 包在 3d 中绘制后续模型,并且输出非常相似 - 使用 GAM 的模型是:

在此处输入图像描述

平面表示在一系列预测变量上的拟合模型,点是实际拟合模型,右侧的 z 轴是胆固醇比,左侧的 x 轴是收缩压,垂直轴是logit。

并且使用带有 rcs 的 lrm 的模型是:

在此处输入图像描述

那么 - 如果您使用 rcs() 指定样条线,那么使用 lrm 命令您实际上是否拟合了广义相加模型?如果不是,为什么不呢?这两种方法有何不同?

1个回答

通过使用 rcs() 的 lrm 命令,您正在构建一个三次样条,然后将其用于逻辑回归。然而,三次样条的系数没有惩罚,这与 gam 不同,gam 中应用了“粗糙度”的惩罚,并使用广义交叉验证估计惩罚的适当幅度。不过,Design 包中的 lrm 和 ols 确实有惩罚估计的选项。

另请注意,gam 可以选择其他类型的平滑函数,而不仅仅是三次样条。

我想,带有 rcs 的 lrm 是否是“广义加法模型”取决于人们是否认为在拟合样条曲线时没有粗糙度惩罚会使您脱离基于样条曲线的 gam 框架。