分段线性回归中节点的位置作为“随机效应”

机器算法验证 混合模式 分段线性
2022-04-18 04:49:13

TL; DR:有什么方法可以做“随机结”(结的位置根据某些组而不是数量而变化)?

完整问题:在获得实验数据后,我发现其中一个协变量与大多数受试者的反应有一个有趣的关系:超过某个阈值,所有或几乎所有反应都是水平的(在最大值处)。示例 1示例 2)我认为拟合最终模型以包含此视觉发现​​是有意义的。但是,每个主题的结的位置明显不同。

有没有现有的方法可以做到这一点?(除了这个协变量和主体的随机效应之外,还有一个固定效应和一个随机效应。)

PS我已经看到了这个问题的答案,但我认为我有充分的理由在这里更喜欢分段线性而不是三次样条:结果将更容易解释(这很重要,因为我们的重点是推理,而不是预测)和大多数图表看起来像分段线性将足够好地捕捉关系而不引入曲线。

PPS 我想到的一件事是对每个主题进行分段线性回归,仅通过网格搜索确定节点位置,然后将残差拟合到其他所有对象上。我不确定这是否是最好的方法。

编辑:目前我正在尝试将响应视为已审查。

1个回答

您可以在 R 包中执行此操作mcp尽管您的实际完整模型可能不在 范围内mcp,但这是一种执行“随机效应”更改点的方法。

mcp软件包包含一个名为的演示数据集ex_varying

> library(mcp)
> head(ex_varying)
    id  x id_numeric         y
1 John  1          5 30.792018
2 John  5          5  1.027091
3 John  9          5 58.793870
4 John 13          5 40.300737
5 John 17          5 57.566408
6 John 21          5 80.876520

模拟两个连接的斜坡,变化点位置变化id. 您将从以下位置识别此语法lme4

model = list(
  y ~ 1 + x,          # intercept + slope
  1 + (1|id) ~ 0 + x  # joined slope, varying by id
)
fit = mcp(model, ex_varying)
plot(fit, facet_by = "id", cp_dens = FALSE)

在此处输入图像描述

您可以使用 可视化变化点后验plot_pars(fit, "varying")并使用 总结它们ranef(fit)mcp 文章中阅读有关随机效应的更多信息(在 mcp 中称为“变化效应”,参见brms包中的术语)。