library("segmented")
library("ggplot2")
# Data from:
# https://finance.yahoo.com/quote/%5EGSPC/history?period1=-630950400&period2=1546416000&interval=1d&filter=history&frequency=1d
sp500 <- read.csv("^GSPC.csv")
sp500$Date <- as.Date(sp500$Date)
sp500$x <- as.numeric(sp500$Date)
sp500$log_price <- log(sp500$Adj.Close)
m1 <- lm(log_price ~ x, data = sp500)
# settings from help(segmented)
o <- segmented.lm(m1,seg.Z=~x,psi=list(x=NA),
control=seg.control(stop.if.error=FALSE,n.boot=0, it.max=20))
sp500$spred <- exp(predict(o, newdata = sp500))
ggplot(data = sp500, aes(x = Date)) +
geom_line(aes(y=Adj.Close), color = "darkgray") +
geom_line(aes(y=spred), color = "darkgreen") +
ggtitle("segmented approximation of historic sp500 data") +
theme(legend.position = "none") +
scale_color_brewer(palette = "Dark2") +
scale_y_log10()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.