Rで相関係数を測る題材として、ジェスチャーの軌跡のデータを使ってみました。ユーザのなんらかの振る舞いを識別する意図ですが、データが取得しやすいマウスの動きの差異に着眼しました。
a1, a2: 円形の描画
b1, b2: 三角の描画
あえて近い動きにトライしました。
> a1<-read.table(“a1.csv”, sep=”,”)
> a2<-read.table(“a2.csv”, sep=”,”)
> b1<-read.table(“b1.csv”, sep=”,”)
> b2<-read.table(“b2.csv”, sep=”,”)
それぞれplotしてみます。
データ数を揃えて、単純にx,y別々に相関係数を測ってみました。
> dim(a1)
[1] 63 3
> dim(a2)
[1] 106 3
> dim(b1)
[1] 75 3
> dim(b2)
[1] 106 3> a1x<-approx(a1[,1], a1[,2],n=100)
> a1y<-approx(a1[,1], a1[,3],n=100)
> b1x<-approx(b1[,1], b1[,2],n=100)
> b1y<-approx(b1[,1], b1[,3],n=100)> a2x<-approx(a2[,1], a2[,2],n=100)
> a2y<-approx(a2[,1], a2[,3],n=100)
> b2x<-approx(b2[,1], b2[,2],n=100)
> b2y<-approx(b2[,1], b2[,3],n=100)> cor(a1x$y, a2x$y)
[1] 0.9905204
> cor(a1y$y, a2y$y)
[1] 0.9929844
> cor(b1x$y, b2x$y)
[1] 0.8621487
> cor(b1y$y, b2y$y)
[1] 0.9720394
> cor(a1x$y, b1x$y)
[1] 0.8606694
> cor(a2x$y, b2x$y)
[1] 0.9010704
> cor(a1y$y, b1y$y)
[1] 0.8947821
> cor(a2y$y, b2y$y)
[1] 0.9067105
だいたいa1とa2,b1とb2は近い関係になっていますが、bのxだけ期待と違いました。
相関が近い中の識別には、もうすこし判定につかう要素を増やす必要がありそうです。
マウス操作のデータ取得には、Processingを使いました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
PrintWriter file; void setup() { size(400, 400); background(255); file = createWriter("data.csv"); } void draw() {} int i = 0; int cnt = 0; void mouseDragged() { stroke(255-i, 255-i, 255-i); fill(0,0,100 + i, 20); ellipse(mouseX, mouseY, 40+i/10, 40+i/10); i += 3; file.println(cnt + "," + mouseX + "," + mouseY); cnt ++; } void mouseReleased(){ file.flush(); file.close(); } |