Análisis de patrones ascendentes / descendentes en datos de series temporales cortas

8

No he trabajado con mucha frecuencia con datos de series de tiempo, por lo que estoy buscando algunos indicadores sobre cómo proceder mejor con esta pregunta en particular.

Digamos que tengo los siguientes datos, graficados a continuación:

ingrese la descripción de la imagen aquí

Aquí hay un año en el eje x. El eje y es una medida de 'desigualdad', por ejemplo, podría ser desigualdad en el ingreso de un país.

Para esta pregunta, estoy interesado en preguntar si existe una naturaleza ascendente / descendente en los datos año tras año (por falta de una mejor descripción). En esencia, me gustaría preguntar si la desigualdad aumentó el año pasado con respecto al año anterior, ¿es probable que ahora disminuya? El tamaño de los altibajos también puede ser importante para tener en cuenta.

Estoy pensando que algo como wavelet analysiso Fourier analysispuede ayudar, aunque no los he usado antes y creo que un tamaño de muestra como este es demasiado pequeño.

Estaría interesado en cualquier idea / sugerencia que pueda seguir.

EDITAR:

Estos son los datos para este gráfico:

#   year     value
#1  1956 0.9570912
#2  1957 1.0303563
#3  1958 0.9568302
#4  1959 1.1449074
#5  1960 0.8962963
#6  1961 1.0431552
#7  1962 0.8050077
#8  1963 0.8533181
#9  1964 0.9971713
#10 1965 1.0453083
#11 1966 0.8221328
#12 1967 1.0594876
#13 1968 1.1244195
#14 1969 1.0705498
#15 1970 0.8669457
#16 1971 0.8757319
#17 1972 1.0815189
#18 1973 1.1458959
#19 1974 1.2782848
#20 1975 1.0729718
#21 1976 1.1569416
#22 1977 1.2063673
#23 1978 1.1509700
#24 1979 1.1172020
#25 1980 1.0691429
#26 1981 1.0907407
#27 1982 1.1753854
#28 1983 0.9440187
#29 1984 1.1214175
#30 1985 1.2777778
#31 1986 1.2141739
#32 1987 0.9481722
#33 1988 1.1484652
#34 1989 0.7968458
#35 1990 1.1721074
#36 1991 1.1569523
#37 1992 0.8160300
#38 1993 0.9483291
#39 1994 1.0898612
#40 1995 0.8196819
#41 1996 1.0297017
#42 1997 1.0207769
#43 1998 0.9720285
#44 1999 0.8685848
#45 2000 0.9228595
#46 2001 0.9171540
#47 2002 1.0470085
#48 2003 0.9313437
#49 2004 1.0943982
#50 2005 1.0248419
#51 2006 0.9392917
#52 2007 0.9666248
#53 2008 1.1243693
#54 2009 0.8829184
#55 2010 0.9619517
#56 2011 1.0030864
#57 2012 1.1576998
#58 2013 0.9944945

Aquí están en Rformato:

structure(list(year = structure(1:58, .Label = c("1956", "1957", 
"1958", "1959", "1960", "1961", "1962", "1963", "1964", "1965", 
"1966", "1967", "1968", "1969", "1970", "1971", "1972", "1973", 
"1974", "1975", "1976", "1977", "1978", "1979", "1980", "1981", 
"1982", "1983", "1984", "1985", "1986", "1987", "1988", "1989", 
"1990", "1991", "1992", "1993", "1994", "1995", "1996", "1997", 
"1998", "1999", "2000", "2001", "2002", "2003", "2004", "2005", 
"2006", "2007", "2008", "2009", "2010", "2011", "2012", "2013"
), class = "factor"), value = c(0.957091237579043, 1.03035630567276, 
0.956830206830207, 1.14490740740741, 0.896296296296296, 1.04315524964493, 
0.805007684426229, 0.853318117977528, 0.997171336206897, 1.04530832219251, 
0.822132760780104, 1.05948756976154, 1.1244195265602, 1.07054981337927, 
0.866945712836124, 0.875731948296804, 1.081518931763, 1.1458958958959, 
1.27828479729065, 1.07297178130511, 1.15694159981794, 1.20636732623034, 
1.15097001763668, 1.11720201026986, 1.06914289768696, 1.09074074074074, 
1.17538544689082, 0.944018731375053, 1.12141754850088, 1.27777777777778, 
1.21417390277039, 0.948172198172198, 1.14846524606799, 0.796845829569407, 
1.17210737869653, 1.15695226716732, 0.816029959161985, 0.94832907620264, 
1.08986124767836, 0.819681861348528, 1.02970169141241, 1.02077687443541, 
0.972028455959697, 0.868584838281808, 0.922859547859548, 0.917153996101365, 
1.04700854700855, 0.931343718539713, 1.09439821062628, 1.02484191508582, 
0.939291692822766, 0.966624816907303, 1.12436929683306, 0.882918437563246, 
0.961951667980037, 1.00308641975309, 1.15769980506823, 0.994494494494494
)), row.names = c(NA, -58L), class = "data.frame", .Names = c("year", 
"value"))
jalapic
fuente
Una idea muy simple: ¿qué tal si tomamos la serie temporal de diferencias y observamos los coeficientes de correlación automática?
psarka
Los datos ahora se revelan como desigualdad medida usando la asimetría de Lorenz. Vea el comentario de OP debajo de la respuesta de @IrishStat. Pero, ¿cuál es la naturaleza de la curva más suave? Ser tímido acerca de lo que estás mostrando generalmente solo hace que la pregunta sea más críptica, no útilmente más general.
Nick Cox
El análisis de Fourier @jalapic en una muestra de observación corta casi siempre no tiene sentido. Puede elegir un ciclo con una longitud de onda de 25 años, pero será muy débil. Apenas tiene un ciclo completo en el mejor de los casos. Fourier fue diseñado para datos físicos donde tiene series repetibles o al menos largas.
Aksakal
Te das cuenta de que la naturaleza de arriba abajo que describe encaja bien con la idea de la regresión a la media. Es decir, tendrá ese comportamiento de arriba abajo incluso si su serie no tiene memoria en el sentido arima.
Korone

Respuestas:

6

Si la serie no está correlacionada, tomar innecesariamente las diferencias inyecta auto-correlación. Incluso si la serie está autocorrelacionada, la diferencia injustificada es inapropiada. Las ideas simples y los enfoques simples a menudo tienen efectos secundarios no deseados. El proceso de identificación del modelo (ARIMA) comienza con la serie original y puede dar lugar a diferencias PERO nunca debe comenzar con diferencias injustificadas a menos que exista una justificación teórica. Si lo desea, puede publicar sus series cortas y las usaré para explicarle cómo identificar un modelo para esta serie.

Después de recibir los datos:

El ACF de sus datos no indica inicialmente (o finalmente) ningún proceso ARIMA aquí, tanto ACF como PACF
imagen
y aquí solo ACF:
imagenSin embargo, parece haber dos cambios de nivel en sus datos ... uno en 1972 y otro en 1992 .. parecen estar casi cancelando los cambios de nivel. Un modelo útil también podría incluir la incorporación de tres valores inusuales en los períodos 1989,1959 y 1983. La ecuación es entonces imagen
y aquí
imagen
con las estadísticas del modelo aquí:
imagen
El real / ajuste y pronóstico está aquí imagencon el gráfico residual aquí sugiriendo la suficiencia del modelo imagen. Esto se confirma por el acf de los residuos imagen. Finalmente, el ajuste y el pronóstico resumen los hallazgos imagen.
En resumen, la serie (probablemente una relación) carece de memoria autorregresiva significativa, pero tiene alguna estructura determinista evidenciada (estadísticamente significativa). Todos los modelos están equivocados, pero algunos son útiles (GEP Box).

Después de alguna discusión ... Si uno modelara diferencias, obtendría el siguiente modelo ... ingrese la descripción de la imagen aquícon ACTUAL / FIT y PRONÓSTICO ingrese la descripción de la imagen aquí. Los pronósticos se ven inquietantemente similares ... el coeficiente MA cancela efectivamente el operador de diferenciación.

IrishStat
fuente
Muchas gracias por las sugerencias. Me interesaría saber más: he agregado los datos sin procesar a la pregunta.
Jalapic
2
@IrishStat sugirió un modelo con 6 parámetros. El conjunto de datos completo es de 58 observaciones. Esto hace 10 observaciones por parámetro. Incluso si esto no fuera un dato económico, diría que una muestra es demasiado pequeña para admitir el modelo de 6 parámetros. Como se trata de un modelo económico, diré que el modelo de series temporales puras no funcionará. Necesita variables exógenas (PIB?) O algún tipo de modelo estructural.
Aksakal
2
El modelo podría simplificarse fácilmente para ignorar los tres puntos aberrantes (pulsos). Esto reduciría a 3 coeficientes ... una constante y dos indicadores de cambio de nivel ... ¡no podría ser más simple! y aún proporcionaría una representación razonable ... turnos de dos niveles. Estoy de acuerdo en que un modelo de serie temporal pura no va a funcionar. El modelo que presenté es simplemente un modelo de regresión ordinario con dos indicadores de cambio de nivel ... no hay memoria, por lo tanto, no se trata clásicamente de un modelo de serie temporal, ya que no hay una estructura ARIMA en el modelo, ya que no está justificado.
IrishStat el
No se puede llorar "Necesito más variables", aunque mi experiencia me dice que esto es así. Este problema es lo que es! Resuélvelo !
IrishStat el
@aksakal, lo que muestra el modelo irishstat es que tiene 5 variables, si la parsimonia es preocupante, simplemente puede apagar los pulsos y simplemente mantener los cambios de nivel que abordarían la pregunta operativa. No conozco otra metodología que no sea la autobox que realice eficientemente este tipo de detección de cambio de nivel antes de seleccionar un modelo de serie temporal
pronosticador el
3

Puede ver los altibajos como una secuencia aleatoria, que se genera mediante algún proceso aleatorio. Por ejemplo, supongamos que se trata de una serie estacionaria , donde es una distribución de probabilidad como Gauss, Poisson o cualquier otra cosa. Esta es una serie estacionaria. Ahora, puede crear una nueva variable tal que y , estos son sus altibajos. Esta nueva secuencia formará su propia secuencia aleatoria con propiedades interesantes, ver, por ejemplo, V Khil, Elena. "Propiedades de Markov de espacios entre máximos locales en una secuencia de variables aleatorias independientes". (2013)x1,x2,x3,...,xnf(x)f(x)ytyt=1:xt<xt+1yt=0:xtxt+1

Por ejemplo, mire ACF y PACF de su serie. No hay nada aquí. Esto no parece el modelo ARIMA. Parece una secuencia no correlacionada de . xtingrese la descripción de la imagen aquí

Esto significa que podríamos intentar aplicar resultados conocidos para , por ejemplo, se sabe que la distancia promedio entre dos pares (arriba-abajo) (o vueltas en U como algunos los llaman) es 3. En su conjunto de datos, el primer pico (arriba- abajo) es 1957 y el último es 2012, con 16 picos en total. Entonces, la distancia promedio entre picos es 15/55 = 3.67. Sabemos que , y con 15 observaciones . Entonces la distancia media entre picos está dentro de de la media teórica.ytσ=1.108σ15=σ/15=0.291.2σn

ACTUALIZACIÓN: en ciclos

El gráfico en la pregunta de OP parece sugerir que hay algún tipo de ciclo de ejecución prolongado. Hay varios problemas con esto.

  1. Si genera una secuencia aleatoria, a veces puede aparecer algo como un ciclo de forma aleatoria. Entonces, con 58 puntos de datos que son puramente datos de observación, es imposible declarar un ciclo sin algún tipo de teoría económica detrás de él. Nadie lo tomará en serio sin el razonamiento económico. Para eso definitivamente necesitas variables exógenas, me temo.
  2. Echa un vistazo a este maravilloso artículo: La suma de causas aleatorias como fuente de procesos cíclicos , Eugen Slutzky, Econometrica, vol. 5, N ° 2 (abril de 1937), págs. 105-146. Básicamente, a veces los ciclos son causados ​​por algún tipo de proceso de MA.
  3. Esto podría ser una ilusión. Utilizo este truco con bastante frecuencia en las presentaciones. Muestro los datos reales, luego dibujo líneas, círculos o flechas para jugar con los cerebros de mi audiencia :) Las líneas adicionales engañan al cerebro para que vea tendencias que pueden no estar allí, o para que se vean mucho más fuertes de lo que realmente son.
Aksakal
fuente
En 45 meses en este foro, rara vez he comentado sobre una respuesta, PERO en este caso su respuesta me deja con el ceño fruncido y sin palabras. ¿Puede explicar su modelo, sus pruebas de importancia, las pruebas con respecto a sus supuestos, un pronóstico con intervalos de confianza y una conclusión lógica?
IrishStat el
1
Este no es mi modelo. La idea es simple: si tiene una secuencia no correlacionada de , puede crear otra secuencia a partir de ella, como , que tendrá 1 si subió en comparación con el valor anterior y 0 si bajó. En este caso, el par [1,0] en indicará un máximo local (pico) en , como en los años 1957 y 1959. El resto es fácil, puede obtener todo tipo de estadísticas para la secuencia . Pensé en esto porque OP tiene "arriba / abajo" en el título de la pregunta. La secuencia tiene muchas características markovian interesantes. xtytxtytxtytyt
Aksakal
En mi humilde opinión, su subida / bajada no fue período a período, sino en un horizonte más largo. Gracias por tu explicación. No hay nada en sus datos que sugiera una secuencia ascendente / descendente que sea predecible.
IrishStat el
No son predecibles en este modelo. Son aleatorios pero correlacionados
Aksakal
Estoy totalmente en desacuerdo porque no están correlacionados ... dentro de cada uno de los tres regímenes: 1956-1972 ... 1973-1991 ... 1992-2013 ... dado que usted ajusta / modifica los tres puntos / lecturas inusuales.
IrishStat el
2

Aparte 1: Una cosa que vemos es la aparición de una larga tendencia cíclica en los datos. Esto no debería afectar tanto el análisis anual *, por lo que para este análisis muy básico lo ignoraré y trataré los datos como si fueran homogéneos, aparte del efecto que le interesa.

* (tenderá a reducir el número de movimientos en dirección opuesta de lo que cabría esperar con la homogeneidad, por lo que tenderá a disminuir un poco la potencia de esta prueba. Podríamos intentar cuantificar ese impacto, pero no creo existe una gran necesidad a menos que parezca que sea lo suficientemente grande como para marcar la diferencia; si ya es significativo, ajustar por algo que haría un poco más pequeño el valor p sería un desperdicio de esfuerzo).

Aparte 2: Como se expresó, su pregunta parece involucrar una alternativa de una cola. Trabajaré sobre la base de que esto es lo que quieres.

Comencemos con un análisis simple dirigido directamente a su pregunta básica, que parece estar en la línea de "¿es más probable que un aumento sea seguido por una disminución?"

Sin embargo, no es tan simple como parece. En una serie estable, con datos puramente aleatorios, es más probable que un aumento sea ​​seguido por una disminución. Tenga en cuenta que la hipótesis que estamos considerando implica tres observaciones, que se pueden ordenar de seis maneras posibles:

ingrese la descripción de la imagen aquí

De esas seis formas, 4 implican un cambio de dirección. Por lo tanto, una serie puramente aleatoria (independientemente de la distribución) debería ver un giro en la dirección 2/3 del tiempo.

[Esto está estrechamente relacionado con una prueba de ejecución ascendente y descendente, donde le interesa saber si hay demasiadas ejecuciones para que sea aleatorio. Podrías usar esa prueba en su lugar.]

Supongo que su interés real es si es más alto que el 2/3 al azar en lugar de si es más de 1/2 como parecía estar preguntando.

H0: la serie es "aleatoria"

H1: es más probable que un cambio hacia arriba o hacia abajo sea ​​seguido por un cambio en la dirección opuesta de lo que verías con una serie aleatoria

Estadística de prueba: proporción de cambios seguidos por cambios en la dirección opuesta.

Debido a que nuestros triples se superponen, creo que tenemos cierta dependencia entre los triples, por lo que no podemos tratar esto como binomial (podríamos si dividimos los datos en triples no superpuestos; eso funcionaría bien).

Teniendo en cuenta esa dependencia, aún podríamos calcular la distribución del estadístico de prueba, pero no necesitamos hacerlo en este caso, porque la proporción observada de dirección invertida se triplica justo por debajo del número esperado de 2/3 para una serie aleatoria , y solo estamos interesados ​​en más reversiones que eso.

Por lo tanto, no necesitamos calcular más: no hay evidencia de una tendencia a revertir (hacia arriba o hacia abajo) más de lo que obtendría con una serie aleatoria.

[Realmente dudo que el ciclo leve descuidado tenga suficiente impacto para mover la proporción esperada hacia abajo en cualquier lugar lo suficientemente cerca como para que esto haga una diferencia sustancial].

Glen_b -Reinstate a Monica
fuente
gracias -muy interesante Una pregunta rápida sobre la prueba de carreras. ¿Te refieres a la típica prueba de corrida para probar la aleatoriedad? A partir de los datos anteriores, puedo producir la siguiente ejecución: 1 0 1 0 1 0 1 1 1 0 1 1 0 0 1 1 1 1 0 1 1 0 0 0 1 1 0 1 1 0 0 1 0 1 0 0 1 1 0 1 0 0 0 1 0 1 0 1 0 0 1 1 0 1 1 1 0con un 1 que indica que la serie sube y un 0 que baja. Usando runs.testel tseriespaquete R, esto da una estadística de prueba de 1.81 y una p de 0.07. Si bien no estoy demasiado preocupado por estos datos de ejemplo, me pregunto si este es el tipo de análisis al que se refería.
Jalapic
No, creo que se trata de carreras de un tipo (como para agrupar signos, por ejemplo), no de carreras de arriba a abajo. Sería adecuado para un tipo de hipótesis algo diferente a este.
Glen_b -Reinstate Monica
@Glen_b, las seis formas posibles de subir y bajar y cosas así están cubiertas en la literatura que se puede rastrear desde el documento que publiqué en mi respuesta. Particularmente, a partir de su imagen, puede ver fácilmente que hay dos formas de tener una secuencia ascendente-descendente de seis combinaciones. Esto significa que P = 1/3 para encontrar un pico local en cualquier parte de la secuencia, es decir, la distancia promedio entre picos es exactamente 3.
Aksakal
@ Aksakal Que están conectados no es una sorpresa, ya que están considerando cosas estrechamente relacionadas (solo puedo votar tu respuesta una vez, lo siento). Simplemente decidí tratar de responder la interpretación más literal de la pregunta de la manera más elemental posible, porque pensé que podría ser esclarecedor mostrar que algunos análisis bastante básicos que requieren pocas matemáticas más allá del conteo podrían dar algunos resultados útiles.
Glen_b: reinstala a Monica el
jalapic: vea esta página que trata sobre las ejecuciones ascendentes y descendentes y una versión particular de las ejecuciones de un tipo. Proporciona una aproximación normal útil para carreras de arriba a abajo y también debería ayudar a aclarar la distinción.
Glen_b: reinstala a Monica el
1

Podría usar un paquete llamado cambio estructural que verifica las interrupciones o los cambios de nivel en los datos. He tenido cierto éxito en la detección automática de cambios de nivel para series de tiempo no estacionales.

Convertí su "valor" en una serie de datos de tiempo. y usó el siguiente código para verificar cambios de nivel o cambiar puntos o puntos de ruptura. El paquete también tiene características agradables, como la prueba de chow para hacer la prueba de chow para detectar roturas estructurales:

require(strucchange)
value.ts <- ts(data[,2],frequency = 1, start = (1956))
bp.value <- breakpoints(value.ts ~ 1)
summary(bp.value)

El siguiente es el resumen de la función breakpont:

Breakpoints at observation number:

m = 1           36      
m = 2     16    31      
m = 3     16    36    46
m = 4     16 24 36    46
m = 5   8 16 24 36    46
m = 6   8 16 24 33 41 49

Corresponding to breakdates:

m = 1                  1991          
m = 2        1971      1986          
m = 3        1971      1991      2001
m = 4        1971 1979 1991      2001
m = 5   1963 1971 1979 1991      2001
m = 6   1963 1971 1979 1988 1996 2004

Fit:

m   0           1           2           3           4           5           6          
RSS   0.8599316   0.7865981   0.5843395   0.5742085   0.5578739   0.5559645   0.5772778
BIC -71.5402819 -68.5892480 -77.7080112 -70.6015129 -64.1544916 -56.2324540 -45.9296608

Como puede ver, la función identificó posibles interrupciones en sus datos y seleccionó dos interrupciones estructurales en 1971 y 1986 como se muestra en el gráfico a continuación según el criterio BIC. La función también proporcionó otros puntos de corte alternativos como se enumeran en la salida anterior.

ingrese la descripción de la imagen aquí

Espero que esto sea útil

pronosticador
fuente
El problema con el enfoque que está utilizando es que tácitamente no supone Pulsos y (probablemente) ninguna estructura ARIMA. Mis descansos son "en base o alrededor" de 1972 y 1992 ... los suyos son 1971 y 1986, ignorando la anomalía de 1989. En resumen, los análisis no son tan diferentes, ya que el mío es robusto a las anomalías únicas.
IrishStat
@IrishStat tienes razón. De hecho, Autobox identifica correcciones para pulsos y luego identifica correctamente el cambio de nivel. Un problema que tuve con el paquete de cambio estructural en R es que funciona razonablemente bien para series de tiempo no estacionales, tiene un uso muy limitado o no tiene uso en las series de temporada, lo que estoy seguro de que Autobox maneja muy bien.
pronosticador