在线性回归模型中,我经常使用指标函数来估计系数,当二次协变量为真时,只使用。当协变量为假时,这总是在没有生物学意义的情况下考虑到的。
我最近想在gam框架中实现类似的功能,但是我通常使用的语法并没有扩展到gam-或者具体地扩展到平滑的语法。换句话说,是否有可能拟合一个模型,以便只有当一个虚拟变量==为真时,才能估计一个平滑的变量。
举个例子,假设我有关于个体动物昼夜行为的数据,无论是活跃的(1)还是不活跃的(0)。
人们可以假设:
现在的挑战是如何建模(2),因为只有在夜间估计采样点的月球效应才有意义。
如果我假设月光和活动之间的关系是线性的,那么就没有问题:
m1 <- gam(activity ~ s(hourofday,bs = "cr", k = 10) + # circadian pattern (assumed identical for all individuals)
I(moonfraction*isnight) + # moon effect toggled at night(1)
s(id, bs = "re"), # individual random effect
data = df,
family = "binomial")在这里,isnight是一个虚拟变量(0/1),因此月球分数效应表示月光对活动的影响,假设是夜间。
但是,如何将其扩展,使月球分数能够具有非线性平滑效应呢?
任何关于如何实现这一目标的想法都将不胜感激。
发布于 2022-08-26 13:14:14
你现在的模型已经写好了
m1 <- gam(activity ~ s(hourofday,bs = "cr", k = 10) + # circadian pattern (assumed identical for all individuals)
I(moonfraction*isnight) + # moon effect toggled at night(1)
s(id, bs = "re"), # individual random effect
data = df,
family = "binomial")然而,你想要一个光滑的月分。在mgcv中有两个直接实现的选项,但是您必须决定哪一个最适合您的情况。
第一种方法给出了不同程度的平滑度,假设isnight是一个因素。
m1 <- gam(activity ~ isnight + s(hourofday,bs = "cr", k = 10) +
s(moonfraction, by = isnight) +
s(id, bs = "re"), data = df,
family = "binomial")或者,您可以考虑fs基础,它假设级别具有相同的平滑性。
https://stackoverflow.com/questions/73342721
复制相似问题