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

平均と標準偏差は時間変化するので価格は定常ではない。