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

Random effects in GAM and one other smooth make covariance matrix non-positive definite

我在 mgcv 中使用 gam 来拟合模型

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在一定程度上混淆了,所以只需要其中一个?

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

any(coef(m) == 0)

请注意,与 lmglm 中无法识别的系数编码不同 NAmgcv 仅使用 0。当然,这些结果的标准误差系数也为0,这就是为什么vcov给出的协方差矩阵不是正定的。

解决方法是使用更强的正则化。试试shrinkage smooth这里,例如

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

请参阅 ?smooth.terms 了解所有平滑基础 class,包括收缩 class。


另一件事是降低模型的灵活性,方法是降低 s(x) 的等级,例如

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

三次样条的最小 k 为 3。

但这并不能保证解决你的问题,好像是s(x)的NULL space与s(Group, bs = 're')混淆了,你必须使用shrinkage smooth来惩罚 NULL space.