R语言 为什么mgcviz不使用合适的散点图来拟合QGAMs?

ulydmbyx  于 2023-09-27  发布在  其他
关注(0)|答案(1)|浏览(141)

正如标题所示,正态散点图沿着数据的默认GAM拟合应该如下所示:

#### Libraries ####
library(tidyverse)
library(mgcViz)
library(qgam)
library(quantreg)

#### Save Data as Tibble ####
data("barro")
tib <- as_tibble(MASS::mcycle)
tib

#### Inspect Scatterplot ####
tib %>% 
  ggplot(aes(x=times,
             y=accel))+
  geom_point(alpha=.4)+
  theme_classic()+
  geom_smooth(method = "gam",
              formula = y ~ s(x))+
  labs(x="Times",
       y="Acceleration",
       title = "Normal Fitted GAM")

从这里开始拟合QGAM很简单:

#### Set Quants and Fit Multiple Quantile GAM ####
q <- c(.2,.5,.8)

fit <- mqgam(accel ~ s(times),
             data = tib, 
             q=q)

但是,绘制每个分位数图表明,mgcViz包中QGAMs的绘制机制与应该存在的数据点不匹配。这里我只选择0.20分位数拟合来显示发生了什么,并使用与shown here基本相同的代码。

#### Save QDO Objects ####
q2 <- qdo(fit,.2)

#### Grab Visual Data ####
pg2 <- getViz(q2)

#### Plot in MGCVIZ ####
final.plot <- plot(pg2, 
                   select = 1)
final.plot +
  l_fitLine(colour = "red") +
  l_rug(mapping = aes(x=x, 
                      y=y), 
        alpha = 0.8) +
  l_ciLine(mul = 5, 
           colour = "blue", 
           linetype = 2) + 
  l_points(shape = 19, 
           size = 1, 
           alpha = 0.1) + 
  theme_classic()

在这里,您可以看到y轴上的一些值与原始图上的位置不匹配,在这里用绿色圈出:

如何解决此问题?

xurqigkl

xurqigkl1#

图中的点是 * 部分残差 *,而不是数据。相对于一个模型来定义弹性模量;改变模型,部分残差也会改变。当你拟合一个较低的尾部分位数时,我希望在相反尾部的极端的一些观察值拟合得不好,因此有更大的部分残差。
请注意,大部分残差用绿色圈出(一个圆圈不包含残差点,所以不确定那里发生了什么?)是数据具有高方差并且因此数据更加分散的地方。因此,我希望这里有更大的部分残差,因为相对于您正在建模的分布的相反尾部,有更多的极端观测值。

相关问题