GAM中的随机效应和另一个平滑使协方差矩阵非正定

时间:2017-06-01 14:38:51

标签: r regression gam mgcv

我在gam中使用mgcv来适应模型

m <- gam(y ~ s(x) + s(Group, bs = "re"))
然而,这使得协方差矩阵

vcov(m)

非正定。此外,估计的s(x)只是一条直线。

现在,删除s(x)部分会解决vcov问题,删除s(Group)也会修复这些问题,然后估算的曲线s(x)不是直线。

有人知道为什么会发生这种情况,以及如何解决这个问题?这样我可以同时包含s(x)s(Group),并且还可以得到正定vcov矩阵和正确估计的曲线(即使它们是微不足道的)?

我认为这可能是因为xGroup在一定程度上混淆了这一事实,因此只需要其中一个?

1 个答案:

答案 0 :(得分:1)

这意味着即使在通过普通二次惩罚进行正则化之后,惩罚最小二乘问题也不是满秩。首先检查你的系数。如果任何系数恰好为0,则它​​们不可识别并且约束为0。

any(coef(m) == 0)

请注意,与lmglm不同,其中无法识别的系数被编码NAmgcv只使用0.当然,这些系数的最终标准误差是也是0,这就是vcov给出的协方差矩阵不是正定的原因。

修复是使用更强的正则化。在这里尝试收缩平滑,例如,

s(x, bs = 'cs', k = 10)
s(x, bs = 'ts', k = 10)

有关所有平滑基础类,请参阅?smooth.terms,包括收缩类。

要尝试的另一件事是通过降低s(x)的等级来降低模型的灵活性,例如

s(x, k = 5)
s(x, k = 3)

对于三次样条曲线,最小k为3。

但是这并不能保证解决您的问题,就好像它是s(x)的{​​{1}}的空格一样,您必须使用收缩平滑来惩罚NULL空间。< / p>