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:
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 analysis
ou Fourier analysis
pode 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 R
formato:
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"))
fonte
Respostas:
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
e aqui apenas ACF:
No 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 é
e aqui
com as estatísticas do modelo aqui:
O Real / Ajuste e Previsão estão aqui com o gráfico residual aqui sugerindo a suficiência do modelo . Isso é confirmado pela acf dos resíduos . Finalmente, o ajuste e a previsão resumem os resultados .
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 ... com ACTUAL / FIT e PREVISÃO . As previsões parecem assustadoramente semelhantes ... o coeficiente MA cancela efetivamente o operador diferencial.
fonte
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.
fonte
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:
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.
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.]
fonte
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 0
com 1 indicando a série subindo e 0 descendo. Usandoruns.test
dotseries
pacote 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?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:
A seguir, é apresentado o resumo da função breakpont:
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.
Espero que isso seja útil
fonte