library(xts)
library(dplyr)
library(data.table)
db = fread("../data/dadosFormacaoTimeSeries.csv")
class(db)
## [1] "data.table" "data.frame"
db = as.xts(db)
class(db)
## [1] "xts" "zoo"
head(db)
## yahoo microsoft citigroup dow_chemical
## 2015-01-02 50.17 44.30501 53.45259 42.48209
## 2015-01-05 49.13 43.89759 51.76803 41.16821
## 2015-01-06 49.21 43.25329 49.94556 40.50662
## 2015-01-07 48.59 43.80284 50.40857 40.44139
## 2015-01-08 50.23 45.09144 51.16711 41.44776
## 2015-01-09 49.72 44.71244 50.02437 41.38253
plot(db$yahoo)
plot.zoo(db$yahoo)
plot.zoo(db$yahoo, main = "Yahoo", sub = "subtitulo",xlab = "aaa", ylab = "nnn", type = "l")
plot.zoo(db$yahoo, main = "Yahoo", sub = "subtitulo",xlab = "aaa", ylab = "nnn", type = "h")
plot.zoo(db$yahoo, main = "Yahoo", sub = "subtitulo",xlab = "aaa", ylab = "nnn", type = "l", col = "blue")
plot.zoo(db$yahoo, main = "Yahoo", sub = "subtitulo",xlab = "aaa", ylab = "nnn", type = "p", col = "blue")
lines(as.zoo(db$yahoo), col = "red")
plot.zoo(db$yahoo, main = "Yahoo", sub = "subtitulo",xlab = "aaa", ylab = "nnn", type = "h")
lines(as.zoo(db$yahoo), col = "red")
par(mfrow = c(2, 1))
plot.zoo(db$yahoo, main = "Yahoo", sub = "subtitulo",xlab = "aaa", ylab = "nnn", type = "l", col = "blue")
plot.zoo(db$microsoft, main = "Microsoft", sub = "subtitulo",xlab = "aaa", ylab = "nnn", type = "l", col = "red")
par(mfrow = c(2, 1), mex = 0.6, cex = 0.8)
plot.zoo(db$yahoo, main = "Yahoo", sub = "subtitulo",xlab = "aaa", ylab = "nnn", type = "l", col = "blue")
plot.zoo(db$microsoft, main = "Microsoft", sub = "subtitulo",xlab = "aaa", ylab = "nnn", type = "l", col = "red")
par(mfrow = c(1, 1))
plot.zoo(db$microsoft, main = "Comparativo de Ações", sub = "subtitulo",xlab = "aaa", ylab = "nnn", type = "l", col = "red")
lines(as.zoo(db$citigroup), col = "Blue")
axis(side = 4, at = pretty(db$citigroup))
legend(x = "topleft", legend = c("Microsoft", "Citigroup"), col = c("red", "blue"), lty = c(1,1))
abline(v = TRUE)
par(mfrow = c(1, 1))
plot.zoo(db$microsoft, main = "Comparativo de Ações", sub = "subtitulo",xlab = "aaa", ylab = "nnn", type = "l", col = "red")
lines(as.zoo(db$citigroup), col = "Blue")
lines(as.zoo(db$dow_chemical), col = "green")
legend(x = "topleft", legend = c("Microsoft", "Citigroup", "Dow Chemical"), col = c("red", "blue", "green"), lty = c(1,1))
abline(v = TRUE)
plot(db$microsoft)
plot(db$citigroup)
plot(db$dow_chemical)
abline(v = as.Date("2016-10-05"), col="red", lwd=3, lty=2)
plot.zoo(db$dow_chemical, main = "Dow Chemical")
abline(v = index(db$dow_chemical)[which(index(db$dow_chemical) == as.Date("2016-07-08"))], col = "red")
abline(h = mean(db$dow_chemical), col = "green")
library(TTR)
db = fread("../data/appleAcoes.csv")
head(db)
db$Index = as.Date(db$Index)
db = as.xts(db)
class(db)
## [1] "xts" "zoo"
plot.zoo(db, main = "Cotacão Apple")
Rate of Change / Momentum Description Calculate the (rate of) change of a series over n periods.
retorno = ROC(db)
head(retorno)
## Apple
## 2015-01-02 NA
## 2015-01-05 -0.0285760403
## 2015-01-06 0.0000941282
## 2015-01-07 0.0139247906
## 2015-01-08 0.0377025087
## 2015-01-09 0.0010719293
retorno = na.omit(retorno)
plot.zoo(retorno, main = "Rate of Change / Momentum")
par(mfrow = c(1, 2))
plot(db$Apple, main = "Cotacão Apple")
plot.zoo(retorno, main = "Retorno Apple")
par(mfrow = c(1, 1))
hist(retorno, col = "green")
abline(v = mean(retorno), col = "red")
lines(density(retorno), col = "blue")
par(mfrow = c(1, 1))
hist(retorno, col = "green", probability = T, main = "Resultados Apple")
abline(v = mean(retorno), col = "red")
lines(density(retorno), col = "orange", lwd = 3)
boxplot(as.numeric(retorno$Apple))
par(mfrow = c(2, 1))
boxplot(as.numeric(retorno$Apple), horizontal = 1)
boxplot(as.numeric(rnorm(1000)), horizontal = 1)
par(mfrow = c(1, 1))
acf(retorno, main = "Autocorrelação de Valores Apple")
acf(retorno, main = "Autocorrelação de Valores Apple", lag.max = 10)
qqnorm(retorno, main = "Verificação de Normalidade")
qqline(retorno, col = "green")
par(mfrow = c(2,2))
hist(retorno, probability = 1, col = "green")
lines(density(retorno), col = "blue")
boxplot(as.numeric(retorno$Apple), horizontal = 1)
acf(retorno, main = "Autocorrelação de Valores Apple")
qqnorm(retorno, main = "Verificação de Normalidade")
qqline(retorno, col = "green")
dados = fread("../data/timeSeriesMultivar.csv")
glimpse(dados)
## Rows: 503
## Columns: 7
## $ Index <date> 2015-01-05, 2015-01-06, 2015-01-07, 2015-01-08, 2015-01-0…
## $ sp500 <dbl> -0.0277431513, -0.0053304213, 0.0100815421, 0.0165076412, …
## $ citigroup <dbl> -0.032022201, -0.035839143, 0.009227448, 0.014935802, -0.0…
## $ microsoft <dbl> -0.0092383657, -0.0147861081, 0.0126252978, 0.0289937264, …
## $ apple <dbl> -0.0285760376, 0.0000941334, 0.0139247880, 0.0377025087, 0…
## $ dowchemical <dbl> -0.0314161915, -0.0162011345, -0.0016116027, 0.0245801707,…
## $ yahoo <dbl> -0.0209473321, 0.0016269680, -0.0126790861, 0.0331947093, …
dados$Index = as.Date(dados$Index)
glimpse(dados)
## Rows: 503
## Columns: 7
## $ Index <date> 2015-01-05, 2015-01-06, 2015-01-07, 2015-01-08, 2015-01-0…
## $ sp500 <dbl> -0.0277431513, -0.0053304213, 0.0100815421, 0.0165076412, …
## $ citigroup <dbl> -0.032022201, -0.035839143, 0.009227448, 0.014935802, -0.0…
## $ microsoft <dbl> -0.0092383657, -0.0147861081, 0.0126252978, 0.0289937264, …
## $ apple <dbl> -0.0285760376, 0.0000941334, 0.0139247880, 0.0377025087, 0…
## $ dowchemical <dbl> -0.0314161915, -0.0162011345, -0.0016116027, 0.0245801707,…
## $ yahoo <dbl> -0.0209473321, 0.0016269680, -0.0126790861, 0.0331947093, …
dados = as.xts(dados)
class(dados)
## [1] "xts" "zoo"
plot(as.numeric(dados$sp500), as.numeric(dados$apple))
abline(reg = lm(as.numeric(dados$apple) ~as.numeric(dados$sp500)), col = "pink", lwd = 3)
abline(reg = lm(as.numeric(dados$apple) ~as.numeric(dados$apple)), col = "orange", lwd = 3)
abline(reg = lm(as.numeric(dados$apple) ~as.numeric(dados$citigroup)), col = "green", lwd = 3)
abline(reg = lm(as.numeric(dados$apple) ~as.numeric(dados$microsoft)), col = "blue", lwd = 3)
abline(reg = lm(as.numeric(dados$apple) ~as.numeric(dados$dowchemical)), col = "red", lwd = 3)
abline(reg = lm(as.numeric(dados$apple) ~as.numeric(dados$yahoo)), col = "yellow", lwd = 3)
plot(as.numeric(dados$sp500), as.numeric(dados$citigroup))
Correlação de Pearson: Relação linear entre duas variáveis Correlação de Spearman: Mede a dependencia estatística e a classificação de duas variáveis (não linear - monótona).
cor(dados, method = "pearson")
## sp500 citigroup microsoft apple dowchemical yahoo
## sp500 1.0000000 0.5097953 0.3743215 0.3576966 0.5217243 0.2900962
## citigroup 0.5097953 1.0000000 0.4841408 0.4291841 0.5085190 0.4029490
## microsoft 0.3743215 0.4841408 1.0000000 0.5133469 0.3954523 0.4329388
## apple 0.3576966 0.4291841 0.5133469 1.0000000 0.3627755 0.3413626
## dowchemical 0.5217243 0.5085190 0.3954523 0.3627755 1.0000000 0.2938749
## yahoo 0.2900962 0.4029490 0.4329388 0.3413626 0.2938749 1.0000000
cor(dados, method = "spearman")
## sp500 citigroup microsoft apple dowchemical yahoo
## sp500 1.0000000 0.5192579 0.4244237 0.3518853 0.5316235 0.3262037
## citigroup 0.5192579 1.0000000 0.4976477 0.4374850 0.5607511 0.3780730
## microsoft 0.4244237 0.4976477 1.0000000 0.5128477 0.4684114 0.4448179
## apple 0.3518853 0.4374850 0.5128477 1.0000000 0.3681791 0.3680715
## dowchemical 0.5316235 0.5607511 0.4684114 0.3681791 1.0000000 0.3464743
## yahoo 0.3262037 0.3780730 0.4448179 0.3680715 0.3464743 1.0000000
pairs(as.data.frame(dados), lower.panel = NULL, main = "Título", col = "pink")
library(corrplot)
corrplot(cor(x = dados, method = "pearson"))
library(corrplot)
corrplot(cor(x = dados, method = "pearson"), type = "upper")
corrplot(cor(x = dados, method = "pearson"), method = "number", type = "upper")
corrplot(cor(x = dados, method = "pearson"), method = "color", type = "upper")
?Nile
Nile {datasets} R Documentation Flow of the River Nile Description Measurements of the annual flow of the river Nile at Aswan (formerly Assuan), 1871–1970, in 10^8 m^3, “with apparent changepoint near 1898” (Cobb(1978), Table 1, p.249).
Usage Nile Format A time series of length 100.
Source Durbin, J. and Koopman, S. J. (2001). Time Series Analysis by State Space Methods. Oxford University Press. http://www.ssfpack.com/DKbook.html
References Balke, N. S. (1993). Detecting level shifts in time series. Journal of Business and Economic Statistics, 11, 81–92. doi: 10.2307/1391308.
Cobb, G. W. (1978). The problem of the Nile: conditional solution to a change-point problem. Biometrika 65, 243–51. doi: 10.2307/2335202.
head(Nile)
## [1] 1120 1160 963 1210 1160 1160
RioNilo = Nile
tail(RioNilo)
## [1] 912 746 919 718 714 740
length(RioNilo)
## [1] 100
plot(RioNilo)
plot(RioNilo, type = "b", col = "green")
\(log()\) : Linearização
\(diff()\) : Remoção de tendência linear
ASTSA: Applied Statistical Time Series analysis
library(astsa)
temperatura_global = globtemp
plot(temperatura_global, col = "red")
Diferenciação para obter uma série estacionária
plot(diff(temperatura_global))
par(mfrow = c(2,1))
plot(temperatura_global, col = "red")
plot(diff(temperatura_global), col = "blue")
Portanto não possui um padrão, sendo completamente aleatório
Simulando ruído branco com componentes autorregressivo, de diferenciação e de média movel (p, d, q) = (0, 0, 0).
whitenoise = arima.sim(model = list(order = c(0, 0, 0)), n = 50)
class(whitenoise)
## [1] "ts"
plot(whitenoise, col = "green", lwd = 2)
arima(whitenoise, order = c(0, 0, 0))
##
## Call:
## arima(x = whitenoise, order = c(0, 0, 0))
##
## Coefficients:
## intercept
## 0.0197
## s.e. 0.1504
##
## sigma^2 estimated as 1.13: log likelihood = -74.01, aic = 152.03
Sem variância ou média especificada
Dependência ao longo do tempo
Mudança ou incremento são ruídos brancos
Cada momento seque um processo aditino em que o instante adial é a adição de algum ruído ao valor do dado anterior.
\[T_{atual} = T_{atual-1} + e_{atual}\\ \Rightarrow T_1 = T_{0} + e_{1}, \,\, t.q.\,\, \overline{x} = 0\] Um segundo modelo de passeio aleatório chamado drift adiciona uma constante ao modelo
\[T_{atual} = c + T_{atual-1} + e_{atual} \\ \Rightarrow c + T_1 = T_{0} + e_{1}, \,\, t.q.\,\, \overline{x} = 0\]
passeioaleat = arima.sim(model = list(order = c(0, 1, 0)), n = 50)
ts.plot(passeioaleat, col = "green", lwd = 2)
arima(passeioaleat, order = c(0, 0, 0))
##
## Call:
## arima(x = passeioaleat, order = c(0, 0, 0))
##
## Coefficients:
## intercept
## 1.2102
## s.e. 0.3327
##
## sigma^2 estimated as 5.646: log likelihood = -116.51, aic = 237.01
passeioaleat = diff(passeioaleat)
ts.plot(passeioaleat, col = "green", lwd = 2)
arima(passeioaleat, order = c(0, 0, 0))
##
## Call:
## arima(x = passeioaleat, order = c(0, 0, 0))
##
## Coefficients:
## intercept
## 0.0359
## s.e. 0.1488
##
## sigma^2 estimated as 1.108: log likelihood = -73.5, aic = 151