統計的検定を利用する
統計解析において、ある分布と別の分布が違うことを調べるには「検定」というものを利用します。この場合は「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年になる。
昔の専門が宇宙物理学であったからか、趣味は数理科学、特に統計学、確率論。最近は数理疫学の学習。ただし、数理科学全般への浮気をしがち。また、文理のジャンルを超えた真性書痴である。スポーツは主にスイミング、種目はフリースタイルの長距離。ただし、最近は惰性になりがち。
アカデミックに愛想がつき、在宅勤務に飽きがきて、西海岸でインド人と喧嘩をし、東海岸でカンヅメにされたのも懲りずに、東京で好き勝手にやらせてもらってます。平日午前中から水泳行ったり……。
結婚十余年。子供は一男一女。
![]() |
4/4 |
Index | |
Rは統計解析のブッシュナイフだ | |
Page1 統計解析の必要性とリテラシー データが豊富に入手できる時代 Rで楽しく統計リテラシーを身に付ける グーグルでも使われているR |
|
Page2 連載の前口上と小理屈 何よりもまず、実践的な統計解析を体験してみる 誕生月によってJリーガーになりにくくなるのか? |
|
Page3 誕生月分布のプロット グラフの印象ではなく、定量的に議論するには |
|
![]() |
Page4 次回について 統計的検定を利用する |
Coding Edgeお勧め記事 |
![]() |
いまさらアルゴリズムを学ぶ意味 コーディングに役立つ! アルゴリズムの基本(1) コンピュータに「3の倍数と3の付く数字」を判断させるにはどうしたらいいか。発想力を鍛えよう |
![]() |
Zope 3の魅力に迫る Zope 3とは何ぞや?(1) Pythonで書かれたWebアプリケーションフレームワーク「Zope 3」。ほかのソフトウェアとは一体何が違っているのか? |
![]() |
貧弱環境プログラミングのススメ 柴田 淳のコーディング天国 高性能なIT機器に囲まれた環境でコンピュータの動作原理に触れることは可能だろうか。貧弱なPC上にビットマップの直線をどうやって引く? |
![]() |
Haskellプログラミングの楽しみ方 のんびりHaskell(1) 関数型言語に分類されるHaskell。C言語などの手続き型言語とまったく異なるプログラミングの世界に踏み出してみよう |
![]() |
ちょっと変わったLisp入門 Gaucheでメタプログラミング(1) Lispの一種であるScheme。いくつかある処理系の中でも気軽にスクリプトを書けるGaucheでLispの世界を体験してみよう |

- プログラムの実行はどのようにして行われるのか、Linuxカーネルのコードから探る (2017/7/20)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。最終回は、Linuxカーネルの中では、プログラムの起動時にはどのような処理が行われているのかを探る - エンジニアならC言語プログラムの終わりに呼び出されるexit()の中身分かってますよね? (2017/7/13)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。今回は、プログラムの終わりに呼び出されるexit()の中身を探る - VBAにおけるFileDialog操作の基本&ドライブの空き容量、ファイルのサイズやタイムスタンプの取得方法 (2017/7/10)
指定したドライブの空き容量、ファイルのタイムスタンプや属性を取得する方法、FileDialog/エクスプローラー操作の基本を紹介します - さらば残業! 面倒くさいエクセル業務を楽にする「Excel VBA」とは (2017/7/6)
日頃発生する“面倒くさい業務”。簡単なプログラミングで効率化できる可能性がある。本稿では、業務で使うことが多い「Microsoft Excel」で使えるVBAを紹介する。※ショートカットキー、アクセスキーの解説あり
![]() |
||
|
||
![]() |
Coding Edge 記事ランキング
- Visual Studioに「GPT-5」搭載 旧モデル「o1」「GPT-4.5」「o3-mini」「GPT-4o」は段階的に廃止
- 生成AI活用の落とし穴「精度」を上げる方法、プロンプト設計の失敗例とその対処法をDifyで学ぶ
- C言語とは? 5つの“学習するメリット”を分かりやすく解説
- AWSが「Amazon Q Developer」にCLIとカスタムエージェント機能を追加
- 「Visual Studio Code」と「Ollama」で簡単に始められる、安心・安全なローカルAI活用術
- Python“独走時代”の裏で、ベテラン言語たちが息を吹き返す? 2025年7月版プログラミング言語人気ランキング
- OpenAIが「GPT-5」を発表 「Cursor」「Windsurf」「Codex CLI」などに最適化
- ノーコードで実現! DifyでカスタマーサポートAIチャットbotを作成する
- Ruby開発者の挑戦をたたえる「Ruby biz Grand prix 2025」 エントリー企業を発表
- そもそもプログラミング言語とは? 代表的な言語の特徴と用途を分かりやすく解説
- Python“独走時代”の裏で、ベテラン言語たちが息を吹き返す? 2025年7月版プログラミング言語人気ランキング
- そもそもプログラミング言語とは? 代表的な言語の特徴と用途を分かりやすく解説
- 生成AI活用の落とし穴「精度」を上げる方法、プロンプト設計の失敗例とその対処法をDifyで学ぶ
- 「Claude Code」にカスタマイズ可能な「サブエージェント」機能が登場
- Google、「Firebase Studio」をAIで大幅強化 開発者の役割はどう変化する?
- 「Visual Studio Code」と「Ollama」で簡単に始められる、安心・安全なローカルAI活用術
- 自然言語でWebアプリを構築できる「GitHub Spark」 パブリックプレビュー版をGitHubがリリース
- C言語とは? 5つの“学習するメリット”を分かりやすく解説
- Visual Studioに「GPT-5」搭載 旧モデル「o1」「GPT-4.5」「o3-mini」「GPT-4o」は段階的に廃止
- 経験豊富な開発者が最も苦労しているタスクは? Dockerが開発者の生産性について調査