En este documento se explica lo relacionado al pronóstico de series de tiempo. Lo cual comprende:
Elaborando la serie de tiempo en R AnÔlisis de la serie de tiempo Pronóstico de la serie de tiempo Estimación de errores de pronóstico Para el anÔlisis de series de tiempo en R, existen una gran variedad de librerias. En este tutorial se emplea la libreria fpp2, la cual contiene contiene:
La libreria forecast, que contiene funciones de pronóstico La libreria ggplot2, que contiene funciones para grĆ”ficos Esta libreria se instala y se carga mediante install.packages(āfpp2ā)y library(fpp2) respectivamente.
Elaborando la serie de tiempo en R Cargando librerias y datos Recordemos que se puede leer datos directamente desde una API, SQL u otros medios. Para este tutorial empleo la lectura de datos desde Excel. Entonces para ello emplearemos las siguientes funciones:
La función head() nos muestra los primeros datos de nuestra tabla de datos
library(fpp2)
## Warning: package 'fpp2' was built under R version 4.3.3
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
## āā Attaching packages āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā fpp2 2.5 āā
## ā ggplot2 3.5.1 ā fma 2.5
## ā forecast 8.22.0 ā expsmooth 2.3
## Warning: package 'ggplot2' was built under R version 4.3.3
## Warning: package 'forecast' was built under R version 4.3.3
## Warning: package 'fma' was built under R version 4.3.3
## Warning: package 'expsmooth' was built under R version 4.3.3
##
AirPassengers
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 1949 112 118 132 129 121 135 148 148 136 119 104 118
## 1950 115 126 141 135 125 149 170 170 158 133 114 140
## 1951 145 150 178 163 172 178 199 199 184 162 146 166
## 1952 171 180 193 181 183 218 230 242 209 191 172 194
## 1953 196 196 236 235 229 243 264 272 237 211 180 201
## 1954 204 188 235 227 234 264 302 293 259 229 203 229
## 1955 242 233 267 269 270 315 364 347 312 274 237 278
## 1956 284 277 317 313 318 374 413 405 355 306 271 306
## 1957 315 301 356 348 355 422 465 467 404 347 305 336
## 1958 340 318 362 348 363 435 491 505 404 359 310 337
## 1959 360 342 406 396 420 472 548 559 463 407 362 405
## 1960 417 391 419 461 472 535 622 606 508 461 390 432
Creando el objeto de serie de tiempo La serie de tiempo se debe almacenar en el objeto ts empleando la función ts(). El empleo de esta función es de la siguiente forma : serie <- ts(data, frequency= ,start=). Donde el primer agumento es un vector de datos. Luego los dos siguientes argumentos se indican de acuerdo a la siguiente tabla.
| Frecuencia | frequency= |
start= |
|---|---|---|
| Anual | 1 | 2000 |
| Trimestral | 4 | c(2000,2) |
| Mensual | 12 | c(2000,9) |
| Diario | 7 o 365.25 | 1 o c(2000,234) |
| Semanal | 52.18 | c(2000,23) |
| Horario | 24 o 168 o 8766 | 1 |
| Cada 30 min | 48 o 336 o 17532 | 1 |
En el siguiente fragmento de código definimos el objeto de la serie de tiempo y lo almacenaremos en data_serie.AnÔlisis de la serie de tiempo Para el anÔlisis de datos, esta libreria fpp2 nos permite emplear las siguientes funciones:
autoplot(), para graficar la serie de tiempo ggseasonplot(), para graficar la estacionalidad de una serie de tiempo ggsubseriesplot(), para graficar subseries ggAcf(), para graficar la autocorrelación decompose(), permite realizar una descomposición de estacionalidad y tendencia. Grafico de la serie de tiempo Para el grÔfico simple de la serie de tiempo empleamos la funcion autoplot(). Donde solo se requiere ingresar el objeto de la serie de tiempo.
file_path <- "C:/PRACTICAS ARCGIS/Arcgispro/PRECI/DATOSPRE.CSV"
datamocache<- read.csv(file_path)
datamocache
## DATOS
## 1 355.065
## 2 433.574
## 3 422.422
## 4 427.278
## 5 162.592
## 6 25.799
## 7 10.764
## 8 6.012
## 9 16.088
## 10 24.358
## 11 106.002
## 12 6.297
## 13 355.201
## 14 433.974
## 15 422.605
## 16 427.333
## 17 162.696
## 18 25.877
## 19 10.770
## 20 6.011
## 21 16.099
## 22 24.370
## 23 106.049
## 24 6.303
## 25 355.108
## 26 434.050
## 27 422.868
## 28 427.388
## 29 162.772
## 30 25.943
## 31 10.756
## 32 6.003
## 33 16.092
## 34 24.352
## 35 106.002
## 36 6.311
## 37 355.519
## 38 433.844
## 39 422.675
## 40 427.589
## 41 162.891
## 42 25.957
## 43 10.727
## 44 5.985
## 45 16.056
## 46 24.312
## 47 105.865
## 48 6.309
## 49 355.499
## 50 433.857
## 51 423.005
## 52 428.151
## 53 163.050
## 54 25.946
## 55 10.686
## 56 5.958
## 57 16.029
## 58 24.367
## 59 105.960
## 60 6.298
## 61 355.652
## 62 433.779
## 63 423.017
## 64 428.507
## 65 163.210
## 66 25.931
## 67 10.693
## 68 5.939
## 69 16.111
## 70 24.472
## 71 106.200
## 72 6.279
## 73 355.567
## 74 433.274
## 75 422.919
## 76 428.559
## 77 163.502
## 78 25.891
## 79 10.690
## 80 5.914
## 81 16.182
## 82 24.525
## 83 106.271
## 84 6.284
## 85 355.246
## 86 432.458
## 87 422.395
## 88 428.670
## 89 163.472
## 90 25.808
## 91 10.673
## 92 5.881
## 93 16.219
## 94 24.534
## 95 106.340
## 96 6.280
## 97 354.779
## 98 432.083
## 99 422.033
## 100 428.235
## 101 163.197
## 102 25.716
## 103 10.649
## 104 5.857
## 105 16.230
## 106 24.550
## 107 106.295
## 108 6.285
## 109 354.140
## 110 431.439
## 111 421.606
## 112 427.798
## 113 162.858
## 114 25.638
## 115 10.645
## 116 5.825
## 117 16.212
## 118 24.559
## 119 106.157
## 120 6.280
## 121 353.898
## 122 430.961
## 123 421.539
## 124 427.195
## 125 162.508
## 126 25.536
## 127 10.635
## 128 5.912
## 129 16.190
## 130 24.539
## 131 105.890
## 132 6.283
## 133 353.578
## 134 430.255
## 135 421.401
## 136 426.216
## 137 162.145
## 138 25.419
## 139 10.609
## 140 5.981
## 141 16.151
## 142 24.475
## 143 105.568
## 144 6.275
## 145 353.352
## 146 430.374
## 147 421.402
## 148 425.828
## 149 161.945
## 150 25.300
## 151 10.625
## 152 6.037
## 153 16.087
## 154 24.417
## 155 105.643
## 156 6.281
## 157 353.176
## 158 430.596
## 159 420.880
## 160 426.039
## 161 161.474
## 162 25.235
## 163 10.709
## 164 6.078
## 165 16.006
## 166 24.327
## 167 105.796
## 168 6.283
## 169 353.550
## 170 431.465
## 171 421.171
## 172 426.259
## 173 161.512
## 174 25.185
## 175 10.769
## 176 6.106
## 177 15.913
## 178 24.228
## 179 105.879
## 180 6.275
## 181 354.028
## 182 432.374
## 183 421.683
## 184 426.478
## 185 161.364
## 186 25.116
## 187 10.804
## 188 6.125
## 189 15.811
## 190 24.092
## 191 105.880
## 192 6.265
## 193 354.445
## 194 433.141
## 195 421.632
## 196 426.384
## 197 161.273
## 198 25.100
## 199 10.826
## 200 6.132
## 201 15.801
## 202 23.927
## 203 105.729
## 204 6.268
## 205 354.950
## 206 434.070
## 207 421.477
## 208 426.417
## 209 161.680
## 210 25.490
## 211 10.886
## 212 6.129
## 213 15.923
## 214 24.074
## 215 105.830
## 216 6.260
## 217 355.541
## 218 434.825
## 219 421.722
## 220 426.475
## 221 161.965
## 222 25.810
## 223 10.924
## 224 6.119
## 225 16.010
## 226 24.188
## 227 105.757
## 228 6.295
## 229 356.430
## 230 435.785
## 231 422.907
## 232 427.083
## 233 162.505
## 234 26.153
## 235 10.940
## 236 6.106
## 237 16.117
## 238 24.256
## 239 105.679
## 240 6.319
## 241 356.819
## 242 436.881
## 243 423.726
## 244 427.365
## 245 162.928
## 246 26.420
## 247 10.939
## 248 6.084
## 249 16.186
## 250 24.287
## 251 106.058
## 252 6.331
## 253 357.314
## 254 438.477
## 255 424.883
## 256 427.844
## 257 163.682
## 258 26.860
## 259 10.938
## 260 6.053
## 261 16.228
## 262 24.457
## 263 106.421
## 264 6.374
## 265 357.638
## 266 440.671
## 267 425.750
## 268 428.303
## 269 164.403
## 270 27.257
## 271 10.927
## 272 6.021
## 273 16.278
## 274 24.569
## 275 106.773
## 276 6.402
## 277 358.196
## 278 442.756
## 279 426.617
## 280 428.534
## 281 164.969
## 282 27.580
## 283 10.899
## 284 5.989
## 285 16.345
## 286 24.636
## 287 107.090
## 288 6.435
## 289 353.053
## 290 435.732
## 291 428.664
## 292 428.606
## 293 164.453
## 294 27.398
## 295 10.438
## 296 5.838
## 297 15.943
## 298 23.961
## 299 104.968
## 300 6.490
## 301 364.576
## 302 429.318
## 303 418.414
## 304 432.019
## 305 165.498
## 306 26.272
## 307 10.093
## 308 5.584
## 309 15.263
## 310 23.432
## 311 102.844
## 312 6.256
## 313 355.043
## 314 434.134
## 315 430.278
## 316 440.510
## 317 166.563
## 318 25.691
## 319 9.776
## 320 5.367
## 321 15.421
## 322 25.570
## 323 108.046
## 324 6.067
## 325 359.023
## 326 432.072
## 327 423.271
## 328 436.331
## 329 166.730
## 330 25.600
## 331 10.864
## 332 5.516
## 333 17.929
## 334 26.776
## 335 111.479
## 336 5.851
## 337 353.696
## 338 422.164
## 339 420.776
## 340 429.712
## 341 169.925
## 342 25.026
## 343 10.613
## 344 5.364
## 345 17.749
## 346 25.703
## 347 107.845
## 348 6.383
## 349 348.188
## 350 414.492
## 351 410.851
## 352 431.116
## 353 162.806
## 354 23.977
## 355 10.312
## 356 5.152
## 357 17.034
## 358 24.733
## 359 107.852
## 360 6.193
## 361 344.506
## 362 423.840
## 363 414.075
## 364 418.663
## 365 157.154
## 366 23.678
## 367 10.121
## 368 5.328
## 369 16.467
## 370 24.893
## 371 105.297
## 372 6.410
## 373 340.088
## 374 417.278
## 375 412.211
## 376 418.182
## 377 155.399
## 378 23.940
## 379 10.541
## 380 5.127
## 381 15.812
## 382 24.754
## 383 103.141
## 384 6.153
## 385 348.575
## 386 420.448
## 387 420.058
## 388 413.935
## 389 154.804
## 390 23.282
## 391 10.422
## 392 7.826
## 393 15.716
## 394 24.108
## 395 100.009
## 396 6.355
## 397 346.529
## 398 414.707
## 399 418.364
## 400 404.677
## 401 154.160
## 402 22.856
## 403 10.030
## 404 7.511
## 405 15.293
## 406 23.064
## 407 98.487
## 408 6.092
## 409 348.375
## 410 432.994
## 411 421.440
## 412 417.274
## 413 157.540
## 414 22.676
## 415 10.976
## 416 7.250
## 417 14.676
## 418 23.140
## 419 107.278
## 420 6.427
## 421 349.298
## 422 435.494
## 423 409.382
## 424 430.684
## 425 151.121
## 426 23.794
## 427 12.556
## 428 6.983
## 429 14.221
## 430 22.342
## 431 109.162
## 432 6.330
## 433 361.798
## 434 450.585
## 435 427.578
## 436 431.110
## 437 162.346
## 438 24.090
## 439 12.088
## 440 6.736
## 441 13.868
## 442 22.053
## 443 107.711
## 444 6.094
## 445 364.533
## 446 452.369
## 447 432.940
## 448 431.284
## 449 158.109
## 450 23.599
## 451 11.589
## 452 6.538
## 453 13.556
## 454 21.108
## 455 105.911
## 456 6.042
## 457 363.627
## 458 450.014
## 459 420.512
## 460 424.328
## 461 159.261
## 462 24.760
## 463 11.298
## 464 6.293
## 465 15.575
## 466 20.299
## 467 102.397
## 468 6.323
## 469 366.057
## 470 454.513
## 471 418.081
## 472 427.140
## 473 170.632
## 474 34.062
## 475 12.202
## 476 6.063
## 477 18.607
## 478 27.299
## 479 108.058
## 480 6.100
## 481 368.541
## 482 451.434
## 483 427.117
## 484 427.747
## 485 168.244
## 486 32.850
## 487 11.776
## 488 5.882
## 489 17.946
## 490 26.690
## 491 104.156
## 492 7.061
## 493 375.983
## 494 456.907
## 495 448.959
## 496 440.466
## 497 174.390
## 498 33.696
## 499 11.277
## 500 5.826
## 501 18.470
## 502 25.751
## 503 103.953
## 504 6.850
## 505 365.375
## 506 460.985
## 507 441.757
## 508 433.564
## 509 172.225
## 510 32.288
## 511 10.917
## 512 5.595
## 513 17.702
## 514 24.966
## 515 114.399
## 516 6.587
## 517 368.211
## 518 473.585
## 519 450.328
## 520 438.383
## 521 180.267
## 522 36.558
## 523 10.912
## 524 5.386
## 525 17.149
## 526 28.207
## 527 114.399
## 528 7.318
## 529 364.775
## 530 488.934
## 531 444.836
## 532 438.393
## 533 180.274
## 534 35.977
## 535 10.686
## 536 5.304
## 537 17.382
## 538 27.042
## 539 114.528
## 540 7.030
## 541 370.459
## 542 488.641
## 543 445.686
## 544 433.624
## 545 177.410
## 546 34.691
## 547 10.282
## 548 5.295
## 549 17.805
## 550 26.114
## 551 114.049
## 552 7.164
## 553 239.900
## 554 281.200
## 555 473.700
## 556 430.200
## 557 153.100
## 558 23.400
## 559 0.300
## 560 2.500
## 561 7.100
## 562 9.100
## 563 58.300
## 564 7.700
## 565 618.100
## 566 288.200
## 567 192.900
## 568 507.100
## 569 188.500
## 570 1.500
## 571 2.500
## 572 0.000
## 573 0.300
## 574 11.800
## 575 56.100
## 576 1.100
## 577 145.300
## 578 540.100
## 579 691.300
## 580 627.300
## 581 190.000
## 582 12.900
## 583 2.800
## 584 0.600
## 585 18.900
## 586 72.600
## 587 222.500
## 588 1.900
## 589 446.600
## 590 386.700
## 591 269.100
## 592 344.400
## 593 170.400
## 594 23.600
## 595 34.800
## 596 8.800
## 597 73.100
## 598 53.300
## 599 187.000
## 600 1.100
## 601 236.500
## 602 204.200
## 603 365.900
## 604 284.100
## 605 240.200
## 606 12.400
## 607 5.100
## 608 2.000
## 609 13.800
## 610 2.100
## 611 27.900
## 612 18.100
## 613 227.000
## 614 245.700
## 615 192.500
## 616 462.000
## 617 6.200
## 618 0.900
## 619 3.700
## 620 0.500
## 621 1.300
## 622 3.400
## 623 108.000
## 624 2.000
## 625 263.500
## 626 629.500
## 627 485.000
## 628 144.700
## 629 32.800
## 630 17.100
## 631 5.900
## 632 9.200
## 633 4.000
## 634 28.400
## 635 49.100
## 636 11.200
## 637 242.900
## 638 272.900
## 639 371.200
## 640 407.600
## 641 116.800
## 642 29.700
## 643 19.800
## 644 0.700
## 645 1.400
## 646 21.700
## 647 55.700
## 648 0.500
## 649 535.300
## 650 490.200
## 651 592.700
## 652 320.500
## 653 141.700
## 654 8.800
## 655 7.800
## 656 67.200
## 657 13.600
## 658 9.900
## 659 31.100
## 660 10.800
## 661 301.500
## 662 288.400
## 663 381.100
## 664 201.000
## 665 140.000
## 666 13.500
## 667 1.400
## 668 0.600
## 669 6.000
## 670 0.100
## 671 65.000
## 672 0.300
## 673 389.000
## 674 835.300
## 675 489.100
## 676 694.400
## 677 231.900
## 678 18.700
## 679 31.800
## 680 1.500
## 681 1.100
## 682 24.800
## 683 300.700
## 684 13.800
## 685 369.600
## 686 490.500
## 687 144.100
## 688 725.700
## 689 9.900
## 690 48.400
## 691 47.300
## 692 1.100
## 693 4.200
## 694 4.800
## 695 150.600
## 696 4.200
## 697 636.800
## 698 782.600
## 699 827.900
## 700 440.500
## 701 409.300
## 702 30.600
## 703 1.800
## 704 1.300
## 705 6.100
## 706 15.700
## 707 75.800
## 708 0.900
## 709 424.700
## 710 491.600
## 711 550.900
## 712 435.100
## 713 64.900
## 714 12.800
## 715 0.600
## 716 2.200
## 717 6.700
## 718 0.300
## 719 66.300
## 720 4.900
## 721 343.700
## 722 398.200
## 723 147.100
## 724 271.300
## 725 184.600
## 726 50.300
## 727 4.900
## 728 0.900
## 729 60.000
## 730 2.500
## 731 25.100
## 732 12.500
## 733 419.500
## 734 553.500
## 735 364.600
## 736 489.000
## 737 420.800
## 738 238.700
## 739 32.100
## 740 1.000
## 741 85.300
## 742 181.300
## 743 232.600
## 744 1.200
## 745 423.200
## 746 383.700
## 747 625.900
## 748 441.100
## 749 115.700
## 750 6.200
## 751 2.400
## 752 1.900
## 753 3.400
## 754 13.300
## 755 18.300
## 756 28.200
## 757 539.700
## 758 577.300
## 759 929.500
## 760 720.300
## 761 309.600
## 762 52.300
## 763 0.300
## 764 4.600
## 765 30.000
## 766 5.100
## 767 99.500
## 768 2.200
## 769 132.000
## 770 550.700
## 771 283.300
## 772 281.700
## 773 124.600
## 774 1.300
## 775 3.000
## 776 0.500
## 777 0.800
## 778 7.700
## 779 344.200
## 780 0.800
## 781 430.600
## 782 750.800
## 783 638.900
## 784 544.400
## 785 357.200
## 786 130.500
## 787 10.800
## 788 0.800
## 789 5.000
## 790 99.500
## 791 114.411
## 792 23.400
## 793 289.200
## 794 826.600
## 795 324.000
## 796 438.620
## 797 180.410
## 798 23.200
## 799 5.700
## 800 3.500
## 801 22.500
## 802 1.400
## 803 117.364
## 804 0.700
## 805 495.500
## 806 482.200
## 807 464.400
## 808 328.700
## 809 114.400
## 810 6.400
## 811 1.400
## 812 5.100
## 813 27.100
## 814 5.700
## 815 103.500
## 816 10.100
data_serie <- ts(datamocache$DATOS, frequency=12, start=1946)
plot(data_serie)
#Nota: Los resultados de esta guĆa corresponden a Data1 del archivo excel. Sugiero que tambien practiques con las otras series de tiempo como Data2 o Data3.
autoplot(data_serie)+
labs(title = "Serie de tiempo",
x = "Tiempo",
y = "Valor",
colour = "#00a0dc")+
theme_bw()
Descomposición de la serie de tiempo Para la descomposición de la serie de tiempo se emplea la función decompose(). Donde se debe indicar el objeto de la serie de tiempo y el tipo de descomposición. Los tipos de descomposición que acepta esta función es additive y multiplicative.
Aditivo: Serie=T + S + I
Multiplicativo: Serie=T x S x I
Donde:
T: Tendencia
S: Estacionalidad
I: Irregular o error
# Descomposición de la serie de tiempo. Se almacena en el objeto fit
fit <- decompose(data_serie, type='additive')
#fit <- decompose(data_serie, type='multiplicative')
# Para graficar esta descomposición volvemos a emplear la funcion autoplot, pero con el objeto fit
autoplot(fit)+
labs(title = "Descomposicion de la serie de tiempo",
x = "Tiempo",
y = "Valor",
colour = "Gears")+
theme_bw()
library(highcharter)
## Warning: package 'highcharter' was built under R version 4.3.3
hchart(stl(data_serie, s.window='periodic'))
## Warning: Deprecated function. Use the `create_axis` function.
Grafico de la serie de tiempo con su tendencia El siguiente fragmento de código nos permite graficar la serie de tiempo con su tendencia. Notese que emplea el objeto fit en el cual guardamos previamente los valores de la descomposición. Nótese que se emplea la funcion trendcycle() para obtener los datos de tendencia del objeto fit.
autoplot(data_serie, series="Serie tiempo") +
autolayer(trendcycle(fit), series="Tendencia") +
labs(title = "Serie de tiempo",
x = "Tiempo",
y = "Valor"
) +
theme_bw()
## Warning: Removed 12 rows containing missing values or values outside the scale range
## (`geom_line()`).
Grafico de estacionalidad Para realizar el grÔfico de estacionalidad empleamos la función ggseasonplot. Donde el argumento es el objeto que contiene la serie de tiempo.
ggseasonplot(data_serie)
library(TSstudio)
## Warning: package 'TSstudio' was built under R version 4.3.3
ts_seasonal(data_serie, type = "all")
ts_heatmap(data_serie)
#Graficar la autocorrelacion
acf(data_serie, lag=35, col="2",main ="",
xlab="Lag",ylab="Valores")
#Graficar la autocorrelacion parcial
pacf(data_serie, lag=35, col="2",main ="",
xlab="Lag",ylab="Valores")
#Como hay confirmación de tendencia se hace la diferencia (1 lag)
plot(diff(data_serie),xlab="Tiempo",ylab="Valores")
acf(diff(data_serie), lag=35, col="2",main = "",
xlab="Lag", ylab="Valores")
pacf(diff(data_serie), lag=35,col="2",main = "",
xlab="Lag",ylab="Valores")