次は変化率を計算していきます。
変化率の基本的定義は(Xn-Xn-1)/Xn-1 ×100であらわされます。
この式はなにをしているのかというと、前日に比べて変化した数値を今日の数値で割ったものを、%で表すために100を掛けているだけです。
時系列オブジェクトの差をとる場合は、 diff( )関数と、期をずらしたラグ(lag)をとる lag( ) 関数を用います。今回は前日からの変化なので階差をとるのでdiff関数を使用します。
そして、変化率は最大値と最小値の差が大きく作図するとグチャグチャになってしまうことがあるので、変化率は変化幅を小さく、そして変動具合をほぼ正確に近似することのできる自然対数にlog()で変換してから作図(plot)します。(自然対数については【統計学】 自然対数と複利計算を参照))
変化率を計算します。
>bamnam2 = diff(log(bamnam[,4]))*100 ##株価の変化率(収益率)を求める
すると下の図のようになります。
>plot(bamnam2)
次はこの対数でとった変化率を、確率密度推計します。
(確率密度推計については下の記事を参照)
ここで忘れていたのですが、確率密度を計算する上で欠損値があるとうまく計算してくれないので欠損値を削除します。(計算がうまくいかないときはたいていデータのどこかに欠損値があるかデータの種類がおかしいなので、基本的に欠損値NAはデータを作ったときにすぐ削除しておきましょう。)
> bamnam2
Close
2005-09-29 NA ←こいつ!!
2005-09-30 -0.52770571
2005-10-03 -7.98222734
> y <- bamnam2[!is.na(bamnam2)] ##欠損値の削除
> y
Close
2005-09-30 -0.52770571
2005-10-03 -7.98222734
はい、無事削除できました。
というわけでプロットしていきます。
> plot(density(y)),main="確率密度") ##確率密度推定
ヒストグラムの形が、階級幅の変化によって変化するように、カーネル法によって推定された確率密度の形状も、バンド幅(X軸の値の取り方)によって変化します。density()は、このX軸の数値幅をデータから適切になるように、自動的に算出してくれます。
変化率の計算と確率密度推定は時系列データの取り扱いの超基本なので大切です。次は時系列データにおいて回帰分析にあたる自己回帰モデル(ARモデル)について解説します。