在R中建模断棒模型,其中一条线具有恒定梯度?

机器算法验证 r 回归 混合模式
2022-03-25 14:17:35

我目前正在使用包(lme4)作为具有随机效应的混合效应模型。

我的模型采用以下形式:

mod <- lmer(response ~ b1(predict1, bp) + b2(predict2, bp) + (1 | site), data = data)

函数 b1 和 b2 来自以下有用的建议:

在 R 中估计具有随机效应的断棒/分段线性模型中的断点 [包括代码和输出]

b1 <- function(x, bp) ifelse(x < bp, bp - x, 0)
b2 <- function(x, bp) ifelse(x < bp, 0, x - bp)

我想知道,我将如何设置我的模型,以使断棒模型的第二部分(线)具有恒定的梯度?

因此,例如,我想要类似的东西:

如果 X < 断点,Y = m1X + C1

如果 X > 断点,Y = C2

希望我说得通。

马特。

2个回答

我可能已经找到解决问题的方法,但有人可以确认我做了什么吗?

我稍微修改了上面的函数b1和b2。我称它们为 b3 和 b4:

b3 <- function(x, bp) ifelse(x < bp, bp - x, 0)   #Y = mx + c
b4 <- function(x, bp) ifelse(x < bp, 0, 1)        #Y = C

混合模型类似,但使用了 b3 和 b4:

mod2 <- lmer(SIGNAL ~ b3(dci, bp) + b4(dci,bp) + (1 | gauge), data = cand_bug_data)

我看到你的帖子已经很老了,但我正在处理同样的问题——我发现了一个与你的解决方案略有不同的解决方案。我想我会为其他人发帖。

b1 <- function(x, bp) ifelse(x < bp, x, bp)

#Wrapper for Mixed effects model with variable break point
foo <- function(bp)
 {
   mod <- lmer(y ~ b1(x, bp) + (1|Site), data = dat) 
   REMLcrit(mod)
 }

mod <- lmer(y ~ b1(x, bp) + (1 | Site),  data = dat)

以及原始帖子中显示的其他所有内容