Lista séries Temporais No R

Pacotes necessários para realização das atividades

pacman::p_load("TSA","astsa","forecast","timeseries")
## Installing package into 'C:/Users/Denilson/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
## Warning: package 'timeseries' is not available for this version of R
## 
## A version of this package for your version of R might be available elsewhere,
## see the ideas at
## https://cran.r-project.org/doc/manuals/r-patched/R-admin.html#Installing-packages
## Warning: Perhaps you meant 'timeSeries' ?
## Warning: unable to access index for repository http://www.stats.ox.ac.uk/pub/RWin/bin/windows/contrib/4.3:
##   não foi possível abrir a URL 'http://www.stats.ox.ac.uk/pub/RWin/bin/windows/contrib/4.3/PACKAGES'
## Warning: 'BiocManager' not available.  Could not check Bioconductor.
## 
## Please use `install.packages('BiocManager')` and then retry.
## Warning in p_install(package, character.only = TRUE, ...):
## Warning in library(package, lib.loc = lib.loc, character.only = TRUE,
## logical.return = TRUE, : there is no package called 'timeseries'
## Warning in pacman::p_load("TSA", "astsa", "forecast", "timeseries"): Failed to install/load:
## timeseries

Questão 6

O arquivo hare contém os dados da abundâcia da lebre canadense. Faça o gráfico da série de dados, faça o gráfico de dispersão. Interprete os resultados.

data("hare")
tsplot(hare, type="o", col = "darkred", ylab = "lebre", xlab = "Anos")

visualizando O gráfico podemos ver um comportamneto sazonal, o que demonstra, que existe sazonalidade na série temporal, assim, podemos dizer a quantidade de lebres no Canadá varia de acordo com o período do ano.

Questão 7

O arquivo tempdub contém os valores da temperatura da cidade de Dubuque, Iowa, EUA. Faça o gráfico da série de dados, faça o gráfico de dispersão. Há algum padrão diferente nessa série? Interprete os resultados

data("tempdub")
tsplot(tempdub, type="o", col = "darkred", ylab = "Temperatura", xlab = "Anos")

É possível identificar que existe sazonalidade no gráfico, como os dados são referentes a temperaturas, podemos dizer que as temperaturas variam de acordo com as estações do ano.

Questão 8

O arquivo oilfilters contém os valores de vendas mensais para revendedores de um filtro especial de óleo para equipamentos de construção fabricados por John Deere. Faça o gráfico da série de dados. Há alguma razão para evidenciar que as vendas são sazonais?

data("oilfilters")
tsplot(oilfilters, type="o", col = "darkred", ylab = "Vendas", xlab = "Tempo")

Existe sazonalidade nessa série, mesmo não sendo tão fácil de visualisar, ela se refere a venda de filtros de óleo, nota-se que as vendas aumentam perto do início de cada ano.

Questão 9

Simular um processo completamente aleatório de comprimento 50 com valores independentes(use a distribuição normal). Faça o gráfico das séries temporais. Parece aleatório? Repita este exercício várias vezes com uma nova simulação de cada vez.

dados<- rnorm(50, mean = 0, sd = 1)
plot(dados, type = "o", col = "darkred")

Repetindo esse processo algumas vezes pode-se perceber que os gráficos são completamente aleatórios, não é possível indentificar sazonalidade.

Questão 10

Simular um processo completamente aleatório de comprimento 50 com valores independentes (use a distribuição t− student com 5 graus de liberdade). Faça o gráfico das séries temporais. Parece aleatório? Repita este exercício várias vezes com uma nova simulação de cada vez.

dados<- rt(50,5)
plot(dados, type = "o", col = "darkred")

Repetindo o processo com a distribuição T de Student, geramos gráficos também aleatórios, sem identificação de tendências ou sazonalidades.

questão 12

O arquivo hours dispõe dos valores mensais das médias de horas trabalhadas por semana nos EUA no período de Julho de 1982 até Junho 1987.

A-) Interprete o gráfico dos dados.

data("hours")
win.graph(width=4.875, height=2.5, pointsize=8)
tsplot(hours, type="o", col = "darkred",ylab = "Horas trabalhadas", xlab = "Tempo")

Podemos ver uma tendência crescente nesta série, ou seja, as horas trabalhadas aumentaram ao longo dos anos.

B-) Construa o gráfico usando símbolos para os diferentes meses. A sua interpretação difere do item (a)?

Questão 13

O arquivo wages dispõe dos valores mensais das médias dos salários médios por hora (em dólares) para os trabalhadores nos EUA no período de Julho de 1981 até Junho de 1987.

A-) Interprete o gráfico dos dados.

data(wages)
plot(wages, type = "o", col = "darkred", xlab = "Tempo", ylab = "Média dos salário por hora")

Gráfico de tendência crescente, a média dos salários por hora cresceu com o decorrer dos anos.

B-) Use o MMQ para ajustar a tendência da série. Interprete a saída no R. Salve os resíduospadronizados para uma análise futura.

modelo <- lm(wages ~ time(wages))
summary(modelo)
## 
## Call:
## lm(formula = wages ~ time(wages))
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.23828 -0.04981  0.01942  0.05845  0.13136 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -5.490e+02  1.115e+01  -49.24   <2e-16 ***
## time(wages)  2.811e-01  5.618e-03   50.03   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.08257 on 70 degrees of freedom
## Multiple R-squared:  0.9728, Adjusted R-squared:  0.9724 
## F-statistic:  2503 on 1 and 70 DF,  p-value: < 2.2e-16
residuos <- residuals(modelo)

Este modelo nos deu um R2 alto, de 97.24%, e um valor de erro baixo, logo, ele consegue explicar bem a variabilidade dos dados. Há um aumento estimado de 0.2811 na média de salário por hora.

C-) construa e interprete o gráfico da série dos resíduo padronizados do item anterior

plot(residuos, type = "o", col = "darkred", ylab = "Resíduos")

O gráfico de séries do resíduo alterna bastante, oscila muito, diferentemente do gráfico da série dos dados originais.

D-)Use o MMQ para ajustar a tendência quadrática para a série wages. Interprete a saída da regressão. Salve os resíduos padronizados para análise futura.

modelo_quad <- lm(wages ~ poly(time(wages),degree = 2))
summary(modelo_quad)
## 
## Call:
## lm(formula = wages ~ poly(time(wages), degree = 2))
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.148318 -0.041440  0.001563  0.050089  0.139839 
## 
## Coefficients:
##                                 Estimate Std. Error  t value Pr(>|t|)    
## (Intercept)                     8.786389   0.006941 1265.931  < 2e-16 ***
## poly(time(wages), degree = 2)1  4.130624   0.058893   70.137  < 2e-16 ***
## poly(time(wages), degree = 2)2 -0.487737   0.058893   -8.282  6.1e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.05889 on 69 degrees of freedom
## Multiple R-squared:  0.9864, Adjusted R-squared:  0.986 
## F-statistic:  2494 on 2 and 69 DF,  p-value: < 2.2e-16

O modelo quadrático se ajustou aos dados ainda melhor que o anterior, com R2 = 98.6%, ele nos mostra um acréscimo estimado de 4.1306 na média de salário por hora.

E-) Construa e interprete o gráfico dos resíduos padronizados do item anterior.

res<-modelo_quad$residuals
plot(res, type = "o", col = "darkred")

O gráfico dos resíduos do modelo quadrático já sofre alterações quando comparado ao do primeiro modelo, vemos que ele se comporta de maneira diferente do gráfico dos dados originais, existem oscilações e mudanças mais frequentes.

Questão 14

Considere o arquivo hours novamente.

A-) Use o MMQ para ajustar a tendência quadrática. Interprete a saída

modelo_quad1 <- lm(hours ~ poly(time(hours),degree = 2))
summary(modelo_quad1)
## 
## Call:
## lm(formula = hours ~ poly(time(hours), degree = 2))
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.00603 -0.25431 -0.02267  0.22884  0.98358 
## 
## Coefficients:
##                                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                    40.40000    0.05461 739.836  < 2e-16 ***
## poly(time(hours), degree = 2)1  3.36053    0.42298   7.945 8.49e-11 ***
## poly(time(hours), degree = 2)2 -1.87317    0.42298  -4.428 4.35e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.423 on 57 degrees of freedom
## Multiple R-squared:  0.5921, Adjusted R-squared:  0.5778 
## F-statistic: 41.37 on 2 and 57 DF,  p-value: 7.97e-12

Esse modelo nos gerou um R2 baixo, explicou menos de 60% da variabilidade dos dados, estima um aumento de 3.3605 nas horas trabalhadas.

B-) Faça o gráfico dos resíduos padronizados. Use os símbolos para os meses no intuito de identificar a sazonalidade.

res1<- modelo_quad1$residuals
plot(res1, type = "o", col = "darkred")

Não identifico sazonalidade nessa série de resíduos.

C-) Calcule e interprete a autocorrelação amostral dos resíduos padronizados.

acf(res1, col = "darkred")

Gráfico de autocorrelação dos resíduos,a autocorrelação pode ser identificada quando os limites ultrapassa a linha azul, e tambem podemos ver que a autocorrelação muda de sinal, e decresce.

D-) Investigue a normalidade dos resíduos padronizados. Construa o histograma e o QQ-plot

shapiro.test(res1)
## 
##  Shapiro-Wilk normality test
## 
## data:  res1
## W = 0.99381, p-value = 0.9906
par(mfrow=c(1,2))
hist(res1, col = "darkred")
qqnorm(res1, col = "darkred")

A normalidade dos resíduos foi testada por meio do teste de Shappiro, e como p-valor>0.05 podemos dizer que os reíduos seguem distribuição normal, o que também pode ser visto através do histograma e do QQ-plot.

Questão 15

Baseado no exercício anterior, faça para o arquivo beersales

A-) Use o MMQ para ajustar a tendência quadrática. Interprete a saída

data("beersales")
modelo_quad2 <- lm(beersales ~ poly(time(beersales),degree = 2))
summary(modelo_quad2)
## 
## Call:
## lm(formula = beersales ~ poly(time(beersales), degree = 2))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.5430 -1.5447  0.0891  1.4700  2.9788 
## 
## Coefficients:
##                                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                         14.2790     0.1239 115.274  < 2e-16 ***
## poly(time(beersales), degree = 2)1  10.5832     1.7164   6.166 4.15e-09 ***
## poly(time(beersales), degree = 2)2  -4.8651     1.7164  -2.835  0.00509 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.716 on 189 degrees of freedom
## Multiple R-squared:  0.1959, Adjusted R-squared:  0.1874 
## F-statistic: 23.03 on 2 and 189 DF,  p-value: 1.123e-09

O modelo não é adequado aos dados, com o R2 baixíssimo ele não consegue explicar a variabilidade dos dados.

##B-) Faça o gráfico dos resíduos padronizados. Use os símbolos para os meses no intuito de identificar a sazonalidade.

res2<- modelo_quad2$residuals
plot(res2, type = "o", col = "darkred")

Existe uma grande oscilação no gráfico temporal dos resíduos, não é possível identificar sazonalidade.

C-) Calcule e interprete a autocorrelação amostral dos resíduos padronizados.

acf(res2, col = "darkred")

a autocorrelação pode ser identificada quando os limites ultrapassa a linha azul, e tambem podemos visualizar atráves do gráfico que a autocorrelação se comporta como ondas, variam de sinal mas não aparentam diminuição.

D-) Investigue a normalidade dos resíduos padronizados. Construa o histograma e o QQ-plot

shapiro.test(res2)
## 
##  Shapiro-Wilk normality test
## 
## data:  res2
## W = 0.94907, p-value = 2.384e-06
par(mfrow=c(1,2))
hist(res2, col = "darkred")
qqnorm(res2, col = "darkred")

O teste de Shappiro para verificar que não segue normalidade pois ressuresultou num p-valor = 0.005909, que é maior que 0.05, então podemos considerar os dados normais, e observar os gráficos.