R 来自gam的ggplot置信带预测$fit和预测$se.fit

R 来自gam的ggplot置信带预测$fit和预测$se.fit,r,ggplot2,gam,mgcv,R,Ggplot2,Gam,Mgcv,我有以下变量: prod:正整数 任期:正数值 队列:因子 下面是一些具有这些规格的模拟数据 set.seed(123) my_data <- data.frame(prod = rnbinom(10000, mu = 2.5, size = 1.5), tenure = rexp(10000), cohort = factor(sample(2011:2014, size = 10000, rep

我有以下变量:

prod
:正整数

任期
:正数值

队列
:因子

下面是一些具有这些规格的模拟数据

set.seed(123)
my_data <- data.frame(prod   = rnbinom(10000, mu = 2.5, size = 1.5),
                      tenure = rexp(10000),
                      cohort = factor(sample(2011:2014, size = 10000, replace = TRUE,
                                             prob = c(0.17, 0.49, 0.26, 0.08))))
获取预测及其标准误差:

preds   <- predict(mod, se.fit = TRUE)
my_data <- data.frame(my_data,
                      mu   = exp(preds$fit),
                      low  = exp(preds$fit - 1.96 * preds$se.fit),
                      high = exp(preds$fit + 1.96 * preds$se.fit))
但我希望能从GAM中消除信心带。如何添加这些内容

不是答案

  • 移除
    fill=NA
    。不。这些置信区间将是无限小的,因为在一个队列中,任期预测是完全相同的
  • 添加对geom_ribbon(aes(x=任期,ymin=低,ymax=高))的调用。。不。这给了我一个超级摇摆,不平滑的信心带
  • 使用
    软件包:ggvis
    !请不要使用
    package:ggvis
    答案,除非在
    ggplot2
    中没有办法这样做。我当前的绘图框架是
    ggplot2
    ,我现在坚持使用它,除非我必须切换才能进行此绘图
  • 这对我有用

    require(ggplot2)
    require(mgcv)
    
    set.seed(123)
    my_data <- data.frame(prod   = rnbinom(10000, mu = 2.5, size = 1.5),
                          tenure = rexp(10000),
                          cohort = factor(sample(2011:2014, size = 10000, replace = TRUE,
                                                 prob = c(0.17, 0.49, 0.26, 0.08))))
    mod <- gam(prod ~ s(tenure, by = cohort) + cohort, data = my_data, family = nb())
    preds   <- predict(mod, se.fit = TRUE)
    my_data <- data.frame(my_data,
                          mu   = exp(preds$fit),
                          low  = exp(preds$fit - 1.96 * preds$se.fit),
                          high = exp(preds$fit + 1.96 * preds$se.fit))
    
    ggplot(my_data, aes(x = tenure, y = prod, color = cohort)) +
      geom_point() + 
      geom_smooth(aes(ymin = low, ymax = high, y = mu), stat = "identity")
    
    require(ggplot2)
    要求(mgcv)
    种子集(123)
    
    my_数据(如果需要工作代码,则应提供数据。)
    geom_平滑应能工作,如中所示。旁注,为什么在ggplot2调用中使用
    %%>%%
    ?我希望那里会有加分。谢谢。正如您所看到的,我确实包含了一个
    +
    操作符。我使用
    %%>%%
    ,这样我就可以在不同的行上将绘图元素用管道连接在一起。我想这就是
    ggvis
    所做的(是的,有一天我会切换到
    ggvis
    。@RomanLuštrik,将其格式化为一个答案,我会从中检查出永恒的爱的堆栈溢出。@BondedDust,这是你的数据,但在这种情况下似乎没有必要。我认为这不起作用。我得到“警告:忽略未知美学:ymin,ymax”。这些标注栏可能是ggplot2计算的新值。可能版本不同?Me,ggplot2_2.2.1和mgcv_1.8-24。尽管有警告,您计算的值仍在使用,这是事实。我们要删除这些对话吗?我使用的是ggplot2_2.2.1.9000和mgcv_1.8-23。当然,我会在几个小时后删除此评论。
    library(magrittr)
    library(ggplot2)
    library(splines)
    my_plot <-
      ggplot(my_data, aes(x = tenure, y = mu, color = cohort)) %>%
      + geom_smooth(method  = "glm",
                    formula = y ~ ns(x, 3),
                    family  = "quasipoisson",
                    fill    = NA)
    
    require(ggplot2)
    require(mgcv)
    
    set.seed(123)
    my_data <- data.frame(prod   = rnbinom(10000, mu = 2.5, size = 1.5),
                          tenure = rexp(10000),
                          cohort = factor(sample(2011:2014, size = 10000, replace = TRUE,
                                                 prob = c(0.17, 0.49, 0.26, 0.08))))
    mod <- gam(prod ~ s(tenure, by = cohort) + cohort, data = my_data, family = nb())
    preds   <- predict(mod, se.fit = TRUE)
    my_data <- data.frame(my_data,
                          mu   = exp(preds$fit),
                          low  = exp(preds$fit - 1.96 * preds$se.fit),
                          high = exp(preds$fit + 1.96 * preds$se.fit))
    
    ggplot(my_data, aes(x = tenure, y = prod, color = cohort)) +
      geom_point() + 
      geom_smooth(aes(ymin = low, ymax = high, y = mu), stat = "identity")