統計パッケージR
ここ最近、業務でちょっとした将来予測をたてる必要があったので、統計パッケージを探していました。使用する統計の手法は周期の概念を持つ指数平滑法のひとつ、Holt-Winters法を選択しました。これだと、年度末は売り上げが増えるといった要素を予測に盛りこむことができます。
WindowsだとSPSSを使ったりするわけですが、Linuxで実行する手立てはないか探っていたところ、「R」なるソフトが見つかりました。
R-2.4.1.tar.gzを最寄りのミラーサイトからダウンロード・展開したあと、configure、make、make installで問題なく導入できました。これで、ターミナルから「R」と入力すれば起動できます。
ただこの「R」、研究用ソフト特有のとっつきにくさがあり、使いかたを把握するのに時間がかかってしまいました。学生時代はMathematicaをかじったり、Haskellのようなマイナー系プログラミング言語をいじったりはしていたのですが・・・
まず、過去三年分の数値を月単位で出し、number.csvというCSVファイル形式で保存します。
"Number"
"100"
"120"
"90"
"10"
"200"
・・・略
Rを起動します。
$ R
先ほどのCSVファイルを読み込み、xというオブジェクトに収納します。
> x <- read.csv('number.csv, header=T)
xを時系列オブジェクトxxに変換します。ここでは、最初のデータが2000年1月のものと仮定しています。freq=12は一年の12分割という意味です。
> xx <- ts(x, start=c(2000,1),freq=12)
正常に読み込めているのか、print(xx) で確認できます。以下のようになっていればうまくいっています。
> print(xx)
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2000 xxx xxx xxx(略)
これで準備が揃いました。このデータを基に、HoltWinters関数を適用します。実際のところ、Holt-Wintersにはいくつかの変数があり、それをどのように仮定するかで精度も変わってくるのですが、関数に渡すときに指定しないでおくとRが最適値を自動で算出してくれます。
> HoltWinters(xx)
Smoothing parameters:
alpha: 0.1240778
beta : 1
gamma: 0.3418427
Coefficients:
[,1]
a 211.528592
b 3.156385
s1 -85.053213
(略)
あとは、この結果をもとに予測値を計算します。こちらはpredict関数を実行すればすぐにできます。
> xxx<-HoltWinters(xx)
> predict(xxx, n.ahead=12)
n.aheadは、何個までの予測をするかを指定しています。ここでは12個先、つまり1年後までの数字を出しています。
以上で、簡単なRの使いかたの説明を終わりにします。




コメント