R Time series examples.
1) Apple Stock Price
- Start by importing the proper libraries and loading in some data to start with. I start by pulling Apple stock prices from 1990 up to today. Stock market data is fun and easy to play with.
# Load libraries
library(sweep) # Broom-style tidiers for the forecast package
library(forecast) # Forecasting models and predictions package
library(tidyquant) # Loads tidyverse, financial pkgs, used to get data
library(timetk) # Functions working with time series
library(tidyverse) # Functions for data analysis
AAPL = tq_get("AAPL", get = "stock.prices", from = " 1990-01-01")
head(AAPL)
Apple Closing from 1990 up to today. In general it looks like there is an upward trend in price.
AAPL %>%
ggplot(aes(date, adjusted))+
geom_line()+
labs(title = "Apple Adjusted Closing Stock Price", x = "Date", y = "APPL Close Price") +
theme_economist() +
stat_smooth(method = "loess", alpha = 0.2)

I next look at the trading volume of Apple stock. I’ll start by plotting a histogram of the closing price.
AAPL %>%
ggplot(aes(volume)) +
geom_histogram(bins = 100)+
geom_vline(xintercept = mean(AAPL$volume), color = "salmon")+
theme_economist()+
labs(title = "Histogram of AAPL Volume")

2) Zillow Home Value Index Vermont:
VT_home =
"ZILLOW/S46_TURNAH" %>%
tq_get(get = "quandl",
from = "2008-01-01")
VT_home %>% ggplot(aes(date, value))+
geom_line()+
labs(title = "Zillow Home Value Index (State):", subtitle = "Turnover - All Homes - Vermont", x = "Year", y= "Zillow Home Value Index")+
theme_economist()

NA
3) Skateboard Industry Stock Analysis
Stocks contained:
symbols = c("VFC", "SQBG", "NKE", "ICON", "ZUMZ")
skate = symbols %>% tq_get(get = "stock.prices", from = " 2002-01-01")
skate %>% ggplot(aes(date, adjusted)) +
geom_line() +
geom_point(alpha= 0.2, size=0.2)+
facet_wrap(~symbol, nrow = 5)+
theme_economist()+
scale_x_date()+
labs(title = "Skateboard Industry Adjusted Stock Prices 2002 to 2018")

skate %>% ggplot(aes(date, volume)) +
geom_line(color = "black") +
facet_wrap(~symbol, nrow = 5)+
theme_economist()+
labs(title = "Skateboard Industry Volume")

skate %>% ggplot(aes(adjusted)) +
geom_histogram(bins = 30) +
facet_wrap(~symbol, nrow = 5)+
theme_economist()+
labs(title = "Skateboard Industry Adjusted Price Histograms")

vans = skate %>% filter(date > mdy(01012012) & symbol == "VFC") %>% select(date, adjusted)
colnames(vans) = c("ds", "y")
vans$adjusted = log10(vans$y)
library(prophet)
m <- prophet(vans)
Disabling daily seasonality. Run prophet with daily.seasonality=TRUE to override this.
Initial log joint probability = -13.2182
Optimization terminated normally:
Convergence detected: relative gradient magnitude is below tolerance
future <- make_future_dataframe(m, periods = 365)
forecast <- predict(m, future)
|==========================================|100% ~0 s remaining
library(plotly)
ggplotly(
plot(m, forecast) + theme_economist() + labs(title = "Vans Footwear Adjusted Stock Price Forecast", x = "Date", y = "Adjusted Stock Price"))
We recommend that you use the dev version of ggplot2 with `ggplotly()`
Install it with: `devtools::install_github('hadley/ggplot2')`
prophet_plot_components(m, forecast)

Nike forecast
Nike = skate %>% filter(date > mdy(01012012) & symbol == "NKE") %>% select(date, adjusted)
colnames(Nike) = c("ds", "y")
vans$adjusted = log10(vans$y)
library(prophet)
m2 <- prophet(Nike)
Disabling daily seasonality. Run prophet with daily.seasonality=TRUE to override this.
Initial log joint probability = -6.39235
Optimization terminated normally:
Convergence detected: relative gradient magnitude is below tolerance
future2 <- make_future_dataframe(m2, periods = 365)
forecast2 <- predict(m2, future)
|==========================================|100% ~0 s remaining
plot(m2, forecast2) + theme_economist() + labs(title = "Nike Adjusted Stock Price Forecast", x = "Date", y = "Adjusted Stock Price")

prophet_plot_components(m2, forecast2)

library(sparklyr)
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKIyMgUiBUaW1lIHNlcmllcyBleGFtcGxlcy4KCiMjIDEpIEFwcGxlIFN0b2NrIFByaWNlIAoKCiogU3RhcnQgYnkgaW1wb3J0aW5nIHRoZSBwcm9wZXIgbGlicmFyaWVzIGFuZCBsb2FkaW5nIGluIHNvbWUgZGF0YSB0byBzdGFydCB3aXRoLiBJIHN0YXJ0IGJ5IHB1bGxpbmcgQXBwbGUgc3RvY2sgcHJpY2VzIGZyb20gMTk5MCB1cCB0byB0b2RheS4gIFN0b2NrIG1hcmtldCBkYXRhIGlzIGZ1biBhbmQgZWFzeSB0byBwbGF5IHdpdGguCgpgYGB7ciwgd2FybmluZz1GQUxTRX0KIyBMb2FkIGxpYnJhcmllcwpsaWJyYXJ5KHN3ZWVwKSAgICAgICMgQnJvb20tc3R5bGUgdGlkaWVycyBmb3IgdGhlIGZvcmVjYXN0IHBhY2thZ2UKbGlicmFyeShmb3JlY2FzdCkgICAjIEZvcmVjYXN0aW5nIG1vZGVscyBhbmQgcHJlZGljdGlvbnMgcGFja2FnZQpsaWJyYXJ5KHRpZHlxdWFudCkgICMgTG9hZHMgdGlkeXZlcnNlLCBmaW5hbmNpYWwgcGtncywgdXNlZCB0byBnZXQgZGF0YQpsaWJyYXJ5KHRpbWV0aykgICAgICMgRnVuY3Rpb25zIHdvcmtpbmcgd2l0aCB0aW1lIHNlcmllcwpsaWJyYXJ5KHRpZHl2ZXJzZSkgICMgRnVuY3Rpb25zIGZvciBkYXRhIGFuYWx5c2lzCgpBQVBMID0gdHFfZ2V0KCJBQVBMIiwgZ2V0ID0gInN0b2NrLnByaWNlcyIsIGZyb20gPSAiIDE5OTAtMDEtMDEiKQpoZWFkKEFBUEwpCmBgYAoKQXBwbGUgQ2xvc2luZyBmcm9tIDE5OTAgdXAgdG8gdG9kYXkuICBJbiBnZW5lcmFsIGl0IGxvb2tzIGxpa2UgdGhlcmUgaXMgYW4gdXB3YXJkIHRyZW5kIGluIHByaWNlLiAKCmBgYHtyfQpBQVBMICU+JSAKICBnZ3Bsb3QoYWVzKGRhdGUsIGFkanVzdGVkKSkrCiAgZ2VvbV9saW5lKCkrCiAgbGFicyh0aXRsZSA9ICJBcHBsZSBBZGp1c3RlZCBDbG9zaW5nIFN0b2NrIFByaWNlIiwgeCA9ICJEYXRlIiwgeSA9ICJBUFBMICAgQ2xvc2UgUHJpY2UiKSArIAogIHRoZW1lX2Vjb25vbWlzdCgpICsgCiAgc3RhdF9zbW9vdGgobWV0aG9kID0gImxvZXNzIiwgYWxwaGEgPSAwLjIpCmBgYAoKSSBuZXh0IGxvb2sgYXQgdGhlIHRyYWRpbmcgdm9sdW1lIG9mIEFwcGxlIHN0b2NrLiAgSSdsbCBzdGFydCBieSBwbG90dGluZyBhIGhpc3RvZ3JhbSBvZiB0aGUgY2xvc2luZyBwcmljZS4gIAoKIApgYGB7cn0KQUFQTCAlPiUgCiAgZ2dwbG90KGFlcyh2b2x1bWUpKSArCiAgZ2VvbV9oaXN0b2dyYW0oYmlucyA9IDEwMCkrCiAgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gbWVhbihBQVBMJHZvbHVtZSksIGNvbG9yID0gInNhbG1vbiIpKwogIHRoZW1lX2Vjb25vbWlzdCgpKwogIGxhYnModGl0bGUgPSAiSGlzdG9ncmFtIG9mIEFBUEwgVm9sdW1lIikKYGBgCgojIyAyKSBaaWxsb3cgSG9tZSBWYWx1ZSBJbmRleCBWZXJtb250OgoKYGBge3IsIHdhcm5pbmc9RkFMU0V9ClZUX2hvbWUgPQogICAgIlpJTExPVy9TNDZfVFVSTkFIIiAlPiUKICAgIHRxX2dldChnZXQgID0gInF1YW5kbCIsCiAgICBmcm9tID0gIjIwMDgtMDEtMDEiKQpgYGAKCmBgYHtyfQpWVF9ob21lICU+JSBnZ3Bsb3QoYWVzKGRhdGUsIHZhbHVlKSkrCiAgZ2VvbV9saW5lKCkrCiAgbGFicyh0aXRsZSA9ICJaaWxsb3cgSG9tZSBWYWx1ZSBJbmRleCAoU3RhdGUpOiIsIHN1YnRpdGxlID0gIlR1cm5vdmVyIC0gICBBbGwgSG9tZXMgLSBWZXJtb250IiwgeCA9ICJZZWFyIiwgeT0gIlppbGxvdyBIb21lIFZhbHVlIEluZGV4IikrCiAgdGhlbWVfZWNvbm9taXN0KCkKICAKYGBgCgojIyAzKSBTa2F0ZWJvYXJkIEluZHVzdHJ5IFN0b2NrIEFuYWx5c2lzIAoKU3RvY2tzIGNvbnRhaW5lZDoKCiogVmFucyBGb290d2VhciBDb21wYW55IC0gVkZDCgoqIFNlcXVlbnRpYWwgQnJhbmRzIEdyb3VwIC8gRFZTIC0gU1FCRwoKKiBOaWtlIC0gTktFCgoqIEljb25peCAvIFpvbyBZb3JrIC0gSUNPTgoKKiBadW1pZXogUmV0YWlsIC0gWlVNWgoKYGBge3J9CnN5bWJvbHMgPSBjKCJWRkMiLCAiU1FCRyIsICJOS0UiLCAiSUNPTiIsICJaVU1aIikKCnNrYXRlID0gc3ltYm9scyAlPiUgIHRxX2dldChnZXQgPSAic3RvY2sucHJpY2VzIiwgZnJvbSA9ICIgMjAwMi0wMS0wMSIpCmBgYAoKCmBgYHtyLCBmaWcuaGVpZ2h0PSAxMCwgZmlnLndpZHRoPTEyfQpza2F0ZSAlPiUgZ2dwbG90KGFlcyhkYXRlLCBhZGp1c3RlZCkpICsKZ2VvbV9saW5lKCkgKwpnZW9tX3BvaW50KGFscGhhPSAwLjIsIHNpemU9MC4yKSsKZmFjZXRfd3JhcCh+c3ltYm9sLCBucm93ID0gNSkrCnRoZW1lX2Vjb25vbWlzdCgpKwpzY2FsZV94X2RhdGUoKSsKbGFicyh0aXRsZSA9ICJTa2F0ZWJvYXJkIEluZHVzdHJ5IEFkanVzdGVkIFN0b2NrIFByaWNlcyAyMDAyIHRvIDIwMTgiKQpgYGAKCmBgYHtyLCBmaWcuaGVpZ2h0PSAxMCwgZmlnLndpZHRoPTEyfQpza2F0ZSAlPiUgZ2dwbG90KGFlcyhkYXRlLCB2b2x1bWUpKSArCmdlb21fbGluZShjb2xvciA9ICJibGFjayIpICsKZmFjZXRfd3JhcCh+c3ltYm9sLCBucm93ID0gNSkrCnRoZW1lX2Vjb25vbWlzdCgpKwpsYWJzKHRpdGxlID0gIlNrYXRlYm9hcmQgSW5kdXN0cnkgVm9sdW1lIikKYGBgCgpgYGB7ciwgZmlnLmhlaWdodD0gMTAsIGZpZy53aWR0aD0xMn0Kc2thdGUgJT4lIGdncGxvdChhZXMoYWRqdXN0ZWQpKSArCmdlb21faGlzdG9ncmFtKGJpbnMgPSAzMCkgKwpmYWNldF93cmFwKH5zeW1ib2wsIG5yb3cgPSA1KSsKdGhlbWVfZWNvbm9taXN0KCkrCmxhYnModGl0bGUgPSAiU2thdGVib2FyZCBJbmR1c3RyeSBBZGp1c3RlZCBQcmljZSBIaXN0b2dyYW1zIikKYGBgCgpgYGB7cn0KdmFucyA9IHNrYXRlICU+JSBmaWx0ZXIoZGF0ZSA+IG1keSgwMTAxMjAxMikgJiBzeW1ib2wgPT0gIlZGQyIpICU+JSBzZWxlY3QoZGF0ZSwgYWRqdXN0ZWQpCmNvbG5hbWVzKHZhbnMpID0gYygiZHMiLCAieSIpCnZhbnMkYWRqdXN0ZWQgPSBsb2cxMCh2YW5zJHkpCmBgYAoKYGBge3J9CmxpYnJhcnkocHJvcGhldCkKbSA8LSBwcm9waGV0KHZhbnMpCmZ1dHVyZSA8LSBtYWtlX2Z1dHVyZV9kYXRhZnJhbWUobSwgcGVyaW9kcyA9IDM2NSkKZm9yZWNhc3QgPC0gcHJlZGljdChtLCBmdXR1cmUpCmBgYAoKCmBgYHtyfQpsaWJyYXJ5KHBsb3RseSkKZ2dwbG90bHkoCnBsb3QobSwgZm9yZWNhc3QpICsgdGhlbWVfZWNvbm9taXN0KCkgKyBsYWJzKHRpdGxlID0gIlZhbnMgRm9vdHdlYXIgQWRqdXN0ZWQgU3RvY2sgUHJpY2UgRm9yZWNhc3QiLCB4ID0gIkRhdGUiLCB5ID0gIkFkanVzdGVkIFN0b2NrIFByaWNlIikpCmBgYAoKYGBge3J9CnByb3BoZXRfcGxvdF9jb21wb25lbnRzKG0sIGZvcmVjYXN0KSAKYGBgCgpOaWtlIGZvcmVjYXN0IAoKYGBge3J9Ck5pa2UgPSBza2F0ZSAlPiUgZmlsdGVyKGRhdGUgPiBtZHkoMDEwMTIwMTIpICYgc3ltYm9sID09ICJOS0UiKSAlPiUgc2VsZWN0KGRhdGUsIGFkanVzdGVkKQpjb2xuYW1lcyhOaWtlKSA9IGMoImRzIiwgInkiKQp2YW5zJGFkanVzdGVkID0gbG9nMTAodmFucyR5KQpgYGAKCmBgYHtyfQptMiA8LSBwcm9waGV0KE5pa2UpCmZ1dHVyZTIgPC0gbWFrZV9mdXR1cmVfZGF0YWZyYW1lKG0yLCBwZXJpb2RzID0gMzY1KQpmb3JlY2FzdDIgPC0gcHJlZGljdChtMiwgZnV0dXJlKQpgYGAKYGBge3J9CnBsb3QobTIsIGZvcmVjYXN0MikgKyB0aGVtZV9lY29ub21pc3QoKSArIGxhYnModGl0bGUgPSAiTmlrZSBBZGp1c3RlZCBTdG9jayBQcmljZSBGb3JlY2FzdCIsIHggPSAiRGF0ZSIsIHkgPSAiQWRqdXN0ZWQgU3RvY2sgUHJpY2UiKQpgYGAKCmBgYHtyfQpwcm9waGV0X3Bsb3RfY29tcG9uZW50cyhtMiwgZm9yZWNhc3QyKSAKYGBgCgpgYGB7cn0KbGlicmFyeShzcGFya2x5cikKCmBgYAoK