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")

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 dygraphs
grafica 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()
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"))