【发布时间】:2017-12-10 14:17:12
【问题描述】:
我有一个时间序列数据集,其中包含一个连续的结果变量和两个因子预测变量(一个具有 6 个水平,一个具有 2 个水平)。
我想模拟两个因子变量在连续变量上的非线性交互作用。
这是我目前拥有的模型:
library(mgcv)
model <- bam(
outcome ~
factor_1 + factor_2 +
s(time, k = 9) +
s(time, by = factor_1, k = 9) +
s(time, by = factor_2, k = 9),
data = df
)
summary(model)
Family: gaussian
Link function: identity
Formula:
outcome ~ factor_1 + factor_2 + s(time, k = 9) + s(time, by = factor_1,
k = 9) + s(time, by = factor_2, k = 9)
Parametric coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2612.72 23.03 113.465 <2e-16 ***
factor_1b 33.19 27.00 1.229 0.22
factor_2z -488.52 27.00 -18.093 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Approximate significance of smooth terms:
edf Ref.df F p-value
s(time) 2.564 3.184 6.408 0.000274 ***
s(time):factor_1b 1.000 1.001 0.295 0.587839
s(time):factor_2z 2.246 2.792 34.281 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
R-sq.(adj) = 0.679 Deviance explained = 69.1%
fREML = 1359.6 Scale est. = 37580 n = 207
现在我想添加factor_1 和factor_2 与time 的非线性交互,以对outcome 产生影响,这样每个组合中的平滑器可能会有所不同(例如:factor_2对于factor_1的某些级别具有更强的非线性效应)。 s(time, factor_1, factor_2) 或 s(time, factor_1, by = factor_2) 之类的东西不起作用。
【问题讨论】:
-
你如何检查非线性交互的存在?以及如何将其合并到您的模型中。
-
请在您的问题中添加您的示例数据。
-
检查非线性交互的存在将是假设检验模型比较的一部分。我们想知道在因素之间添加交互是否会改善模型。
-
好。但我没有看到包含非线性交互的支持模型。或者,Gam 模型是否考虑非线性交互。我需要你的帮助。
-
是的,非线性由平滑处理
s()。平滑中的by参数是一种指定交互的方式,但我不确定如何实现多项交互。