GAM 方差由变量解释

问题描述 投票:0回答:2

我当前的问题是计算由 R 的一般加性模型 (GAM) 的不同变量解释的方差。

我遵循伍德在这里给出的解释: https://stat.ethz.ch/pipermail/r-help/2007-October/142743.html

但我想用三个变量来做。 我试过这个:

library(mgcv)

set.seed(0)
n<-400
x1 <- runif(n, 0, 1)
x2 <- runif(n, 0, 1) 
x3 <- runif(n, 0, 1) 

f1 <- function(x) exp(2 * x) - 3.75887
f2 <- function(x) 0.2*x^11*(10*(1-x))^6+10*(10*x)^3*(1-x)^10
f3 <- function(x) 0.008*x^2 - 1.8*x + 874
f <- f1(x1) + f2(x2) + f3(x3)
e <- rnorm(n, 0, 2)
y <- f + e

b <- gam(y ~ s(x1, k = 3)+s(x2, k = 3)+ s(x3, k = 3))
b3 <- gam(y ~ s(x1) + s(x2), sp = c(b$sp[1], b$sp[2]))
b2 <- gam(y ~ s(x1) + s(x3), sp = c(b$sp[1], b$sp[3]))
b1 <- gam(y ~ s(x2) + s(x3), sp = c(b$sp[2], b$sp[3]))

b0 <- gam(y~1)

(deviance(b1)-deviance(b))/deviance(b0)
(deviance(b2)-deviance(b))/deviance(b0)
(deviance(b3)-deviance(b))/deviance(b0)

但我不明白结果。例如,只有 x1 和 x2 的模型的偏差小于具有三个解释变量的偏差。

我用来提取由三个变量解释的方差的方法是否正确?

是否意味着全局模型存在混杂效应?或者还有其他解释吗?

r variance gam mgcv
2个回答
6
投票

你在这里做错了什么:

b <- gam(y ~ s(x1, k = 3) + s(x2, k = 3) + s(x3, k = 3))
b3 <- gam(y ~ s(x1) + s(x2), sp = c(b$sp[1], b$sp[2]))
b2 <- gam(y ~ s(x1) + s(x3), sp = c(b$sp[1], b$sp[3]))
b1 <- gam(y ~ s(x2) + s(x3), sp = c(b$sp[2], b$sp[3]))

为什么在第一行设置

k = 3
,而其余行不设置
k = 3
?如果不指定
k
s()
将采用默认值
k = 10
。现在你遇到一个问题:
b1
b2
b3
没有嵌套在
b
中。

在 Simon Wood 的原始示例中,他未指定

k
,因此
k=10
代表所有
s()
。事实上,您可以改变
k
值,但您必须保证同一协变量始终具有相同的
k
(以确保嵌套)。例如,您可以这样做:

b <- gam(y ~ s(x1, k = 4) + s(x2, k = 6) + s(x3, k = 3))
b3 <- gam(y ~ s(x1, k = 4) + s(x2, k = 6), sp = c(b$sp[1], b$sp[2]))  ## droping s(x3) from b
b2 <- gam(y ~ s(x1, k = 4) + s(x3, k = 3), sp = c(b$sp[1], b$sp[3]))  ## droping s(x2) from b
b1 <- gam(y ~ s(x2, k = 6) + s(x3, k = 3), sp = c(b$sp[2], b$sp[3]))  ## droping s(x1) from b

那么我们来做:

(deviance(b1)-deviance(b))/deviance(b0)
# [1] 0.2073421
(deviance(b2)-deviance(b))/deviance(b0)
# [1] 0.4323154
(deviance(b3)-deviance(b))/deviance(b0)
# [1] 0.02094997

正值意味着删除任何模型项都会增大偏差,这是合理的,因为我们的真实模型具有所有三个项。


0
投票

也许这个新的 R 包

gam.hp
可以解决你的问题? 它基本上包含一个函数 (
gam.hp()
),该函数采用使用
mgcv
包构建的 GAM 和 GAMM,并计算模型公式中每个预测变量的调整 R² 或解释偏差 。 它还计算所解释的偏差或 R² 的哪一部分唯一可归因于某个预测变量,下面的出版物参考文献讨论了考虑它的有用程度。对于更复杂的模型,计算可能需要一段时间。 更多详情请看这里:

参考:

Lai J、Tang J、Li T、Zhang A、Mao L (2024) 使用 gam.hp R 包评估广义可加模型中预测变量的相对重要性。植物多样性,46, 542-546。 [链接]

© www.soinside.com 2019 - 2024. All rights reserved.