5 votos

Omitir 0 lag orden en el ACF parcela

¿Cómo puedo omitir el cero lag orden en una acf trama? Ver esta imagen:

enter image description here generado por

dummy<-c(14,0.004,0.2,1,0.002,-3,-0.042,1.2,-1,1.3,2.1,4,3001,-2,0.3,2,3)
acf(dummy)

El pico alto (que es, lógicamente, 1) es la destrucción de la trama, ya que la escala es demasiado grande. Me gustaría omitir el pico de lag de orden 1, por lo que la escala puede ser reducido a -0.2 hasta 0,2 por ejemplo, ¿cómo puedo hacer esto?

13voto

Senseful Puntos 116

El uso de la Acf función de la forecast paquete.

3voto

dicenice Puntos 11

Otra posible solución es la siguiente:

# Create an "acf" object called z
z <- acf(dummy)
# Check class of the object
class(z)
# View attributes of the "acf" object
attributes(z)
# Use "acf" attribute to view the first 13 elements (1 = lag at 0)
z$acf[1:13]
# Get rid of the first element (i.e. lag 0)
z$acf[2:13]
# Plot the autocorrelation function without lag 0
plot(x$acf[2:13], 
     type="h", 
     main="Autocorrelation Function", 
     xlab="Lag",     
     ylab="ACF", 
     ylim=c(-0.2,0.2), # this sets the y scale to -0.2 to 0.2
     las=1,
     xaxt="n")
abline(h=0)
# Add labels to the x-axis
x <- c(1:12)
y <- c(1:12)
axis(1, at=x, labels=y)

Hasta ahora, este responde a la pregunta original. Después de ejecutar el código que usted debe ver un diagrama como el que se muestra a continuación.

enter image description here

Con respecto a la adición de significado a las bandas de la función de autocorrelación, será necesario, en este caso, para elegir a una mayor escala en el eje y. De lo contrario, de las grandes bandas de estar fuera de la gama y no vamos a ser capaces de verlos.

Por ejemplo:

# Plot the autocorrelation function without lag 0
plot(z$acf[2:13], 
     type="h", 
     main="Autocorrelation Function", 
     xlab="Lag",     
     ylab="ACF", 
     ylim=c(-1,1), # this sets the y scale to -1 to 1
     las=1,
     xaxt="n")
abline(h=0)
# Add labels to the x-axis
x <- c(1:12)
y <- c(1:12)
axis(1, at=x, labels=y)
# Add 5% critical levels
abline(h=c(2/sqrt(17),-2/sqrt(17)),lty=c(2,2))

Puesto que usted probablemente preferiría tener de Bartlett aproximaciones en lugar de los 5% de los valores críticos, puede hacer lo siguiente:

# Store length of dummy
n <- length(dummy)
# Create a vector to store Bartlett's standard errors
bart.error <- c() 
# Use a loop to calculate Bartlett's standard errors
for (k in 1:n) {
     ends <- k-1
     bart.error[k] <- ((1 + sum((2*z$acf[0:(ends)]^2)))^0.5)*(n^-0.5)
}
# Create upper bound of interval (two standard errors above zero)
upper.bart <- 2*bart.error[1:12]
# Create lower bound of interval (two standard errors below zero)
lower.bart <- 2*-bart.error[1:12]
# Add intervals based on Bartlett's approximations to ACF plot
lines(upper.bart, lty=2, col="red"); lines(lower.bart, lty=2, col="red")

Después de ejecutar el código, debería ver algo como el gráfico siguiente. Las líneas negras discontinuas son el 5% de los valores críticos y el rojo de las líneas de puntos es el intervalo basado en Bartlett errores estándar.

enter image description here

Espero que esto responda a todas sus preguntas.

-2voto

Owen Puntos 413

Establecer el xlim y ylim. Por ejemplo:

acf(x,20,xlim(1,20),ylim(-0.2,0.5))

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X