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として出力させる処理.
/
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'; ...
> 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