【发布时间】:2023-02-08 01:40:36
【问题描述】:
我正在尝试比较过去 60 年植物两个亚群的气候响应(因子变量 subgroups 具有 2 个级别)。在同一块地块上生长的两个子组的响应以周长增长来衡量。由于气候数据平均温度 (tmean) 和平均降水量 (precmean) 可用。
我使用 mgcv 的 gam() 制定了一个分布式滞后模型来检验假设,即植物亚群之间的气候反应不同:
climate_model <- gam(growth ~ te(tmean, lag, b = subgroups) +
te(precmean, lag, , b = subgroups) +
te(tmean, precmean, lag, , b = subgroups) ,
data = plant_data)
plant_data 是一个列表,其中包含 tmean、prec 和 lag 作为单独的数字矩阵,subgroups 作为区分子组 A 和 B 的因子变量,以及测量的数字 growth 作为向量。
但是,问题是因子 by 变量不能与来自 plant_data 的矩阵参数一起使用。错误消息如下所示:
Error in smoothCon(split$smooth.spec[[i]], data, knots, absorb.cons, scale.penalty = scale.penalty, :
factor `by' variables can not be used with matrix arguments.
我想知道是否有办法将因子变量 subbgroups 包含到分布式滞后模型中,以便可以对因子的两个级别进行比较。
我已经尝试为两个级别运行两个单独的滞后模型亚群.这很好用。但是,我无法真正比较两个模型的预测,因为平滑的拟合和参数不同。此外,通过这种方式,两个子组的气候响应被视为完全独立。然而事实并非如此。
【问题讨论】:
标签: r matrix gam mgcv contrast