考虑下面的代码来拟合广义加法模型,包括两个项x0是线性的,x1是非线性的:
library(mgcv)
set.seed(2) ## simulate some data...
dat <- gamSim(1,n=400,dist="normal",scale=2, method="REML")
b <- gam(y~x1+s(x2, k=5),data=dat)
模型b
估算3个参数:截距,x1
的一个参数系数和x2
的一个平滑参数。如何提取这3个参数的估计协方差矩阵?我使用了vcov(b)
,它给出了以下结果:
(Intercept) x0 s(x1).1 s(x1).2 s(x1).3 s(x1).4
(Intercept) 0.104672470 -0.155791753 0.002356237 0.001136459 0.001611635 0.001522158
x0 -0.155791753 0.322528093 -0.004878003 -0.002352757 -0.003336490 -0.003151250
s(x1).1 0.002356237 -0.004878003 0.178914602 0.047701707 0.078393786 0.165195739
s(x1).2 0.001136459 -0.002352757 0.047701707 0.479869768 0.606310668 0.010704075
s(x1).3 0.001611635 -0.003336490 0.078393786 0.606310668 0.933905535 0.025816649
s(x1).4 0.001522158 -0.003151250 0.165195739 0.010704075 0.025816649 0.184471259
似乎vcov(b)
给出了与平滑项s(x1)
的每个结相关的协方差,因为结果包含s(x1).1, s(x1).2, s(x1).3, s(x1).4
(这就是我猜的)。我需要估计的平滑参数和其他参数系数之间的协方差,这对于(Intercept)
应该只有一个,x0
只有一个。是否可以使用?
编辑:我在代码中将估算方法设置为REML。我同意我可能用Gavin Simpson所说的不正确的短语来解释我的想法,我理解他所说的一切。然而,计算参数系数(截距和x1
的系数)与它们的平滑参数之间的协方差的想法来自估计方法。如果我们将其设置为ML或REML,那么我猜可能存在协方差。在这种情况下,对数平滑参数估计的估计协方差矩阵由sp.vcov
提供。所以我认为这个值对于参数系数和平滑参数可能存在类似的情况。
答案 0 :(得分:1)
您的陈述
模型b估计3个参数:截距,x1的一个参数系数和x2的一个平滑参数。
不正确。
该模型估计了这三个系数的更多系数。另请注意,对于x2
来说,平滑参数是令人困惑的,因为该模型也估计了其中一个,但我怀疑这是你的意思。估计x2
的平滑参数是控制拟合样条曲线的摆动的值。它也与您看到的其他系数一起估算,虽然它通常不被视为主模型估计参数的一部分,因为您在VCOV中看到的实际上是模型系数的方差和协方差条件在平滑度参数的这个值上。
此处拟合的GAM是x2
的效果由x2
的样条基础扩展表示的结果。对于使用的基础和应用于基础的可识别性约束,这意味着x2
,f(x2)
的真实效果是通过k-1
基函数估算的。这是一个函数hat(f(x2)) = \sum \beta_i b_i(x2)
,通过对加权(beta_i
,i
基函数的模型系数,b
基本函数求和来估算。 x2
(b_i(x2)
)。
因此,一旦选择了基础,并且一旦我们有一个平滑参数(我的版本,控制摆动的那个),这个模型就是一个x1
的GLM,并且{{1}评估了4个基函数}。因此它是参数化的,并且VCOV中没有一个元素与平滑x2
相关 - 模型不能以这种方式工作。