[英]ACF Plot with ggplot2: Setting width of geom_bar
With acf
we can make ACF plot
in base R
graph.使用acf
我们可以在基础R
图中ACF plot
图。
x <- lh
acf(x)
The following code can be used to get the ACF plot
in ggplot2
.以下代码可用于获取ggplot2
的ACF plot
。
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
Question问题
How to get lines rather than bars or how to set the width of bars so that they look like lines?如何获得线条而不是条形或如何设置条形的宽度使它们看起来像线条? Thanks谢谢
You're probably better off plotting with line segments via geom_segment()
您最好通过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
How about using geom_errorbar with width=0?如何使用宽度 = 0 的 geom_errorbar ?
ggplot(data=bacfdf, aes(x=lag, y=acf)) +
geom_errorbar(aes(x=lag, ymax=acf, ymin=0), width=0)
From the forecast package comes a function ggtsdisplay
that plots both ACF and PACF with ggplot
.从预测的包中附带的功能ggtsdisplay
该地块既ACF和PACF与ggplot
。 x
is the residuals from the model fit ( fit$residuals
). x
是模型拟合的残差 ( fit$residuals
)。
forecast::ggtsdisplay(x,lag.max=30)
From your answers, I synthesized a ggplot ACF / PACF plotting method :根据您的回答,我综合了 ggplot ACF / PACF 绘图方法:
require(zoo)
require(tseries)
require(ggplot2)
require(cowplot)
ts= zoo(data[[2]]) # data[[2]] because my time series data was the second column
# Plot ACP / ACF with IC
# How to compute IC for ACF and PACF :
# https://stats.stackexchange.com/questions/211628/how-is-the-confidence-interval-calculated-for-the-acf-function
ic_alpha= function(alpha, acf_res){
return(qnorm((1 + (1 - alpha))/2)/sqrt(acf_res$n.used))
}
ggplot_acf_pacf= function(res_, lag, label, alpha= 0.05){
df_= with(res_, data.frame(lag, acf))
# IC alpha
lim1= ic_alpha(alpha, res_)
lim0= -lim1
ggplot(data = df_, mapping = aes(x = lag, y = acf)) +
geom_hline(aes(yintercept = 0)) +
geom_segment(mapping = aes(xend = lag, yend = 0)) +
labs(y= label) +
geom_hline(aes(yintercept = lim1), linetype = 2, color = 'blue') +
geom_hline(aes(yintercept = lim0), linetype = 2, color = 'blue')
}
acf_ts= ggplot_acf_pacf(res_= acf(ts, plot= F)
, 20
, label= "ACF")
pacf_ts= ggplot_acf_pacf(res_= pacf(ts, plot= F)
, 20
, label= "PACF")
# Concat our plots
acf_pacf= plot_grid(acf_ts, pacf_ts, ncol = 2, nrow = 1)
acf_pacf
Results:结果:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.