Introdução as Séries Temporais no R

O primeiro passo na nossa prática é lembrar um pouco do que temos no R em termos de conjuntos de dados.

Quando escrevemos

data()

Podemos listar todos os "dados" já disponibilizados no R. Mas quando desejamos incluir uma biblioteca específica e verificar quais os dados estão disponíveis nela precisamos primeiro instalá-la e depois verificar seus dados disponíveis. Por exemplo, vamos instalar a biblioteca "tseries".

#install.packages("tseries")

library(tseries)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
data(package='tseries')

Podemos ainda conhecer um pouco mais dos nossos dados usando a função help, que abre a ajuda do R com as informações sobre o conjunto de dados:

help(prec) 
## starting httpd help server ... done

Para os dados serem carregados basta utilizar a função data com o nome do conjunto de dados. Usaremos a série ice.river, a qual as séries são observações diárias de 1 de janeiro de 1972 a 31 de dezembro de 1974 em 4 variáveis da Islândia:

-flow.vat, fluxo médio diário do rio Vatnsdalsa (cms), -flow.jok, fluxo médio diário do rio Jokulsa Eystri (cms), -prec, precipitação diária em Hveravellir (mm) e -temperatura média diária em Hveravellir (graus C).

data(ice.river)

Para visualizar dados brutos da série temporal no R usa-se função print(), que exibe o início, fim e frequênia dos dados, juntamente com as observações. A função length()* exibe o número total de observações na série temporal, caso tenha mais de uma variável, e exibido o número total.

O parâmetro max determina quantas linhas de observações serão exibidas.

print(ice.river,max=3) #exibe somente o cabeçalho com as informações de início, fim e frequencia da série temporal
## Time Series:
## Start = c(1972, 1) 
## End = c(1975, 1) 
## Frequency = 365 
##          flow.vat flow.jok prec  temp
##  [ reached getOption("max.print") -- omitted 1096 rows ]

Por padrão omite-se o parâmetro max para que toda a série temporal seja exibida, aqui iremos utilizar n=20, para não aparecerem as 1096 linhas de dados no texto.

print(ice.river,max=20) #exibe o cabeçalho  com mais "max=n" observações
## Time Series:
## Start = c(1972, 1) 
## End = c(1975, 1) 
## Frequency = 365 
##          flow.vat flow.jok prec  temp
## 1972.000    16.10     30.2  8.1   0.9
## 1972.003    19.20     29.0  4.4   1.6
## 1972.005    14.50     28.4  7.0   0.1
## 1972.008    11.00     27.8  0.0   0.6
## 1972.011    13.60     27.8  0.0   2.0
##  [ reached getOption("max.print") -- omitted 1091 rows ]
length(ice.river)
## [1] 4384

A série temporal ice.river apresenta 4 variáveis, assim o número total de observações é de 4384, cada variável apresenta 1096 observções.

Funções como head() e tail() permitem que subconjuntos dos dados sejam observados. Caso deseje observar um pedaço específico da série pode-se usar o mesmo mecanismo que ér usado para visualização de um vetor, indicando o intervalo dos dados.

head(prec, n=15) #exibe os 15 primeiros valores da precipitação
##  [1] 8.1 4.4 7.0 0.0 0.0 0.0 1.9 1.2 0.0 0.1 0.0 0.2 1.8 0.2 0.2
tail(prec,n=15) #exibe os últimos 15 valores da precipitação
##  [1] 0.3 0.1 0.1 0.4 1.2 0.0 0.0 0.4 0.1 0.0 0.0 7.1 0.1 0.3 8.1
prec[85:100]    #exibe os valores entre os dias 86 e 100 da precipitação
##  [1] 7.0 0.6 0.2 0.2 0.1 0.0 0.0 0.0 3.3 0.3 0.1 0.1 0.0 1.6 0.3 1.9

A função cycle() permite que se conheça a posição de cada observação.

cycle(prec)
## Time Series:
## Start = c(1972, 1) 
## End = c(1975, 1) 
## Frequency = 365 
##    [1]   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18
##   [19]  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36
##   [37]  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54
##   [55]  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72
##   [73]  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90
##   [91]  91  92  93  94  95  96  97  98  99 100 101 102 103 104 105 106 107 108
##  [109] 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
##  [127] 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
##  [145] 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
##  [163] 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
##  [181] 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198
##  [199] 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216
##  [217] 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234
##  [235] 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252
##  [253] 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270
##  [271] 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288
##  [289] 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306
##  [307] 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324
##  [325] 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342
##  [343] 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360
##  [361] 361 362 363 364 365   1   2   3   4   5   6   7   8   9  10  11  12  13
##  [379]  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31
##  [397]  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49
##  [415]  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67
##  [433]  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85
##  [451]  86  87  88  89  90  91  92  93  94  95  96  97  98  99 100 101 102 103
##  [469] 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
##  [487] 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
##  [505] 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
##  [523] 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
##  [541] 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193
##  [559] 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211
##  [577] 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229
##  [595] 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247
##  [613] 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265
##  [631] 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283
##  [649] 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301
##  [667] 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319
##  [685] 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337
##  [703] 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355
##  [721] 356 357 358 359 360 361 362 363 364 365   1   2   3   4   5   6   7   8
##  [739]   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26
##  [757]  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44
##  [775]  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62
##  [793]  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80
##  [811]  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98
##  [829]  99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
##  [847] 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
##  [865] 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
##  [883] 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
##  [901] 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188
##  [919] 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206
##  [937] 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224
##  [955] 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242
##  [973] 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260
##  [991] 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278
## [1009] 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296
## [1027] 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314
## [1045] 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332
## [1063] 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350
## [1081] 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365   1

Para os dados serem visualizados de forma gráfica, usa-se a função plot().

plot(prec)

Como em qualquer gráfico no R, é possível que sejam incorporados elementos gráficos como legendas e títulos.

plot(prec, xlab = "Ano", ylab = "Precipitação (mm)", main="Precipitação em  Hveravellir - Islândia, 1972-1974")

Supondo que em um determinado período os dados não foram coletados, tendo assim uma série com dados faltantes. Uma maneira de se imputar dados sem um aprofundamento no assunto ér incluir a mérdia dos dados observados nas observações sem informação.

Para exemplo, criaremos uma série prec1, calculamos a média de prec e colocaremos em um intervalo de dados de prec1.

prec1<-prec
prec1[30:78]<-mean(prec,, na.rm = TRUE)
plot(prec1)

Para observarmos mais de perto faremos um gráfico com o primeiro ano de observações, onde a linha contínua representa as observações com os valores imputados pela média e a linha vermelha pontilhada são os dados originais. Vale ressaltar que a série estava completa, a imputação feita com a média é uma mera ilustração do processo.

ano1<-prec1[1:365] #seleciona os primeiros 365 dados
is.ts(ano1)        #verifica se é uma série temporal
## [1] FALSE
ano1<-as.ts(ano1)        #transforma em série temporal
plot(ano1)
points(prec[1:365], type = "l", col = 2, lty = 3)