
Contents
この記事を読んでできること
この記事では、CursorというAIエディタを使ってRを動かし、χ² 検定を行います。最終的には、一切コードを書かずにAIへの指示のみで、集計表の作成とχ² 検定とフィッシャー検定まで行えるようになることを目指します。
AIエディタを使えば、AIに指示するだけで全ての解析がおどろくほど簡単に完了します。
AIエディタについてもう少し詳しく知りたい方はこちらをご覧ください。
本記事と同じ解析環境を準備する手順は下記の記事で詳細に解説しています。
χ² 検定とフィッシャー検定の手順
本記事の解析環境
- AIエディタ: Cursor (Version 0.44.8)
- モデル: gemini-2.0-flash-exp
以下のステップで分析を進めていきます。
- データセットの準備:
palmerpenguins
データセットを読み込み、データの構造を確認します。 - クロス集計表の作成:
species
とsex
のクロス集計表を作成します。 - χ²検定の実施:
species
とsex
についてχ²検定を行います。 - フィッシャー検定の実施:
species
とsex
についてフィッシャー検定を行います。 - χ² 検定とフィッシャー検定の使い分け 2つの手法を使い分ける基準を説明します。
解析時にエラーが出て困ったときに読む記事もあるのでご安心ください。 それでは、早速分析を始めましょう。

1. データセットの準備
今回は、Rに標準で付属しているpalmerpenguins
パッケージのpenguins
データセットを使用します。このデータセットには、ペンギンの身体測定データが含まれており、変数間の関連性を評価するのに適しています。

(Ctrl+K) palmerpenguinsパッケージの’penguins’データを読み込んで、’df’という名前で保存する。
※必要に応じてpalmerpenguinsパッケージをインストールしてください。
library(palmerpenguins)
df <- penguins
変数名 | 説明 |
species | ペンギンの種(アデリー、ヒゲペンギン、ジェンツー) |
island | ペンギンが観測された島(ビスコー、ドリーム、トーガーセン) |
bill_length_mm | くちばしの長さ (mm) |
bill_depth_mm | くちばしの深さ (mm) |
flipper_length_mm | 翼の長さ (mm) |
body_mass_g | 体重 (g) |
sex | ペンギンの性別(メス、オス) |
year | 観測年 (2007, 2008, 2009) |
2. クロス集計表の作成
χ² 検定やフィッシャー検定を用いるデータ形式
χ² 検定は、カテゴリカルデータ(名義尺度や順序尺度)の関連性を評価する検定です。
クロス集計表(分割表)と呼ばれる各セルに頻度が入ったデータを使用します。
ftable
関数は、複数のカテゴリカル変数の組み合わせの頻度を、簡単に表形式にまとめることができます。

(Ctrl+K) dfの`species`と`sex`のクロス集計表を作成
ftable(df$species, df$sex)
female male
Adelie 73 73
Chinstrap 34 34
Gentoo 58 61
3. χ²検定

(Ctrl+K) `species`と`sex`についてχ²検定を行う
chisq.test(df$species, df$sex)
Pearson's Chi-squared test
data: df$species and df$sex
X-squared = 0.048607, df = 2, p-value = 0.976
Rでは、先程作成したクロス集計表を作らなくても、データフレームの2つのカテゴリカル変数を指定するだけでχ² 検定ができます。
χ² 検定は、クロス集計表の中に期待度数が5未満のセルが全体が存在するときは適切でないとされています(ただし、期待度数が5以下のセルがあっても、それが全体の20%以下であれば、期待度数の最小値が1程度までは許容される)。
chisq.test
の出力では、いずれかのセルの期待度数が 5 未満の場合、警告が表示されます。
各セルの期待度数も簡単に調べることができます。

(Ctrl+K) セルの期待度数を確認。
chisq <- chisq.test(df$species, df$sex)
chisq$expected
df$sex
df$species female male
Adelie 72.34234 73.65766
Chinstrap 33.69369 34.30631
Gentoo 58.96396 60.03604
4. フィッシャー検定
フィッシャーの正確確率検定や、フィッシャーの直接確率法など呼び方は様々です。 フィッシャー検定は正規分布を仮定せず、正確に確率を近似する手法です。全体的にP値が大きくなりやすく、検定で棄却しにくい(保守的である)という特徴があります。

(Ctrl+K) `species`と`sex`についてフィッシャー検定を行う
fisher.test(df$species, df$sex)
df$sex
df$species female male
Adelie 72.34234 73.65766
Chinstrap 33.69369 34.30631
Gentoo 58.96396 60.03604
> fisher.test(df$species, df$sex)
Fisher's Exact Test for Count Data
data: df$species and df$sex
p-value = 0.979
alternative hypothesis: two.sided
フィッシャー検定のp値は0.979
と、χ² 検定とほぼ同じ結果になりました。
5. χ² 検定とフィッシャー検定の使い分け
今回のようにサンプルサイズが比較的大きなデータでは,χ² 検定とフィッシャー検定のp値はほぼ同じになることが多いです。一方で、小さなサンプルサイズのデータでは,p値の差が大きくなりやすいです。 先に述べたように、χ² 検定は、経験則としてすべての期待度数が 1 より大きく、かつ、期待度数が5未満のセルが全体の20%以下であるときに妥当であるとされているため、期待度数が5以下のセルが存在する場合はフィッシャー検定を使用し、そうでなければχ²検定を選択することが多いです。
コメント