Участок ACF с ggplot2: настройка ширины geom_bar - программирование
Подтвердить что ты не робот

Участок ACF с ggplot2: настройка ширины geom_bar

С acf мы можем сделать ACF plot в базовом графе R.

x <- lh
acf(x)

enter image description here

Следующий код может использоваться для получения ACF plot в ggplot2.

conf.level <- 0.95
ciline <- qnorm((1 - conf.level)/2)/sqrt(length(x))
bacf <- acf(x, plot = FALSE)
bacfdf <- with(bacf, data.frame(lag, acf))

library(ggplot2)
q <- ggplot(data=bacfdf, mapping=aes(x=lag, y=acf)) +
       geom_bar(stat = "identity", position = "identity")
q

enter image description here

Вопрос

Как получить строки, а не бары или как установить ширину баров, чтобы они выглядели как линии? Благодаря

4b9b3361

Ответ 1

Вероятнее всего, вам лучше делать строчки с линейными сегментами через geom_segment()

library(ggplot2)

set.seed(123)
x <- arima.sim(n = 200, model = list(ar = 0.6))

bacf <- acf(x, plot = FALSE)
bacfdf <- with(bacf, data.frame(lag, acf))

q <- ggplot(data = bacfdf, mapping = aes(x = lag, y = acf)) +
       geom_hline(aes(yintercept = 0)) +
       geom_segment(mapping = aes(xend = lag, yend = 0))
q

enter image description here

Ответ 2

Как насчет использования geom_errorbar с шириной = 0?

ggplot(data=bacfdf, aes(x=lag, y=acf)) + 
    geom_errorbar(aes(x=lag, ymax=acf, ymin=0), width=0)

Ответ 3

@konrad; попробуйте следующий код:

library(ggfortify)
p1 <- autoplot(acf(AirPassengers, plot = FALSE), conf.int.fill = '#0000FF', conf.int.value = 0.8, conf.int.type = 'ma') 
print(p1) 
library(cowplot) 
ggdraw(switch_axis_position(p1, axis = 'xy', keep = 'xy'))

введите описание изображения здесь

Ответ 4

Из пакета прогнозов приходит функция ggtsdisplay, которая отображает как ACF, так и PACF с ggplot. x - это остатки от модели fit (fit$residuals).

forecast::ggtsdisplay(x,lag.max=30)