Rで簡単な変化点検知(changepointパッケージ)
最近kaggleをやりはじめました。
その時に、簡単な変化点検知が必要となった。
changepointパッケージを使った簡単な変化点検知のメモ。
changepointパッケージは、
- change in variance
- change in mean
- change in mean and variance
の三つがある。
今回の目的には、change in meanが合ってる。
以下Rコード
y=data ansmean=cpt.mean(y) plot(ansmean,cpt.col='blue',type="o") abline(v=ansmean@cpts[1]+0.5,col=3) print(ansmean)
結果
Class 'cpt' : Changepoint Object ~~ : S4 class containing 12 slots with names cpttype date version data.set method test.stat pen.type pen.value minseglen cpts ncpts.max param.est Created on : Fri Apr 21 18:46:22 2017 summary(.) : ---------- Created Using changepoint version 2.2.2 Changepoint type : Change in mean Method of analysis : AMOC Test Statistic : Normal Type of penalty : MBIC with value, 18.50883 Minimum Segment Length : 1 Maximum no. of cpts : 1 Changepoint Locations : 182
データは実際のkaggleのデータ。レストランの来店人数の予測をしないといけない。
縦軸はlog(人数+1)としている。
なんかいい感じに推定してくれた。ありがたい。
penaltyは"SIC", "BIC", "MBIC", AIC", "Hannan-Quinn", "Asymptotic", "Manual", "CROPS"から選べる。
methodは"AMOC", "PELT", "SegNeigh", "BinSeg"から選べる。
ちなみに、
change in varianceはcpt.var()
change in mean and varianceはcpt.meanvar()
を使うと良い。
簡単に変化点を検出する場合は便利。
この結果は、MCMCの事前分布に入れる。
kaggleの調子はどうなんだって?
聞かないでください。