Rは統計解析のブッシュナイフだ:実践! Rで学ぶ統計解析の基礎(1)(4/4 ページ)
今ほど統計解析が必要とされる時代はありません。オープンソースの統計処理言語・環境の「R」を使って実践的な統計解析のテクニックとリテラシーを習得しましょう! 読者にとってRは、世に溢れるデータの密林を切り開くための“ブッシュナイフ”となることでしょう(編集部)
統計的検定を利用する
統計解析において、ある分布と別の分布が違うことを調べるには「検定」というものを利用します。この場合は「Jリーガーの月別出生数分布は日本人の月別出生数分布と同じである」かどうかを統計学的に検査するのです。
統計学的に違いを指摘するやり方と、日常生活で違いを指摘するやり方は大分違います。統計学的には検査をしたい仮説を「帰無仮説」(きむかせつ)と呼び、この帰無仮説が統計学的な条件を満たすかどうかという回りくどい検査を行って、違いを指摘することになります。詳しい具体的な方法はこの連載で順次たっぷり解説します。ここでは、まずはそういうものがあるとして、Rでどうやって「Jリーガーの月別出生数分布は日本人の月別出生数分布と同じである」という検定をするか、というのを先に提示します。そのほうが、変なモヤモヤが少ない気がしますので。
まず検定でも、近似的な検定方法であるカイ二乗検定を用いて、「Jリーガーの月別出生数分布は日本人の月別出生数分布と同じである」という帰無仮説の検定を行ないます。それには、chisq.testというRに組み込みのカイ二乗検定関数を利用して、以下のようにします。カイ二乗検定や、それが近似的であるということについては、次回の統計的検定を取り上げるときに説明しますので、今はそういうものがあるという風に思っていてください。
> prob <- japrecent/sum(japrecent) > chisq.test(data.jleagers,p=prob) Chi-squared test for given probabilities data: data.jleagers X-squared = 89.5624, df = 11, p-value = 2.031e-14
chisq.testの第1引数には「Jリーガーの月別出生数分布」を入れ、第2引数には「日本人の月別出生数分布」を全体の数で割った割合を入れます。第2引数のprob変数には「日本人の月別出生数」を表すjaprecentを、それ自身の和(sum関数を適用してある)で割っています。これは「日本人の月別出生数」の確率密度分布と解釈できます。
ちなみに、このsum関数のように、Rではベクトルやリストやマトリックスに対して直接演算をする関数を多く備えています(ただし、これはループを隠蔽化しているだけで、ベクトルプロセッサを直接使う機能はありませんので、ベクトル演算の関数を利用してもループに比べて大幅に改善するというわけではありません。ただし、ベクトル演算の関数を利用すると、ループを使った下手なプログラミングが少なくなるという点で、速度は改善するかもしれません)。
この結果を解釈するわけですが、まずはp-valueの数値を見ます。この数値は、第2引数の「日本人の月別出生数分布(の確率密度)」を仮定する場合、第1引数の「Jリーガーの月別出生数分布」が実現する確率はどのくらいか、を表しています。その確率は2.031e-14(10のマイナス14乗)という非常に低い確率になるということです。つまり、このような低い確率では帰無仮説である「Jリーガーの月別出生数分布は日本人の月別出生数分布と同じである」という言明は採用できない、棄却できる、ということです。日本人の出生数分布とJリーガーの出生数分布は異なっているので、Jリーガーになるためには何らかの理由が働いてそうだ、誕生月によってJリーガーになりにくいということがありそうだ、ということが言えそうです。
次回について
今回は連載初回ということで、前口上と方針を述べるのが半分、Rを用いて統計解析を駆け足で実践することが半分となりました。次回は、今回と同様に「誕生月によってJリーガーになりやすくなるのか?」というテーマに基づいて、もう少し統計的検定とRの取り扱いについて掘り下げてみたいと思います。具体的には、なぜ帰無仮説を反証するという回りくどい検査をするのか、カイ二乗検定というのはどういうことをやっているのか、検定は万能なのか、という事項について解説したいと思っています。
著者紹介
バクフー株式会社
柏野雄太(かしの ゆうた)
理学系博士課程単位取得満期退学。研究所、SIベンチャー、ヤフー、ゾープ・ジャパン、オープンソース・ジャパンを経て、バクフー株式会社(www.bakfoo.com)を独立起業。スタートアップとして目が回る毎日。PythonおよびZopeに関わって8年になる。
昔の専門が宇宙物理学であったからか、趣味は数理科学、特に統計学、確率論。最近は数理疫学の学習。ただし、数理科学全般への浮気をしがち。また、文理のジャンルを超えた真性書痴である。スポーツは主にスイミング、種目はフリースタイルの長距離。ただし、最近は惰性になりがち。
アカデミックに愛想がつき、在宅勤務に飽きがきて、西海岸でインド人と喧嘩をし、東海岸でカンヅメにされたのも懲りずに、東京で好き勝手にやらせてもらってます。平日午前中から水泳行ったり……。
結婚十余年。子供は一男一女。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- いまさらアルゴリズムを学ぶ意味
コーディングに役立つ! アルゴリズムの基本(1) - Zope 3の魅力に迫る
Zope 3とは何ぞや?(1) - 貧弱環境プログラミングのススメ
柴田 淳のコーディング天国 - Haskellプログラミングの楽しみ方
のんびりHaskell(1) - ちょっと変わったLisp入門
Gaucheでメタプログラミング(1)