gpt4 book ai didi

r - GLMERTREE : Prevent clustered observations from being split among 2 terminal nodes

转载 作者:行者123 更新时间:2023-12-04 12:25:55 26 4
gpt4 key购买 nike

我有在 72 个不同地点重复进行观察的数据集。我正在使用来自 GLMERTREE 包的 lmertree 模型,该模型具有随机截距、处理变量和许多“分区”变量,以确定是否存在根据分区变量在处理和响应变量之间具有不同关系的站点集群。在大多数情况下,该模型不会在不同终端节点之间拆分来自同一站点的观测值,但在少数情况下会这样做。

是否有某种方法可以约束模型以确保非独立观测值包含在同一终端节点中?

最佳答案

最简单的方法是仅考虑站点级别的分区变量。如果这些站点变量在站点的观察中不是恒定的,则为每个站点平均它们可能是有意义的。例如,平均一个回归量 x2x2m在数据中 d :

d$x2m <- tapply(d$x2, d$site, mean)[d$site]

如果您在观察级别而不是站点级别有其他变量,则将它们 (a) 包含在公式的回归部分中可能是有意义的,以便相应的系数在树中特定于站点,
或 (b) 在公式的随机效应部分,以便仅估计全局系数。例如,如果您有一个观察级回归量 z和两个站点级回归器 x1x2你想用于分区,你可能会考虑
## (a)
y ~ treatment + z | site | x1 + x2
## (b)
y ~ treatment | (1 + site) + z | x1 + x2

最后,我们最近发现,在具有强随机效应的集群级(也称为站点级)协变量的情况下,用随机效应而不是树来初始化模型的估计可能是有意义的。原因很简单,如果我们从树开始估计,这将通过聚类级变量的 split 来捕获随机截距。我们计划相应地调整包,但尚未这样做。但是,您自己很容易做到这一点。您只需从仅针对随机截距估计空模型开始:
null_lmm <- lmer(y ~ (1 | site), data = d)

然后您提取随机截距并将其包含在您的数据中:
d$ranef <- ranef(null_lmm)$site[[1]][d$site]

并将其作为随机效应的起始值包括在内:
tree_lmm <- lmertree(y ~ treatment | site | x1 + x2 + ...,
data = d, ranefstart = d$ranef, ...)

您可以尝试通过设置 cluster = site 在站点级别对协方差进行额外聚类。 .

关于r - GLMERTREE : Prevent clustered observations from being split among 2 terminal nodes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49122098/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com