R中具有分类协变量的混合效应三次样条回归模型

问题描述

我正在尝试在 R 中运行一个混合效应受限三次样条模型,并添加分类协变量。我在下面创建了一个简化的示例数据框:

dats = data.frame(list(ID = c(rep("A",20),rep("B",rep("C",rep("D",20)),time = rep(1:20,4),response = runif(n = 80,min = -5,max = 2),gender = c(rep("M",40),rep("F",40))))

ggplot(dats,aes(x=time,y=response)) +
  geom_point() +
  geom_line () +
  facet_wrap(~ID)

这里,我有 4 个人 A-D。对于每个人,在 20 个时间点随时间测量了一些反应。一半的人是男性,一半是女性。我想解决的主要问题是男性和女性是否会随着时间的推移表现出显着不同的反应,以及男性和女性之间的差异是否在每个时间点都很显着。我已经知道我的数据是非线性的。对于这个例子,我只是从均匀分布中采样数据,但三次样条回归最适合我的实际数据。我能够运行三次样条模型,我希望 rms 包没有问题,如下所示:

mod1 <- ols(response ~ rcs(time,3) * gender,data = dats,x = TRUE,y = TRUE)

但是,由于我有重复测量设计,我想将 ID 作为随机变量合并,以控制个体重复测量之间的非独立性。我不认为随机变量可以与 rms 一起使用(如果我错了,请纠正我)。我确实遇到了 merlin 包,它允许我用随机变量拟合三次样条回归:

mod2 <- mlrcs(formula = response ~ 1 + rcs(time,3),random  = ~ 1|ID,data = dats)

但是,当我尝试添加性别作为分类协变量时,我不断收到此错误:FUN(x,aperm(array(STATS,dims[perm]),order(perm)),... ) : 二元运算符的非数字参数。我的真实数据和这些示例数据都会发生这种情况。我是否使用了错误的语法?还是 mlrcs 函数中不允许使用分类协变量?如果是后者,是否有另一个包/函数可以让我使用随机变量运行完整的三次样条模型?

mod3 <- mlrcs(formula = response ~ 1 + rcs(time,3) + gender,data = dats)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)