我跟一位統計學家問他,我如何識別和刪除對gam(廣義加法模型)有太大影響的點。用過多的槓桿作用去除數據點gam fit
他告訴我,我可以根據影響/投影/帽子矩陣做到這一點。我也看到@Gavin Simpson有same idea。
不幸的是,我不知道如何在r實踐中做到這一點。我可以通過函數提取gam的影響矩陣,但是我不知道如何在影響矩陣和原始數據之間建立連接,以知道應該刪除哪些原始數據。
有誰知道如何根據影響矩陣去除太多槓桿的數據點嗎? 是否有一個適用於gamm4的gams的函數?
示例代碼:
library(mgcv)
set.seed(11)
x1 = c(100, rnorm(100,5,1))
x2 = c(runif(100,0,100),300)
y = x1 * x2 * rnorm(101, 50,5)
d1 = data.frame(y,x1,x2)
mod = gam(y ~ x1*x2, data = d1)
inf = influence.gam(mod)
hist(inf)
編輯: 謝謝您的回答李哲源李宋哲元。我意識到我完全忘了包括光滑。我仍然不是很瞭解影響力的實際回報是什麼?這些廚師的距離或利用率或兩者都不是?刪除上面的所有值是否合適?用gamm對象(influence.gam(gamm_model $ gam))做同樣的過程是否合適?
mod1 = gam(y ~ s(x1) + s(x2), data = d1)
inf1 = influence.gam(mod1)
hist(inf1)
any(inf1<0) # At least in this example all values are in between 0-1
mod2 = gam(y ~ s(x1, k = 8, fx = TRUE) + s(x2, k = 3, fx = TRUE), data = d1)
summary(mod2)
inf2 = influence.gam(mod2)
hist(inf2)
d1$inf2 = inf2
d2 = subset(d1, inf2 < 0.5)
mod3 = gam(y ~ s(x1)+s(x2), data = d2)
summary(mod3)
plot(mod3)
謝謝你的回答,對不起,我保持沉默了這麼久。我仍然不知道如何在影響矩陣和原始數據之間建立聯繫,但是如果我理解正確,我不需要理解這一點,因爲無論如何,在繪製gamm,對嗎? –
感謝您的鏈接。 –