library(fortunes)
fortune(92)
## 
## If you don't go with R now, you will someday.
##    -- David Kane (on whether to use R or S-PLUS)
##       R-SIG-Finance (November 2004)

Creación y graficación de series de tiempo con ts del R básico, clase ts

set.seed(123)
st1 <- ts(rpois(15,3),frequency=12,start = c(2016,5)) # mensual
print(st1,calendar=TRUE)
##      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2016                   2   4   2   5   6   0   3   5
## 2017   3   3   6   3   4   3   1
plot(st1)

str(st1)
##  Time-Series [1:15] from 2016 to 2018: 2 4 2 5 6 0 3 5 3 3 ...
class(st1)
## [1] "ts"
sta <- cbind(st1,rnorm(15)) # agregar una serie
sta
##          st1   rnorm(15)
## May 2016   2  1.28055488
## Jun 2016   4 -1.72727063
## Jul 2016   2  1.69018435
## Aug 2016   5  0.50381245
## Sep 2016   6  2.52833655
## Oct 2016   0  0.54909674
## Nov 2016   3  0.23821292
## Dec 2016   5 -1.04889314
## Jan 2017   3  1.29476325
## Feb 2017   3  0.82553984
## Mar 2017   6 -0.05568601
## Apr 2017   3 -0.78438222
## May 2017   4 -0.73350322
## Jun 2017   3 -0.21586539
## Jul 2017   1 -0.33491276
st2 <- ts(rnorm(20),frequency = 4, start = c(2015,3)) #trimestral
plot(st2,xlab="Fecha",ylab="Serie 2")

des  <- ts(discoveries) #anual
plot(des,ylab="Número de descubrimientos",main="Descubrimientos científicos y grandes inventos 1860 a 1959",xlab="Años")

Para extraer información de la serie

start(des)
## [1] 1 1
end(des)
## [1] 100   1
time(des)
## Time Series:
## Start = 1 
## End = 100 
## Frequency = 1 
##   [1]   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17
##  [18]  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34
##  [35]  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51
##  [52]  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68
##  [69]  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85
##  [86]  86  87  88  89  90  91  92  93  94  95  96  97  98  99 100
frequency(des)
## [1] 1

Series de tiempo multivariadas

st3 <- ts(matrix(rnorm(40), 10, 4), start = c(2017, 1), frequency = 12)
class(st3)
## [1] "mts"    "ts"     "matrix"
start(st3)
## [1] 2017    1
end(st3)
## [1] 2017   10
frequency(st3)
## [1] 12
plot(st3,main="Serie Multivariada",xlab="Tiempo",plot.type = "single",col=c("blue","red","green","black"))

plot(st3,main="Serie Multivariada",xlab="Tiempo",plot.type = "multiple",col="blue") 

class(st3) 
## [1] "mts"    "ts"     "matrix"
st3[,2] # extrae una serie
##             Jan        Feb        Mar        Apr        May        Jun
## 2017  1.2283928  0.2760235 -1.0489755 -0.5208693  1.6232025 -1.0700682
##             Jul        Aug        Sep        Oct
## 2017  1.6858872 -0.2416898 -0.4682005 -0.7729782
library(ggplot2)
library(zoo)
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
library(xts)
autoplot(zoo(st3), facets = NULL)

Series de tiempo con el paquete xts

library(xts)
library(dygraphs) # para graficarlas
library(magrittr) # para programación con "tubos"

start(AirPassengers)
## [1] 1949    1
end(AirPassengers)
## [1] 1960   12
frequency(AirPassengers)
## [1] 12
head(AirPassengers)
## [1] 112 118 132 129 121 135
str(AirPassengers)
##  Time-Series [1:144] from 1949 to 1961: 112 118 132 129 121 135 148 148 136 119 ...
is.ts(AirPassengers)
## [1] TRUE
xts99 <- as.xts(AirPassengers)
head(coredata(xts99))
##      [,1]
## [1,]  112
## [2,]  118
## [3,]  132
## [4,]  129
## [5,]  121
## [6,]  135
index(xts99)
##   [1] "Jan 1949" "Feb 1949" "Mar 1949" "Apr 1949" "May 1949" "Jun 1949"
##   [7] "Jul 1949" "Aug 1949" "Sep 1949" "Oct 1949" "Nov 1949" "Dec 1949"
##  [13] "Jan 1950" "Feb 1950" "Mar 1950" "Apr 1950" "May 1950" "Jun 1950"
##  [19] "Jul 1950" "Aug 1950" "Sep 1950" "Oct 1950" "Nov 1950" "Dec 1950"
##  [25] "Jan 1951" "Feb 1951" "Mar 1951" "Apr 1951" "May 1951" "Jun 1951"
##  [31] "Jul 1951" "Aug 1951" "Sep 1951" "Oct 1951" "Nov 1951" "Dec 1951"
##  [37] "Jan 1952" "Feb 1952" "Mar 1952" "Apr 1952" "May 1952" "Jun 1952"
##  [43] "Jul 1952" "Aug 1952" "Sep 1952" "Oct 1952" "Nov 1952" "Dec 1952"
##  [49] "Jan 1953" "Feb 1953" "Mar 1953" "Apr 1953" "May 1953" "Jun 1953"
##  [55] "Jul 1953" "Aug 1953" "Sep 1953" "Oct 1953" "Nov 1953" "Dec 1953"
##  [61] "Jan 1954" "Feb 1954" "Mar 1954" "Apr 1954" "May 1954" "Jun 1954"
##  [67] "Jul 1954" "Aug 1954" "Sep 1954" "Oct 1954" "Nov 1954" "Dec 1954"
##  [73] "Jan 1955" "Feb 1955" "Mar 1955" "Apr 1955" "May 1955" "Jun 1955"
##  [79] "Jul 1955" "Aug 1955" "Sep 1955" "Oct 1955" "Nov 1955" "Dec 1955"
##  [85] "Jan 1956" "Feb 1956" "Mar 1956" "Apr 1956" "May 1956" "Jun 1956"
##  [91] "Jul 1956" "Aug 1956" "Sep 1956" "Oct 1956" "Nov 1956" "Dec 1956"
##  [97] "Jan 1957" "Feb 1957" "Mar 1957" "Apr 1957" "May 1957" "Jun 1957"
## [103] "Jul 1957" "Aug 1957" "Sep 1957" "Oct 1957" "Nov 1957" "Dec 1957"
## [109] "Jan 1958" "Feb 1958" "Mar 1958" "Apr 1958" "May 1958" "Jun 1958"
## [115] "Jul 1958" "Aug 1958" "Sep 1958" "Oct 1958" "Nov 1958" "Dec 1958"
## [121] "Jan 1959" "Feb 1959" "Mar 1959" "Apr 1959" "May 1959" "Jun 1959"
## [127] "Jul 1959" "Aug 1959" "Sep 1959" "Oct 1959" "Nov 1959" "Dec 1959"
## [133] "Jan 1960" "Feb 1960" "Mar 1960" "Apr 1960" "May 1960" "Jun 1960"
## [139] "Jul 1960" "Aug 1960" "Sep 1960" "Oct 1960" "Nov 1960" "Dec 1960"
indexClass(xts99)
## [1] "yearmon"
tzone(xts99)
## [1] "UTC"
periodicity(xts99)
## Monthly periodicity from Jan 1949 to Dec 1960
to.yearly(xts99)
##          xts99.Open xts99.High xts99.Low xts99.Close
## Dec 1949        112        148       104         118
## Dec 1950        115        170       114         140
## Dec 1951        145        199       145         166
## Dec 1952        171        242       171         194
## Dec 1953        196        272       180         201
## Dec 1954        204        302       188         229
## Dec 1955        242        364       233         278
## Dec 1956        284        413       271         306
## Dec 1957        315        467       301         336
## Dec 1958        340        505       310         337
## Dec 1959        360        559       342         405
## Dec 1960        417        622       390         432
nmonths(xts99)
## [1] 144
str(xts99)
## An 'xts' object on Jan 1949/Dec 1960 containing:
##   Data: num [1:144, 1] 112 118 132 129 121 135 148 148 136 119 ...
##   Indexed by objects of class: [yearmon] TZ: UTC
##   xts Attributes:  
##  NULL
start(xts99)
## [1] "Jan 1949"
time(xts99)
##   [1] "Jan 1949" "Feb 1949" "Mar 1949" "Apr 1949" "May 1949" "Jun 1949"
##   [7] "Jul 1949" "Aug 1949" "Sep 1949" "Oct 1949" "Nov 1949" "Dec 1949"
##  [13] "Jan 1950" "Feb 1950" "Mar 1950" "Apr 1950" "May 1950" "Jun 1950"
##  [19] "Jul 1950" "Aug 1950" "Sep 1950" "Oct 1950" "Nov 1950" "Dec 1950"
##  [25] "Jan 1951" "Feb 1951" "Mar 1951" "Apr 1951" "May 1951" "Jun 1951"
##  [31] "Jul 1951" "Aug 1951" "Sep 1951" "Oct 1951" "Nov 1951" "Dec 1951"
##  [37] "Jan 1952" "Feb 1952" "Mar 1952" "Apr 1952" "May 1952" "Jun 1952"
##  [43] "Jul 1952" "Aug 1952" "Sep 1952" "Oct 1952" "Nov 1952" "Dec 1952"
##  [49] "Jan 1953" "Feb 1953" "Mar 1953" "Apr 1953" "May 1953" "Jun 1953"
##  [55] "Jul 1953" "Aug 1953" "Sep 1953" "Oct 1953" "Nov 1953" "Dec 1953"
##  [61] "Jan 1954" "Feb 1954" "Mar 1954" "Apr 1954" "May 1954" "Jun 1954"
##  [67] "Jul 1954" "Aug 1954" "Sep 1954" "Oct 1954" "Nov 1954" "Dec 1954"
##  [73] "Jan 1955" "Feb 1955" "Mar 1955" "Apr 1955" "May 1955" "Jun 1955"
##  [79] "Jul 1955" "Aug 1955" "Sep 1955" "Oct 1955" "Nov 1955" "Dec 1955"
##  [85] "Jan 1956" "Feb 1956" "Mar 1956" "Apr 1956" "May 1956" "Jun 1956"
##  [91] "Jul 1956" "Aug 1956" "Sep 1956" "Oct 1956" "Nov 1956" "Dec 1956"
##  [97] "Jan 1957" "Feb 1957" "Mar 1957" "Apr 1957" "May 1957" "Jun 1957"
## [103] "Jul 1957" "Aug 1957" "Sep 1957" "Oct 1957" "Nov 1957" "Dec 1957"
## [109] "Jan 1958" "Feb 1958" "Mar 1958" "Apr 1958" "May 1958" "Jun 1958"
## [115] "Jul 1958" "Aug 1958" "Sep 1958" "Oct 1958" "Nov 1958" "Dec 1958"
## [121] "Jan 1959" "Feb 1959" "Mar 1959" "Apr 1959" "May 1959" "Jun 1959"
## [127] "Jul 1959" "Aug 1959" "Sep 1959" "Oct 1959" "Nov 1959" "Dec 1959"
## [133] "Jan 1960" "Feb 1960" "Mar 1960" "Apr 1960" "May 1960" "Jun 1960"
## [139] "Jul 1960" "Aug 1960" "Sep 1960" "Oct 1960" "Nov 1960" "Dec 1960"
head(xts99)
##          [,1]
## Jan 1949  112
## Feb 1949  118
## Mar 1949  132
## Apr 1949  129
## May 1949  121
## Jun 1949  135

El paquete dygraphsgrafica series clase xts

dygraph(xts99)
dygraph(xts99) %>% dyRangeSelector()
dyRangeSelector(dygraph(xts99)) # lo mismo
hw <- HoltWinters(xts99)
pronostico <- predict(hw, n.ahead = 36, prediction.interval = TRUE)
dygraph(pronostico, main = "Pronostico") 

Gráfico de velas con el conjunto de datos sample_matrix del paquete xts

data(sample_matrix)
head(sample_matrix)
##                Open     High      Low    Close
## 2007-01-02 50.03978 50.11778 49.95041 50.11778
## 2007-01-03 50.23050 50.42188 50.23050 50.39767
## 2007-01-04 50.42096 50.42096 50.26414 50.33236
## 2007-01-05 50.37347 50.37347 50.22103 50.33459
## 2007-01-06 50.24433 50.24433 50.11121 50.18112
## 2007-01-07 50.13211 50.21561 49.99185 49.99185
str(sample_matrix)
##  num [1:180, 1:4] 50 50.2 50.4 50.4 50.2 ...
##  - attr(*, "dimnames")=List of 2
##   ..$ : chr [1:180] "2007-01-02" "2007-01-03" "2007-01-04" "2007-01-05" ...
##   ..$ : chr [1:4] "Open" "High" "Low" "Close"
class(sample_matrix)
## [1] "matrix"
m <- tail(sample_matrix, n = 32)
dygraph(m) %>%
  dyCandlestick()

Agreguemos la media al gráfico

m <- cbind(m, apply(m[, 1:3], 1, mean))
colnames(m)[5] <- "Mean"
dygraph(m) %>%
  dyCandlestick()

Varias series al tiempo

dygraph(m)
Muertes_Pulmon <- cbind(ldeaths, mdeaths, fdeaths)
dygraph(Muertes_Pulmon, main = "Muertes por enfermedad del pulmón (UK)") %>%
  dyOptions(colors = RColorBrewer::brewer.pal(3, "Set2"))