我正在尝试将损坏的棒模型拟合到纵向数据。我无法重现数据,这是前六个观察结果:
pid arm pday pardens logpd
1 MOB2004_002 SP 0 40973 10.621
2 MOB2004_002 SP 1 91404 11.423
3 MOB2004_002 SP 2 14342 9.571
4 MOB2004_002 SP 3 0 0.000
5 MOB2004_002 SP 7 0 0.000
6 MOB2004_003 SP/ART 0 11428 9.344
以及显示每天“logpd”平均值的图(注意:它显然是非线性的,但我被特别要求使用断棒假设线条是线性的):
断点设置在第 2 天。我发现以下语法来自:
(1) bp1
(2)bp2
第一个包括创建新参数,就像分段线性回归一样:
bp = 2
b1 <- function(x, bp) ifelse(x < bp, bp - x, 0)
b2 <- function(x, bp) ifelse(x < bp, 0, x - bp)
#Mixed effects model with break point = 2
(mod <- lmer(logpd ~ arm * b1(pday, bp) * b2(pday, bp) + (b1(pday, bp) + b2(pday, bp) | pid), data = q1))
summary(mod)
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 2.0071 0.1782 291.5626 11.26 < 2e-16 ***
armSP/ART -2.0949 0.2520 289.3692 -8.31 3.7e-15 ***
b1(pday, bp) 3.3350 0.1103 305.7435 30.24 < 2e-16 ***
b2(pday, bp) -0.3713 0.0488 438.5265 -7.61 1.7e-13 ***
armSP/ART:b1(pday, bp) 0.3178 0.1562 303.0042 2.03 0.043 *
armSP/ART:b2(pday, bp) 0.3972 0.0691 437.3673 5.75 1.7e-08 ***
第二种使用指示变量:
mod.1 = lmer(logpd ~ arm * I(pday * (pday <= 2)) * I(pday* (pday > 2)) + (1 | pid), data = q1)
summary(mod.1)
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 7.4796 0.2001 1051.4035 37.37 < 2e-16 ***
armSP/ART -1.4758 0.2845 1048.5079 -5.19 2.5e-07 ***
I(pday * (pday <= 2)) -2.4792 0.1469 1142.4166 -16.88 < 2e-16 ***
I(pday * (pday > 2)) -1.1930 0.0429 1151.6921 -27.78 < 2e-16 ***
armSP/ART:I(pday * (pday <= 2)) -0.5121 0.2076 1138.0203 -2.47 0.0138 *
armSP/ART:I(pday * (pday > 2)) 0.1609 0.0610 1148.1222 2.64 0.0084 **
结果非常不同,根据情节,第二个模型似乎是正确的。但我不明白为什么他们会如此不同?