在我的模型中,我有两个变量,距离和时间,它们会影响不同主题的表现(成功或失败)。距离和时间之间的关系是非线性的,不能分成单个加法项,并且(可能)因主题而异。模型中的其他术语还涉及其他变量,但我目前的重点是这两个变量。
我没有我可以期待的参数形式,但我确实对数百个受试者进行了数千次观察,因此可以非参数地估计距离和时间之间的整体交互。我一直在使用 mgcv::bam(mgcv::gam 的大数据版本)来估计一个(简化的)模型,如下所示:
mgcv::bam(success ~ s(distance, time), data=mydata)
然而,我想探索的是,这种距离+时间的关系如何在不同的主题中变化,使用随机效应框架。就像是:
mgcv::bam(success ~ s(distance, time, subject, bs="re"), data=mydata)
以这种方式运行 R 代码不会产生错误,但我不确定它是否按照我的想法运行。我还没有找到任何关于在 mgcv 随机效应中使用多个数值变量的参考,并且想知道是否有这样做的原因。
作为旁注,一种方法可能是将距离和时间组合成一个变量,如“速度”(距离/时间),然后使用:
mgcv::bam(success ~ s(speed, subject, bs="re"), data=mydata)
...但这可能会以距离和时间交互的复杂方式丢失一些细节,从而导致我的问题。
查阅 R 中 mgcv::gam 函数的文档,您可以将因子变量上的平滑指定为另一个数值变量的随机斜率。
如果 g 是一个因子并且 x 是数字,那么 s(x,g,bs="re") 会产生一个 iid 正态随机斜率,该斜率将每个 g 水平的响应与 x 相关联。
我不清楚您是否可以指定多个数字变量以及随机效果平滑。即 s(x, y, g, bs="re")。或者即使这是一个明智的想法。
简化示例:
## adapted from example in mgcv docs
dat <- gamSim(1,n=400,scale=2) ## simulate 4 term additive truth
fac <- sample(1:20,400,replace=TRUE)
b <- rnorm(20)*.5
dat$y <- dat$y + b[fac]
dat$fac <- as.factor(fac)
rm1 <- gam(y ~ s(x0, fac,bs="re") + s(x1, x2, fac, bs="re") + s(x3),data=dat,method="ML")
根据文档,x0 和 fac 上的平滑是可以的,但我不知道 x1、x2 和 fac 上的平滑是否有效且可解释。