Analisando padrões para cima / para baixo em dados curtos de séries temporais

8

Como não trabalhei com muita frequência com dados de séries temporais, estou procurando alguns indicadores sobre a melhor maneira de proceder com essa pergunta em particular.

Digamos que eu tenho os seguintes dados - representados graficamente abaixo:

insira a descrição da imagem aqui

Aqui há um ano no eixo x. O eixo y é uma medida de 'desigualdade', por exemplo, poderia ser desigualdade de renda em um país.

Para esta pergunta, estou interessado em perguntar se há uma natureza up / down nos dados ano após ano (por falta de uma descrição melhor). Em essência, eu gostaria de perguntar se, se a desigualdade aumentou no ano passado em relação ao ano anterior, é provável que agora volte a diminuir? O tamanho dos altos / baixos também pode ser importante.

Eu estou pensando que algo como wavelet analysisou Fourier analysispode ajudar, embora eu não os tenha usado antes e acredito que um tamanho de amostra como esse seja muito pequeno.

Estaria interessado em quaisquer idéias / sugestões para eu acompanhar.

EDITAR:

Estes são os dados 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

Aqui estão eles no 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
fonte
Uma ideia muito simples: que tal tomar a série temporal das diferenças e analisar o (s) coeficiente (s) de correlação automática (s)?
Psarka
Os dados são agora revelados como desigualdade medida usando a assimetria de Lorenz. Veja o comentário do OP abaixo da resposta de @IrishStat. Mas qual é a natureza da curva mais suave? Ser discreto com o que você está mostrando geralmente apenas torna a pergunta mais enigmática, e não mais útil em geral.
Nick Cox
A análise de Fourier jalapic em uma pequena amostra observacional é quase sempre inútil. Você pode escolher um ciclo com 25 anos de comprimento de onda, mas será muito fraco. Você mal tem um ciclo completo na melhor das hipóteses. O Fourier foi projetado para dados físicos nos quais você tem séries repetíveis ou pelo menos longas.
Aksakal
Você percebe que a natureza que você descreve se encaixa bem com a idéia de regressão à média. Ou seja, você terá esse comportamento inativo mesmo que sua série não tenha memória no sentido arima.
Korone

Respostas:

6

Se a série não estiver correlacionada, tomar diferenças desnecessariamente injeta correlação automática. Mesmo que a série seja autocorrelacionada, a diferença injustificada é inadequada. Ideias simples e abordagens simples geralmente têm efeitos colaterais indesejados. O processo de identificação do modelo (ARIMA) começa com a série original e pode resultar em diferenciação, MAS nunca deve começar com diferenciação injustificada, a menos que haja uma justificativa teórica. Se desejar, você pode postar sua série temporal curta e eu a usarei para explicar como identificar um modelo para esta série.

Após o recebimento dos dados:

A ACF dos seus dados não indica inicialmente (ou finalmente) nenhum processo ARIMA aqui, ACF e PACF
imagem
e aqui apenas ACF:
imagemNo entanto, parece haver duas mudanças de nível nos dados ... uma em 1972 e a outra em 1992 .. eles parecem estar quase cancelando mudanças de nível. Um modelo útil também pode incluir a incorporação de três valores incomuns nos períodos 1989, 1959 e 1983. A equação é imagem
e aqui
imagem
com as estatísticas do modelo aqui:
imagem
O Real / Ajuste e Previsão estão aqui imagemcom o gráfico residual aqui sugerindo a suficiência do modelo imagem. Isso é confirmado pela acf dos resíduos imagem. Finalmente, o ajuste e a previsão resumem os resultados imagem.
Em resumo, a série (provavelmente uma razão) não possui memória auto-regressiva significativa, mas possui alguma estrutura determinística evidente (estatisticamente significativa). Todos os modelos estão errados, mas alguns são úteis (GEP Box).

Após algumas discussões .. Se alguém modelasse as diferenças, obteria o seguinte modelo ... insira a descrição da imagem aquicom ACTUAL / FIT e PREVISÃO insira a descrição da imagem aqui. As previsões parecem assustadoramente semelhantes ... o coeficiente MA cancela efetivamente o operador diferencial.

IrishStat
fonte
Muito obrigado pelas sugestões. Eu ficaria muito interessado em ouvir mais - adicionei os dados brutos à pergunta.
jalapic
2
@IrishStat sugeriu um modelo com 6 parâmetros. Todo o conjunto de dados é de 58 observações. Isso faz 10 observações por parâmetro. Mesmo que esse não fosse um dado econômico, eu diria que uma amostra é muito pequena para suportar o modelo de 6 parâmetros. Como esse é um modelo econômico, direi que o modelo de série temporal pura não vai funcionar. Você precisa de variáveis ​​exógenas (PIB?) Ou algum tipo de modelo estrutural.
Aksakal
2
O modelo pode ser facilmente simplificado para ignorar os três pontos aberrantes (pulsos). Isso reduziria a 3 coeficientes .. um indicador de mudança de nível constante e dois ... não poderia ser mais simples! e ainda forneceria uma representação razoável ... duas mudanças de nível. Concordo que um modelo de série temporal puro não vai funcionar. O modelo que apresentei é simplesmente um modelo de regressão comum com dois indicadores de mudança de nível ... não há memória e, portanto, não está falando classicamente um modelo de série temporal, pois não há estrutura ARIMA no modelo, pois é injustificado.
precisa saber é o seguinte
Não se pode chorar "preciso de mais variáveis", embora minha experiência me diga que é assim. Este problema é o que é! Resolva isso!
IrishStat
@aksakal, o que o modelo irishstat mostra é que ele tem 5 variáveis; se a parcimônia é preocupante, você pode simplesmente desligar os pulsos e manter as mudanças de nível que abordariam a questão da operação. Não conheço nenhum outro methedology além autobox que eficientemente faz este tipo de detecção de mudança de nível antes de selecionar um modelo de séries temporais
meteorologista
3

x1,x2,x3,...,xnf(x)f(x)ytyt=1:xt<xt+1yt=0:xtxt+1

xtinsira a descrição da imagem aqui

ytσ=1.108σ15=σ/15=0.291.2σn

UPDATE: em ciclos

O gráfico na pergunta do OP parece sugerir que existe algum tipo de ciclo de execução longo. Existem vários problemas com isso.

  1. Se você gerar uma sequência aleatória, às vezes algo como um ciclo pode aparecer aleatoriamente. Portanto, com 58 pontos de dados puramente observacionais, é impossível declarar um ciclo sem algum tipo de teoria econômica por trás dele. Ninguém vai levar isso a sério sem o raciocínio econômico. Por que você definitivamente precisa de variáveis ​​exógenas, receio.
  2. Confira este artigo maravilhoso: A soma de causas aleatórias como fonte de processos cíclicos , Eugen Slutzky, Econometrica, vol. 5, n ° 2 (abril de 1937), pp. 105-146. Basicamente, às vezes os ciclos são causados ​​por algum tipo de processo de MA.
  3. Isso pode ser uma ilusão. Eu uso esse truque frequentemente em apresentações. Mostro os dados reais e, em seguida, traço linhas, círculos ou setas para mexer com o cérebro da minha audiência :) As linhas extras induzem o cérebro a ver tendências que podem não estar lá, ou a torná-las muito mais fortes do que realmente são.
Aksakal
fonte
Em 45 meses neste fórum, raramente comentei sobre uma resposta, mas, neste caso, sua resposta me deixa com uma sobrancelha franzida e sem palavras. Você pode, por favor, explicar seu modelo, seus testes de significância, testes sobre suas suposições, uma previsão com intervalos de confiança e uma conclusão lógica.
IrishStat
1
xtytxtytxtytyt
IMHO seu up / down não foi período a período, mas em um horizonte mais longo. Obrigado pela sua explicação. Nos dados dele, não há nada que sugira uma sequência up / down previsível.
IrishStat
Eles não são previsíveis neste modelo. Eles são aleatórios, mas correlacionados
Aksakal
Eu discordo totalmente que eles não estão correlacionados ... em cada um dos três regimes: 1956-1972 .... 1973-1991 ... 1992-2013 ... dado que você ajusta / modifica os três pontos / leituras incomuns.
IrishStat
2

Lado 1: Uma coisa que vemos é o surgimento de uma longa tendência cíclica nos dados. Isso não deve afetar tanto a análise ano a ano * - portanto, para esta análise muito básica, ignorarei isso e tratarei os dados como se fossem homogêneos, além do efeito no qual você está interessado.

* (ele tenderá a reduzir o número de movimentos de direção oposta ao que você esperaria com homogeneidade - portanto, tenderá a diminuir um pouco a potência desse teste. Poderíamos tentar quantificar esse impacto, mas acho que não. há uma forte necessidade, a menos que pareça ser grande o suficiente para fazer a diferença - se já for significativo, ajustar-se a algo que tornaria o valor p um pouco menor seria um desperdício de esforço.)

Lado 2: Como expresso, sua pergunta parece envolver uma alternativa unicaudal. Vou trabalhar com base em que é isso que você deseja.

Vamos começar com uma análise simples direcionada diretamente à sua pergunta básica, que parece estar na linha de "é mais provável que um aumento seja seguido por uma diminuição?"

No entanto, não é tão simples como pode parecer à primeira vista. Em uma série estável, com dados puramente aleatórios, é mais provável que um aumento seja seguido por uma diminuição. Observe que a hipótese que estamos considerando envolve três observações, que podem ser ordenadas de seis maneiras possíveis:

insira a descrição da imagem aqui

Dessas seis maneiras, 4 envolvem uma mudança de direção. Portanto, uma série puramente aleatória (independentemente da distribuição) deve ver um giro na direção 2/3 do tempo.

[Isso está intimamente relacionado a um teste de corridas para cima e para baixo, onde você está interessado em saber se há muitas corridas para que sejam aleatórias. Você poderia usar esse teste.]

Presumo que seu interesse real seja se é maior que o 2/3 aleatório, e não se é mais do que 1/2, como você parecia estar perguntando.

H0:

H1:

Estatística do teste: proporção de turnos seguidos por turnos na direção oposta.

Como nossos triplos se sobrepõem, acredito que temos alguma dependência entre os triplos, portanto não podemos tratar isso como binomial (poderíamos se dividíssemos os dados em triplos não sobrepostos; isso funcionaria bem).

Mantendo essa dependência em mente, ainda podemos calcular a distribuição da estatística de teste, mas não precisamos, neste caso, porque a proporção observada de triplos invertidos na direção está abaixo do número esperado de 2/3 para uma série aleatória , e estamos interessados ​​apenas em mais reversões do que isso.

Portanto, não precisamos calcular mais - não há nenhuma evidência de tendência a reverter (para cima ou para baixo) mais do que você obteria com uma série aleatória.

[Eu realmente duvido que o ciclo moderado negligenciado tenha impacto suficiente para mover a proporção esperada para baixo em qualquer lugar perto o suficiente para que isso faça uma diferença substancial.]

Glen_b -Reinstate Monica
fonte
obrigado - muito interessante. Uma pergunta rápida sobre o teste de execução. Você está se referindo ao típico teste de execução para testar a aleatoriedade? A partir dos dados acima, eu posso produzir a seguinte execução: 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 0com 1 indicando a série subindo e 0 descendo. Usando runs.testdo tseriespacote R, isso fornece uma estatística de teste de 1,81 e um p de 0,07. Embora eu não esteja muito preocupado com esses dados de exemplo, pergunto-me se esse é o tipo de análise a que você estava se referindo?
jalapic
Não, acredito que seja um tipo único (como, por exemplo, aglomeração de sinais), não corridas para cima e para baixo. Seria adequado para um tipo de hipótese um pouco diferente desse.
Glen_b -Reinstala Monica
@Glen_b, as seis formas possíveis de subida e descida são abordadas na literatura, que pode ser encontrada no artigo que publiquei em minha resposta. Particularmente, a partir da sua foto, você pode ver facilmente que há duas maneiras de ter uma seqüência up-down de seis combinações. Isso significa que P = 1/3 encontra um pico local em qualquer lugar da sequência, ou seja, a distância média entre os picos é exatamente 3. #
Aksakal
@Aksakal O fato de estarem conectados não é surpresa, uma vez que estão considerando coisas intimamente relacionadas (só posso aprovar sua resposta uma vez, desculpe). Eu apenas decidi tentar responder à interpretação mais literal da pergunta da maneira mais elementar possível, porque achei que poderia ser esclarecedor mostrar que alguma análise bastante básica que requer pouca matemática além da contagem poderia dar alguns resultados úteis.
Glen_b -Reinstate Monica
jalapic - veja esta página que discute corridas para cima e para baixo e uma versão específica de corridas únicas . Ele fornece uma aproximação normal útil para corridas para cima e para baixo e também deve ajudar a esclarecer a distinção.
Glen_b -Reinstate Monica
1

Você pode usar um pacote chamado alteração estrutural que verifica se há interrupções ou alterações de nível nos dados. Tive algum sucesso em detectar automaticamente mudanças de nível para séries temporais não sazonais.

Eu converti seu "valor" em dados de séries temporais. e usou o código a seguir para verificar mudanças de nível ou alterar pontos ou pontos de interrupção. O pacote também possui recursos interessantes, como teste de comida para fazer teste de comida para testar quebras estruturais:

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

A seguir, é apresentado o resumo da função 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 você pode ver, a função identificou possíveis quebras em seus dados e selecionou duas quebras estruturais em 1971 e 1986, conforme mostrado no gráfico abaixo com base no critério BIC. A função também forneceu outros pontos de interrupção alternativos, conforme listado na saída acima.

insira a descrição da imagem aqui

Espero que isso seja útil

previsor
fonte
O problema com a abordagem que você está usando é que ela tacitamente não assume pulsos e (provavelmente) nenhuma estrutura ARIMA. Minhas pausas são "aproximadamente" 1972 e 1992 ... as suas são 1971 e 1986, ignorando a anomalia de 1989. Em resumo, as análises não são tão diferentes, pois a mina é robusta a anomalias únicas.
IrishStat
@IrishStat, você está certo. O Autobox realmente identifica correções para pulsos e, em seguida, identifica corretamente para a mudança de nível. Um problema que tive com o pacote de mudanças estruturais no R é que ele funciona razoavelmente bem para séries temporais não sazonais, tem uso muito limitado ou não tem uso em séries temporais sazonais, que eu tenho certeza que a Autobox lida muito bem.
forecaster