JavaScriptでデータ分析。ーモナカプレス技術情報JavaScriptでデータ分析。統計処理ライブラリjStatで集計データ分析アプリを作るJavaScriptでデータ分析。有名ですが、実はJavaScriptでもデータ分析ができるんです!今回はJavaScriptの統計処理ライブラリ「jStat」を利用して、データを集計し、そのデータを元に分析を行うアプリをMonacaで作ってみたいと思います。データ分析とはそもそも、データ分析はどういった場面で役立つのでしょうか。ひとつの例をもとに説明したいと思います。例として、店頭で本を購入してくれた人にはおまけをプレゼントするキャンペーンを実施したとします。おまけには、以下の3種類を用意しました。どれかひとつだけ好きなものをもらえる、という制限つきです。もなかチョコモナカレトルトカレーどのおまけを選んだ人が多いのかを集計したところ、以下のような結果が得られました。306レトルトカレーが一番人気だったので、「レトルトカレーをプレゼントするのがもっとも効果的である」と思うのではないでしょうか。この情報だけでは「たまたま今回はレトルトカレーを選んだ人がちょっと多かっただけなんじゃないの?プレゼントなんてどれを配ろうと大差ないんじゃないの?」と考える人もいるかもしれません。そこで「いや、たまたまとかじゃなくて、マジで全然違ったんだって!」という主張を裏付けるために役立つのがデータ分析です。「たまたまとかじゃなくてマジで違いがある」ことを専門的な言い方で「統計的に有意な差がある」といいます。variance)」と、もなかとチョコモナカ、もなかとレトルトカレー、といったようにそれぞれの組み合わせにおける差を比較する「テューキーの多重比較検定」がよく用いられます。今回作るアプリ起動時は以下の状態になっています。ラベルをタップすると、名称を変更できます。「+」ボタン、「-」ボタンで集計数をカウントします。「保存」ボタンで1日分の集計データをローカルストレージに保存します。「合計の確認」ボタンで各グループ毎の合計数を表示します。「分析結果の確認」ボタンで分析を実行します。以下のライブラリを利用しています。UIjQueryjStatそれぞれのライブラリはMonacaの「JS/CSSコンポーネントの追加と削除」画面から追加してください。チェックを入れればOKです。JSON.stringify(items));alert('保存しました');}};ポイントは、ローカルストレージへの保存形式です。以下のように、日付ごとに集計データを保存しています。[48,62,68]}分析機能のソースコード「分析結果の確認」ボタン押下時に、分散分析とテューキーの多重比較検定を行います。)引数にはもなかやチョコモナカといった各グループ毎の集計データを配列で渡します。ローカルストレージには日付毎の集計データが保存されています。利用して配列の行列を入れ替え、グループ毎の集計データに変換しています。jStatにはこのようなユーティリティメソッドも豊富に用意されています。複数の配列を可変長引数として受け取ります。メソッドで二次元配列を可変長形式に変換したうえで引数を渡しています。あるオブジェクトが持つメソッドを別のオブジェクトが持っているかのように振る舞わせるための命令で、実行時に二次元配列形式で渡した引数が可変長形式に変換されるという特性があります。メソッドを実行しています。戻り値はp値(有意確率)です。一般的に、p値が1~5%未満であれば統計的に有意であると判定するケースが多いようです。今回は5%を基準として採用しました。異なり、二次元配列形式で引数を渡せます。戻り値は以下の形式になります。それぞれの組み合わせにおけるp値が返却されます。チョコモナカとカレー]有意水準を5%とした場合、もなかとチョコモナカ間には統計的に有意な差はなく、もなかとカレー間、チョコモナカとカレー間には統計的に有意な差があるという結果になりました。このことから、レトルトカレーは他のプレゼントよりも効果的であるということがわかります。jStatは今回紹介した分析手法の他にも、T検定やZ検定などの様々な分析機能を提供しています。よると、回帰分析も今後提供される予定だそうです。このように、JavaScriptの統計処理ライブラリを利用することで手軽に分析機能を実装することができます。既存のアプリに組み込むのも容易なので、ぜひ試してみてください。開発の参考になれば幸いです。ところで・・・モナカレーキャンペーンにはもう応募されましたか?"アプリ開発者のための旨辛豆カレー"と銘打ったモナカレー、「スパイスが効いていてやみつきになる!」と各所で評判です。クイズにお答え頂いた方の中から抽選で300名様にプレゼントしています。UIエバンジェリスト。代表的は著書は『スラスラわかるJavaScript』(翔泳社)など。ジオフェンシングにも最適。