4 votos

Transformación de las series temporales para compensar el cambio de varianza

Tengo una serie temporal (que se muestra a continuación) que procede de un sensor cuya calibración se cambió a mediados del año pasado. Como parte de este cambio, la lectura del sensor de la varianza (o volatilidad) de las observaciones aumentó, aunque en realidad, esta volatilidad se produjo antes del cambio de calibración, pero no estaba siendo detectada completamente.

Como los datos que detecta el sensor son muy estacionales (tanto a nivel semanal como anual), quiero crear una previsión precisa de cuáles serán las lecturas futuras, utilizando el nuevo nivel de calibración. No quiero descartar los datos anteriores a la calibración, ya que sólo hemos recogido algo más de un año de datos.

He probado las transformaciones tradicionales (como Box-Cox) y una descomposición estacional utilizando stl() en R's forecast pero la transformación no resuelve este problema de la varianza, ya que hay diferentes varianzas en el mismo nivel de los datos (digamos en 0,0, por ejemplo).

¿Existen otras técnicas (que estén disponibles en el R lenguaje de programación) que me permitan transformar los datos de antes de mediados de 2013 para que coincidan con la varianza de los datos que vienen después?

time series

0 votos

¿Qué significa la estacionalidad a nivel anual? ¿Podría decirse, de forma equivalente, que hay efectos fijos de semana y de año? ¿Que hay un proceso de memoria larga y corta?

0 votos

Coloca tus datos en un formulario de Excel y te demostraré lo que tienes que hacer .

1voto

James Puntos 1045

En lugar de normalizar, ¿por qué no se modela explícitamente el cambio de varianza? Cree una covariable que sea igual a 0 antes de mediados de 2013 y a 1 después, y utilícela en la especificación del componente de la varianza.

0 votos

Estoy intentando extraer el componente estacional en esta serie temporal a mi entender, stl() no incorpora covariables. ¿Hay algún otro método que pueda utilizar en R ?

0 votos

Eso no lo sé. Sin embargo, el problema puede ser que, aparte de la varianza incondicional, otros parámetros pueden haber cambiado después de la calibración. Si quiere analizar todo el conjunto de datos, debe pensar que algo no ha cambiado. ¿De qué se trata?

0 votos

Sí, estoy intentando extraer la estacionalidad anual de los datos, así que ese es el parámetro que no se modifica.

0voto

Owen Fraser-Green Puntos 642

Una solución para este problema está disponible en AUTOBOX , un programa comercial avanzado dedicado al análisis de series temporales. Se desarrolla un modelo que puede incluir o no variables de intervención para tratar los cambios de nivel, las variables ficticias estacionales y/o las tendencias temporales locales. Se realiza una prueba como la de Tsay http://www.unc.edu/~jbhill/tsay.pdf para comprobar automáticamente el cambio determinista de la varianza del error que conduce a una solución de mínimos cuadrados generalizados. Este enfoque también se denomina mínimos cuadrados ponderados.

0voto

Kai Carver Puntos 101

Esta es la solución que he ideado. La función espera recibir series temporales estacionarias, así que antes de poner las dos series temporales en cuestión en la función, las diferencié.

equalizeVariance <- function(targetSeries, referenceSeries){
  referenceSD <- sd(referenceSeries, na.rm=TRUE)
  targetSD <- sd(targetSeries, na.rm=TRUE)
  existingSDdifference  <- referenceSD - targetSD
  optimalDivisor  <-  1
  #lnFirstSeries<-BoxCox(firstSeries, lambda)  
  for (i in seq(0.01, 50, .001)) {
    transformedTargetSeries <- targetSeries/i
    transformedSD <- sd(transformedTargetSeries, na.rm=TRUE)
    transformedSDdifference <- referenceSD - transformedSD
    if (transformedSDdifference>existingSDdifference & transformedSDdifference<=0){
      optimalDivisor <-  i
    }
    else {
      print(paste(optimalDivisor, " is the optimal divisor", sep=""))
      break
    }
  }
  returnedSeries <- targetSeries/optimalDivisor
  return(returnedSeries)
}

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