data(color, package = "TSA")
color
Time Series:
Start = 1
End = 35
Frequency = 1
[1] 67 63 76 66 69 71 72 71 72 72 83 87 76 79 74 81 76 77 68 68 74 68 69 75 80
[26] 81 86 86 79 78 77 77 80 76 67
Utilização de série temporal, onde será aplicado algumas coisas que foram vistas na disciplina.
color
, que se encontra no pacote TSA
Carregando a série e visualizando
A descrição da série: Color property from 35 consecutive batches in an industrial process.
data(color, package = "TSA")
color
Time Series:
Start = 1
End = 35
Frequency = 1
[1] 67 63 76 66 69 71 72 71 72 72 83 87 76 79 74 81 76 77 68 68 74 68 69 75 80
[26] 81 86 86 79 78 77 77 80 76 67
De acordo com a saída acima, é observado que temos uma série anual, com um total de 35 observações.
::skim(color) skimr
Name | color |
Number of rows | 35 |
Number of columns | 1 |
_______________________ | |
Column type frequency: | |
ts | 1 |
________________________ | |
Group variables | None |
Variable type: ts
skim_variable | n_missing | complete_rate | start | end | frequency | deltat | mean | sd | min | max | median | line_graph |
---|---|---|---|---|---|---|---|---|---|---|---|---|
x | 0 | 1 | 1 | 35 | 1 | 1 | 74.89 | 6.09 | 63 | 87 | 76 | ⡠⡠⠌⠒⡠⡐⠑⢂ |
Visualização gráfica da série temporal
::autoplot(color) +
forecast::xlab("Ano") +
ggplot2::ylab("valores")+
ggplot2::labs(title = "Série Temporal do conjunto de dados color da biblioteca TSA")+
ggplot2::theme_bw() ggplot2
Registered S3 method overwritten by 'quantmod':
method from
as.zoo.data.frame zoo
Observação:
De maneira rápida observando apenas o plot da série vemos que possivelmente não existe uma tendência na série, onde será comprovado através de um teste.
Aqui, vamos testar algumas características que estão presentes em algumas séries temporais, tais como: estacionariedade, tendência, sazonalidade.
As hipóteses são:
H_0: A \hspace{0.1cm} série \hspace{0.1cm} é \hspace{0.1cm} não \hspace{0.1cm} estacionária H_1: A \hspace{0.1cm} série \hspace{0.1cm} é \hspace{0.1cm} estacionária
::adf.test(color) tseries
Augmented Dickey-Fuller Test
data: color
Dickey-Fuller = -1.9961, Lag order = 3, p-value = 0.5746
alternative hypothesis: stationary
Resposta:
Não rejeitamos H_0, ou seja, com 95% de confiança a série, segundo o teste de Dickey-Fuller é não estacionária. O resultado do p-valor foi de 0.5746.
Como pelo gráfico, é observado que possivelmente tem se uma tendência crescente, esse será o argumento a ser testado.
As hipóteses são as seguintes:
H_0: A \hspace{0.1cm} série \hspace{0.1cm} não \hspace{0.1cm} tem \hspace{0.1cm} tendência \hspace{0.1cm} crescente H_1: A \hspace{0.1cm} série \hspace{0.1cm} tem \hspace{0.1cm} tendência \hspace{0.1cm} crescente
::cox.stuart.test(color, alternative = "right.sided") randtests
Cox Stuart test
data: color
statistic = 10, n = 16, p-value = 0.2272
alternative hypothesis: increasing trend
Resposta:
Não rejeitamos H_0, ou seja, com 95% de confiança a série não tem tendência crescente. O resultado do p-valor foi de 0.2272.
Devido a série ser anual, não precisa testar a sazonalidade.
::Acf(color, main = "Gráfico de correlação amostral", xlab = "Defasagem", ylab = "Autocorrelações") forecast
É observado um decaimento exponencial, sugerindo assim que o processo seja do tipo AR
::Pacf(color, main = "Gráfico de correlação Parcial", xlab = "Defasagem", ylab = "Autocorrelações") forecast
auto.arima
do pacote forecast
.::auto.arima(color) forecast
Series: color
ARIMA(1,0,0) with non-zero mean
Coefficients:
ar1 mean
0.5705 74.3293
s.e. 0.1435 1.9151
sigma^2 = 26.34: log likelihood = -106.07
AIC=218.15 AICc=218.92 BIC=222.81
De acordo com a saída do teste, vemos que ele identifica que a série é um AR(1), onde \hat{\phi} = 0.5705, é observado também que no teste de Estacionariedade, ele não detectou estacionariedade, pois a componente d, no ajuste foi igual a zero, entendendo assim que a série já é estacionária.
<- arima(color, order = c(1,0,0))
fit fit
Call:
arima(x = color, order = c(1, 0, 0))
Coefficients:
ar1 intercept
0.5705 74.3293
s.e. 0.1435 1.9151
sigma^2 estimated as 24.83: log likelihood = -106.07, aic = 218.15
O modelo que foi ajustado, observamos que as estimativas foram as mesma quando foi utilizado a função auto.arima
, sendo assim vamos verificar se o modelo foi bem ajustado.
::coeftest(fit) lmtest
z test of coefficients:
Estimate Std. Error z value Pr(>|z|)
ar1 0.57055 0.14346 3.9771 6.975e-05 ***
intercept 74.32928 1.91509 38.8124 < 2.2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Resposta:
De acordo com o teste, rejeitamos a hipótese nula de que \beta_i = 0, ou seja, tanto o valor de \phi, quanto o valor da constante, são significativos para o modelo ajustado, obtivemos como resultado os respectivos p-valor: 6.97^{-5} e < 2.2 \times 10^{-16}.
Sendo assim, concluímos que o modelo foi bem ajustado.
<- residuals(fit)
residuos <- c((residuos - mean(residuos))/sd(residuos)) residuos_padronizados
checkresiduals
, da biblioteca forecast
.::checkresiduals(residuos_padronizados) forecast
Ljung-Box test
data: Residuals
Q* = 1.6712, df = 7, p-value = 0.9758
Model df: 0. Total lags used: 7
Resposta:
De acordo com a saída, do teste de Ljung-Box, e com a análise gráfica residual é observado que os resíduos são não correlacionados, pois a hipótese nula de que os resíduos são não correlacionados não foi rejeitada.
::ggplot(color, ggplot2::aes(x=as.vector(1:35), y = residuos_padronizados))+
ggplot2::geom_point(size = 4, color = "#e7ad52") +
ggplot2::geom_abline(intercept = -2.5, slope = 0,color = "#001132")+
ggplot2::geom_abline(intercept = 2.5, slope = 0,color = "#001132") +
ggplot2::ylim(-3,3) +
ggplot2::xlab("Observações") +
ggplot2::ylab("Resíduos Padronizados")+
ggplot2::labs(title = "Gráfico dos resídos padronizados") ggplot2
Teste de Bera-Jarque
H_0: Os \hspace{0.1cm} resíduos \hspace{0.1cm} possuem \hspace{0.1cm} distribuição \hspace{0.1cm} normal
H_1: Os \hspace{0.1cm} resíduos \hspace{0.1cm} não \hspace{0.1cm} possuem \hspace{0.1cm} distribuição \hspace{0.1cm} normal
::jarque.bera.test(residuos_padronizados) tseries
Jarque Bera Test
data: residuos_padronizados
X-squared = 0.80388, df = 2, p-value = 0.669
Resposta:
Não rejeitamos H_0, ou seja, com 95% de confiança os resíduos estão distribuidos normalmente, e o resultado do p-valor foi de 0.669.
Teste de Lillie-Fors
H_0: Os \hspace{0.1cm} resíduos \hspace{0.1cm} possuem \hspace{0.1cm} distribuição \hspace{0.1cm} normal
H_1: Os \hspace{0.1cm} resíduos \hspace{0.1cm} não \hspace{0.1cm} possuem \hspace{0.1cm} distribuição \hspace{0.1cm} normal
::lillie.test(residuos_padronizados) nortest
Lilliefors (Kolmogorov-Smirnov) normality test
data: residuos_padronizados
D = 0.077987, p-value = 0.8518
Resposta:
Não rejeitamos H_0, ou seja, com 95% de confiança os resíduos estão distribuidos normalmente, e o resultado do p-valor foi de 0.8518.
Teste de Shapiro-Wilk
H_0: Os \hspace{0.1cm} resíduos \hspace{0.1cm} possuem \hspace{0.1cm} distribuição \hspace{0.1cm} normal
H_1: Os \hspace{0.1cm} resíduos \hspace{0.1cm} não \hspace{0.1cm} possuem \hspace{0.1cm} distribuição \hspace{0.1cm} normal
shapiro.test(residuos_padronizados)
Shapiro-Wilk normality test
data: residuos_padronizados
W = 0.97536, p-value = 0.6057
Resposta:
Não rejeitamos H_0, ou seja, com 95% de confiança os resíduos estão distribuidos normalmente, e o resultado do p-valor foi de 0.6057.
As hipóteses são:
H_0: Os \hspace{0.1cm} resíduos \hspace{0.1cm} são \hspace{0.1cm} não \hspace{0.1cm} correlacionados
H_1: Os \hspace{0.1cm} resíduos \hspace{0.1cm} são \hspace{0.1cm} correlacionados
Box.test(residuos_padronizados, type = "Ljung-Box")
Box-Ljung test
data: residuos_padronizados
X-squared = 0.10056, df = 1, p-value = 0.7512
Resposta:
Não rejeitamos H_0, ou seja, com confiança de 95% os resíduos são não correlacionados. O resultado do p-valor do teste foi de 0.7512.