decadence

個人のメモ帳

Tips08(R, mysql, 時系列モデル)

Rによる階層的クラスタリング

> di <- iris[,1:4] : 特徴量
> res <- iris[,5] : 結果
> hc <- hclust(dist(di), method="ward") : 差分を取り,ward法でクラスタリング
> plot(hc)
> classes <- cutree(hc, 3) : デンドログラムから3つに分ける
> mixtable <- table(res, classes) : クラスタリングと結果の比較
> mixtable
                 classes
  res            1    2    3
  setosa      50   0    0
  versicolor  0   50   0
  virginica    0   14  36


最遠隣法は第1クラスタのサンプル数が多くなったりしてしまう.->チェーン現象

その他のR

read.csv(...) : header=Fで1行目の入力有無
rnorm : 正規分布に基づく乱数
scale : 平均0, 分散1になるよう標準化
ts : 時系列オブジェクト
arima : ARIMA用オブジェクト

というか,RStudio開いてめぼしい関数見つけてhelp開けば全てが分かる...

mysqlのバッチ処理

大量のクエリをバッチ処理として実行させる.
ある条件の元作成したテーブルをcsvとして出力させる処理.
//queries.txt

SELECT id, count(*) as day_count, time FROM database.table WHERE id > 100 group by id having day_count > 100 INTO OUTFILE "/<path>/hoge1.csv" FIELDS TERMINATED BY ',' ENCLOSED BY '"'  ESCAPED BY '\\' LINES  TERMINATED BY '\r\n';
SELECT id, count(*) as day_count, time FROM database.table WHERE id < 100 group by id having day_count > 100 INTO OUTFILE "/<path>/hoge2.csv" FIELDS TERMINATED BY ',' ENCLOSED BY '"'  ESCAPED BY '\\' LINES  TERMINATED BY '\r\n';
SELECT id, count(*) as day_count, time FROM database.table WHERE id = 100 group by id having day_count > 100 INTO OUTFILE "/<path>/hoge3.csv" FIELDS TERMINATED BY ',' ENCLOSED BY '"'  ESCAPED BY '\\' LINES  TERMINATED BY '\r\n';
...

書き出し先のファイルは絶対パス
mysqlにログイン後

> source /<path>/queries.txt

でバッチ処理としてqueryが一つずつ実行される.
書き出しで無い場合は標準出力に結果がtsvのように出るため,パイプで繋いでどこかに書き出しても良い.

時系列モデル

将来の値を予測するために用いるもの

  • AR : Autoregressive
  • MA : Moving Average
  • ARCH : AutoRegressive Conditional Heteroscedastic

残りは,それらの上位互換及びそれぞれを合わせた,何かを加えたもの.
I (ex ARIMA) : Integrated
Seasonal, GARCH, F, E, and so on

モデルには定常時系列を用いなくてはならない.仮に非定常時系列ならある種の変換を施し,定常時系列に直す.

  • >分散にばらつきがある時 => 対数変換or平方根変換
  • >上昇トレンドをもつ => 階差を取る
  • >周期がある => 季節階差を取る

変数がランダムウォーク(単位根過程)であるかを調べるために単位根検定が必要になる.

  • >PPtest

解析は以下の流れで行われる
背景->目的->方法->分析
ある程度こうなったら良いなどという結果を予測出来たら良い

参考
How to use TimeSeries - TokyoWebMining #17
http://www.slideshare.net/horihorio/howtousetimeseries