Настройка вычисления плавного доверительного интервала

Я использую для построения loessоценки группы точек вместе с доверительным интервалом с помощью geom_smoothфункции.

Теперь мне нужно изменить метод, с помощью которого вычисляются доверительные границы (т. е. мне нужно изменить форму полосы размытия). Есть ли способ сделать это geom_smooth?

Или, как я могу подражать ему ggplot2? Как я могу такую размытую полосу?

1 ответ

  1. Если вам нужно построить что-то, что не является одним из вариантов в geom_smoothвашем лучшем Пари, чтобы вручную соответствовать модели самостоятельно.

    Вы не сказали, Какой метод вам нужен.
    Но вот пример подгонки лесса с семейством симметричных и вычисления стандартных ошибок этого.

    d <- data.frame(x = rnorm(100), y = rnorm(100))
    
    # The original plot using the default loess method
    p <- ggplot(d, aes(x, y)) + geom_smooth(method = 'loess', se = TRUE)
    
    # Fit loess model with family = 'symmetric'
    #   Replace the next 2 lines with whatever different method you need
    loess_smooth <- loess(d$x ~ d$y, family = 'symmetric')
    
    # Predict the model over the range of data you are interested in.
    loess_pred <- predict(loess_smooth, 
                          newdata = seq(min(d$x), max(d$x), length.out = 1000), 
                          se = TRUE)
    
    loess.df <- data.frame(fit = loess_pred$fit, 
                           x =  seq(min(d$x), max(d$x), length.out = 1000), 
                           upper = loess_pred$fit + loess_pred$se.fit, 
                           lower = loess_pred$fit - loess_pred$se.fit)
    
    # plot to compare
    p + 
      geom_ribbon(data = loess.df, aes(x = x, y = fit, ymax = upper, ymin = lower), alpha = 0.6) +
      geom_line(data = loess.df, aes(x = x, y = fit))
    

    Два лесса подходит