MIRACLE
メールサービス申込 ユーザー登録 パートナー情報
お問い合わせ FAQ サイトマップ
MIRACLE LINUXの特長 製品紹介 サービス案内 購入 サポート 技術フォーラム

プロフィール

ミラクル・リナックス株式会社営業・マーケティング部所属。

Linux, OSSに関するマーケティング情報から英語のニュースまで、幅広いトピックを扱っていきます。

ミラクル関連リンク

採用情報

サイト検索

最近のトラックバック

2008年8月

          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

« キャッシュフロー勉強中 | メイン | 「フリーランスを代表して 申告と節税について教わってきました。」を読んで »

2007年3月15日 (木)

統計パッケージR

ここ最近、業務でちょっとした将来予測をたてる必要があったので、統計パッケージを探していました。使用する統計の手法は周期の概念を持つ指数平滑法のひとつ、Holt-Winters法を選択しました。これだと、年度末は売り上げが増えるといった要素を予測に盛りこむことができます。

WindowsだとSPSSを使ったりするわけですが、Linuxで実行する手立てはないか探っていたところ、「R」なるソフトが見つかりました。

http://cran.r-project.org/

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の使いかたの説明を終わりにします。

トラックバック

このページのトラックバックURL:
http://www.typepad.jp/t/trackback/4447/6851390

このページへのトラックバック一覧 統計パッケージR:

コメント

コメントを投稿

会社情報 採用情報 個人情報保護方針 商標等取り扱い事項 English
Copyright(c)2000-2006 MIRACLE LINUX CORPORATION. All Rights Reserved.