大佬救命:
在JMbayes中的函数如下:
lmeFit <- lme(y ~ 0 + group + group:ns(time, k = c(2.5, 6), B = c(0.5, 13)),
data = train_data,
random = list(id = pdDiag(form = ~ ns(time, k = c(2.5, 6),
B = c(0.5, 13)))))
survFit <- coxph(Surv(Time, event) ~ group ,
data = train_data.id, x = TRUE)
# current value
jointFit1 <- jointModelBayes(lmeFit, survFit, timeVar = "time",
n.iter = 2000L,
priors = list(priorA.tauBs = 1e-01, priorB.tauBs = 1e-01))
dForm <- list(fixed = ~ 0 + group:dns(time, k = c(2.5, 6), B = c(0.5, 13)),
indFixed = 3:8,
random = ~ 0 + dns(time, k = c(2.5, 6), B = c(0.5, 13)),
indRandom = 2:4)
jointFit2 <- update(jointFit1, param = "td-both", extraForm = dForm)
如果把上述代码换成rstanarm包的stan_jm函数:
D1 <- stan_jm(formulaLong = y ~ 0 + group + group:ns(time, k = c(2.5, 6), B = c(0.5, 13))
+ (ns(time, k = c(2.5, 6),B = c(0.5, 13))|id),
dataLong = train_data,
formulaEvent = survival::Surv(Time, event) ~ group,
dataEvent =train_data.id,
assoc = "etavalue",
time_var = "time",
chains = 1,cores = 1,refresh = 500, iter=2000)
D2 <- stan_jm(formulaLong = y ~ 0 + group + group:ns(time, k = c(2.5, 6), B = c(0.5, 13))+
group:dns(time,k=c(2.5,6),B=c(0.5,13))
+ ((ns(time, k = c(2.5, 6),B = c(0.5, 13))+dns(time,k=c(2.5,6),B=c(0.5,13)))|id),
dataLong = train_data,
formulaEvent = survival::Surv(Time, event) ~ group,
dataEvent =train_data.id,
assoc = c("etavalue", "etaslope"),
time_var = "time",
chains = 1,cores = 1, refresh = 500, iter=1000)
这样好像是不对的,因为最后拟合出来的结果,rstanarm包的结果不理想。问题应该出在红色字体部分,但我不知道怎么修改,求大神指点。