Suponha que eu tenha as seguintes séries temporais não periódicas. Obviamente, a tendência está diminuindo e eu gostaria de provar isso por algum teste (com valor-p ). Não consigo usar a regressão linear clássica devido à forte correlação temporal (serial) entre os valores.
library(forecast)
my.ts <- ts(c(10,11,11.5,10,10.1,9,11,10,8,9,9,
6,5,5,4,3,3,2,1,2,4,4,2,1,1,0.5,1),
start = 1, end = 27,frequency = 1)
plot(my.ts, col = "black", type = "p",
pch = 20, cex = 1.2, ylim = c(0,13))
# line of moving averages
lines(ma(my.ts,3),col="red", lty = 2, lwd = 2)
Quais são as minhas opções?
r
time-series
Ladislav Naďo
fonte
fonte
frequency=1
) é pouco relevante aqui. Uma questão mais relevante pode ser se você deseja especificar um formulário funcional para o seu modelo.Respostas:
Como você disse, a tendência nos dados de exemplo é óbvia. Se você deseja justificar esse fato apenas pelo teste de hipóteses, além de usar regressão linear (a escolha paramétrica óbvia), pode usar o teste não paramétrico de Mann-Kendall para tendência monotônica. O teste é usado para
além disso, como observado por Gilbert (1987), o teste
A estatística do teste é a diferença entre as diferenças negativas e positivas entre todos os pares possíveis, ou seja,xj−xi n(n−1)/2
onde é uma função de sinal . pode ser usado para calcular estatísticas semelhantes à correlação, pois variam de a , onde o sinal sugere tendência negativa ou positiva e o valor de é proporcional à inclinação da tendência.sgn(⋅) S τ −1 +1 τ
Finalmente, você pode calcular os valores de . Para amostras de tamanho você pode usar tabelas de valores pré-computados para diferentes valores de e diferentes tamanhos de amostra (ver Gilbert, 1987). Com amostras maiores, primeiro você precisa calcular a variação dep n≤10 p S S
e depois calcular a estatística de testeZMK
o valor de é comparado aos valores normais padrãoZMK
Em esta discussão pode encontrar código R implementação deste teste.
Como a estatística é comparada com todos os pares possíveis de observações, em vez de usar a aproximação normal para o valor você pode usar o teste de permutação que é óbvio para este caso. Primeiro, você calcula a estatística dos seus dados e, em seguida, embaralha aleatoriamente seus dados várias vezes e calcula-os para cada uma das amostras. é simplesmente a proporção de casos em que para tendência ascendente ou para tendência descendente.Dados S p S p S ≥ S permutação S dados ≤ S permutaçãoS p S p Sdata≥Spermutation Sdata≤Spermutation
Gilbert, RO (1987). Métodos Estatísticos para Monitoramento da Poluição Ambiental. Wiley, NY.
Önöz, B. & Bayazit, M. (2003). O poder dos testes estatísticos para detecção de tendências. Revista Turca de Engenharia e Ciências Ambientais, 27 (4), 247-251.
fonte
O problema que você tem "Não consigo usar a regressão linear clássica devido à forte correlação temporal (serial) entre os valores". é na realidade uma oportunidade. Peguei seus 27 valores e usei a AUTOBOX um software (que eu ajudei a desenvolver) que pode (opcionalmente) determinar automaticamente um possível modelo. Aqui está o gráfico real / de ajuste e previsão . A ACF dos resíduos está aqui com plotagem residual aqui . O modelo está aqui e aqui e aqui. Dois coeficientes descrevem adequadamente os dados com estimativa de "tendência", também conhecida como "desvio", ou seja, diferencial de período para período de -.596. Observe que esse é um tipo de tendência em que seu modelo usou os números de contagem 1,2, ... 27 como uma variável preditora. Se seus dados sugerissem esse tipo de tendência, o software teria considerado mais aplicável. Vou tentar encontrar um post anterior que detalhava / contrastava completamente esses dois tipos de tendências. Aqui Identificando um modelo de tendência estocástico e Detectando tendências iniciais ou outliers
fonte
Você pode usar o coeficiente de correlação de classificação de Spearman para determinar o grau em que seus dados são monotônicos. Retorna valores positivos para dados crescentes monotônicos e valores negativos para dados decrescentes monotônicos (entre -1 e +1). Seguindo o link acima, há também uma seção que trata de testes de significância, embora eu esteja certo de que a maioria dos pacotes de software terá um valor p feito para você ao calcular os coeficientes de correlação (por exemplo, no Matlab:;
[RHO,PVAL] = corr(...)
no Rcor.test(x,...)
:)fonte
Você pode usar o OLS porque não há autocorrelação serial (pelo menos na amostra que você forneceu); observe a estatística do teste de Durbin-Watson de 1,966 (± 2).
Portanto, a estimativa do coeficiente significativamente negativo para x1 é tudo o que você precisa dizer algo como
ou
Isso pressupõe que a metodologia de contagem das espécies tenha boa cobertura e seja consistente ao longo dos anos em sua amostra.
Isso foi produzido com este código Python (desculpe; não tenha o R à mão):
fonte
Conhecer a fonte de dados seria muito útil e também as informações se os valores de
my.ts
pudessem ficar negativos ou não.No entanto, observando rapidamente o enredo, em vez de observar uma tendência linear constante , sugiro que a série temporal não seja estacionária, portanto integrada . Como exemplo, os preços das ações também são integrados, mas os retornos das ações não são mais (eles flutuam perto de 0).
Essa hipótese também pode ser testada usando o Teste Aumentado de Dickey Fuller:
Dado que o valor-p não é menor que 0,05, não há evidências de que o processo seja estacionário.
Para obter os dados estacionários, é necessário diferenciá-los:
Agora, os dados não mostram mais nenhuma tendência e a única coisa que você encontrará é um termo autoregressivo da ordem 2 (usando
acf(diff.ts)
).fonte