Rで確率・統計の中級 〜 株価の分布
価格分布を描く。
> T6758_AdjClose<-T6758$YJ6758.T.Adjusted > head(T6758_AdjClose) YJ6758.T.Adjusted 1983-01-04 1586.36 1983-01-05 1595.45 1983-01-06 1577.27 1983-01-07 1590.91 1983-01-08 1581.82 1983-01-10 1563.64 > T6758_MeanAdjClose<-mean(T6758_AdjClose) > T6758_SdAdjClose<-sd(T6758_AdjClose) > hist(T6758_AdjClose, breaks=100, prob=T, cex.main=0.9) # ヒストグラムを描く > abline(v=T6758_MeanAdjClose, lwd=2) # グラフに平均を追記 > legend("topright", cex=0.8, border=NULL, bty="n", paste("mean", T6758_MeanAdjClose, "; sd=", T6758_SdAdjClose)) #グラフに凡例を入れる
この手順を関数で記述しておく。
> plot_price_ranges <- function(data, start_date, end_date, title){ + par(mfrow = c(2,2)) + for(i in 1:4){ + range<-paste(start_date[i], "::", end_date[i], sep = "") + time_series <- data[range] + mean_data <- round(mean(time_series, na.rm = TRUE), 3) + sd_data <- round(sd(time_series, na.rm = TRUE), 3) + hist_title <- paste(title, range) + hist(time_series, breaks = 100, prob=TRUE, xlab="", main = hist_title, cex.main =0.8) + legend("topright", cex=0.7, bty='n', paste("mean", mean_data, "; sd=", sd_data)) + } + par(mfrow=c(1,1)) + }
次の引数で実行。
> begin_dates<-c("2010-01-01", "2011-01-01", "2012-01-01", "2013-01-01") > end_dates<-c("2010-12-31", "2011-12-31", "2012-12-31", "2013-12-31") > plot_price_ranges(T6758_AdjClose, begin_dates, end_dates, "T6758.AdjClose for:")
平均と標準偏差は時間変化するので価格は定常ではない。