R GAM中的随机效应和其他平滑效应使协方差矩阵非正定
我正在使用R GAM中的随机效应和其他平滑效应使协方差矩阵非正定,r,regression,gam,mgcv,R,Regression,Gam,Mgcv,我正在使用mgcv中的gam来适应模型 m <- gam(y ~ s(x) + s(Group, bs = "re")) 非正定的。此外,估计的s(x)只是一条直线 现在,移除s(x)部分修复了vcov问题,移除s(组)也修复了这些问题,然后估计的曲线s(x)不是一条直线 有人知道为什么会发生这种情况,以及如何解决它吗?这样我就可以包括s(x)和s(组),并且还可以得到一个正定的vcov矩阵和正确估计的曲线(即使它们不重要) 我相信这可能是因为x和组在某种程度上混淆了,因此只需要其中一个
mgcv
中的gam
来适应模型
m <- gam(y ~ s(x) + s(Group, bs = "re"))
非正定的。此外,估计的s(x)
只是一条直线
现在,移除s(x)
部分修复了vcov
问题,移除s(组)
也修复了这些问题,然后估计的曲线s(x)
不是一条直线
有人知道为什么会发生这种情况,以及如何解决它吗?这样我就可以包括s(x)
和s(组)
,并且还可以得到一个正定的vcov
矩阵和正确估计的曲线(即使它们不重要)
我相信这可能是因为
x
和组
在某种程度上混淆了,因此只需要其中一个?这意味着受惩罚的最小二乘问题不是满秩的,即使在通过普通的二次惩罚进行正则化之后也是如此。首先检查你的系数。如果任何系数正好为0,则它们不可识别,且约束为0
any(coef(m) == 0)
请注意,与在lm
和glm
中对不可识别系数进行编码NA
不同,mgcv
仅使用0。当然,这些系数的结果标准误差也是0,这就是为什么vcov
给出的协方差矩阵不是正定的
解决方法是使用更强的正则化。例如,在此处尝试收缩平滑
s(x, bs = 'cs', k = 10)
s(x, bs = 'ts', k = 10)
有关所有平滑基类,包括收缩类,请参见?平滑。术语
另一个尝试是降低模型的灵活性,例如降低s(x)
s(x, k = 5)
s(x, k = 3)
对于三次样条曲线,最小k
为3
但这并不能保证解决您的问题,因为如果是s(x)
的零空间与s(组,bs='re')
混淆,您必须使用收缩平滑来惩罚零空间
s(x, k = 5)
s(x, k = 3)