【发布时间】:2018-02-26 04:56:38
【问题描述】:
考虑下面的代码来拟合一个广义的加法模型,包括两个项 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 的平滑参数。如何提取这三个参数的估计协方差矩阵?我使用了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 提供。所以我认为参数系数和平滑参数也可以类似地存在这样的值。
【问题讨论】:
-
我不认为你能得到这个;正如我所说,参数估计及其协方差矩阵以平滑参数的值为条件。 IE。平滑度参数的值假定为固定且已知的。您可以考虑选择平滑参数 (
unconditional = TRUE) 的影响,但您不能将此值包含在 vcov 中,因为它仍然是固定的且已知的。您可以使用模型的完全贝叶斯实现来做您想做的事情,其中平滑度参数与混合模型的方差参数相关。