Участок 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]()
Вопрос
Как получить строки, а не бары или как установить ширину баров, чтобы они выглядели как линии? Благодаря
Ответы
Ответ 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)