我在R中有这个数据框:
x = rep(seq(-10,10,1),each=5)
y = rep(0,length(x) )
weights = sample( seq(1,20,1) ,length(x), replace = TRUE)
weights = weights/sum(weights)
groups = rep( letters[1:5], times =length(x)/5 )
和一些看起来像这样的数据:
library(ggplot2)
ggplot(data = dat, aes(x = x, y = y, color = group))+geom_point( aes(size = weights))+
ylab("outcome")+
xlab("predictor x1")+
geom_vline(xintercept = 0)+ geom_hline(yintercept = 0)
fit_brms = brm(y~ s(x)+(1|group), data = dat)
by_group = marginal_effects(fit_brms, conditions = data.frame(group = dat$group) ,
re_formula = NULL, method = "predict")
plot(by_group, ncol = 5, points = TRUE)
我想制作一个分层非线性模型,以便每组都有不同的非线性拟合。
在brms中,我有下面的代码,它在x预测器上进行样条拟合,随机截取组,拟合线对于所有组都是相同的。不同之处在于线穿过y截距的位置。有没有办法让每个组的数据点的非线性拟合不同?
ON第13页:https://cran.r-project.org/web/packages/brms/vignettes/brms_multilevel.pdf
它指出"由于平滑术语本身无法按照多级方式建模,因此我们添加了一个基本的变化截距,以说明年份之间的变化"
因此样条曲线对于它出现的所有组都是相同的?图中唯一的区别是样条与y截距相交。这似乎非常严格。可以修改它以使样条曲线对每个组都是唯一的吗?
答案 0 :(得分:1)
使用公式:y ~ s(x, by = group) + (1|group)