ExcelのCHISQ.TEST関数の使い方|独立性検定・適合度検定のp値を一発で求める

スポンサーリンク

「アンケート結果に偏りがあるかを統計的に判定したいけど、χ²統計量を手で計算するのが面倒…」
こんな悩みを持ったことはありませんか?

実務でカイ二乗検定を使うとき、各セルの (実測値-期待値)²/期待値 を集計する手作業はミスのもとですよね。
自由度の数え方を間違えると、p値が大きく変わってしまいます。

そんなときに使うのがExcelのCHISQ.TEST関数です。
この記事では基本の書き方から実務での活用例まで解説します。
適合度検定・独立性検定の両方の使い方を、数値例つきで整理しました。
CHISQ.DIST.RT関数・CHISQ.INV.RT関数との使い分けや、旧CHITEST関数との互換性もあわせて紹介しますよ。

ExcelのCHISQ.TEST関数とは?カイ二乗検定のp値を直接返す関数

ExcelのCHISQ.TEST関数(読み方: カイ・スクエア・テスト)は、カイ二乗検定のp値を直接返す関数です。
実測値と期待値のセル範囲を渡すだけで、p値が一発で得られます。
「CHISQ」は「Chi-Square(カイ二乗)」、「TEST」は「検定」の略ですね。

カイ二乗検定は「観測データと期待値のズレが、偶然で説明できる範囲かどうか」を判定する統計手法ですね。
通常はχ²統計量を自分で計算してからCHISQ.DIST.RT関数でp値を求めます。
CHISQ.TEST関数を使えば、この2ステップを1関数にまとめられます

CHISQ.TEST関数にできることをまとめると、次のとおりです。

  • アンケートの回答に偏りがあるかを判定する(適合度検定)
  • 2つのカテゴリに関連があるかを調べる(独立性検定)
  • クロス集計表からダイレクトにp値を算出する
  • χ²統計量と自由度の手計算を省く
  • 検定レポートで「p値だけ見せたい」ときに最短で値を出す

NOTE

CHISQ.TEST関数はExcel 2010以降で使えます。
Microsoft 365、Excel 2013〜2024のすべてのバージョンに対応しています。
Excel 2007以前では旧CHITEST関数を使ってください。引数の意味も計算結果も同じです。

CHISQ.TEST関数の書き方(構文と引数)

基本構文

=CHISQ.TEST(実測範囲, 期待範囲)

カッコの中に、実測値と期待値の2つのセル範囲を指定します。
χ²値や自由度を自分で計算する必要はありません。両方とも関数が内部で自動算出してくれます。

引数の説明

引数必須/任意説明
実測範囲必須観測されたデータ(実測度数)のセル範囲
期待範囲必須帰無仮説のもとで期待されるデータの範囲

2つの引数はどちらも必須です。省略するとエラーになります。
2つの範囲は同じ行数・同じ列数のセル範囲を指定してください。形が一致しないと#N/Aエラーになります。

TIP

実測範囲と期待範囲は別の場所に並べておくのが扱いやすいです。
たとえば実測値をB列、期待値をC列に並べておき、=CHISQ.TEST(B2:B6, C2:C6)のように指定するとレポートに転記しやすくなりますよ。

CHISQ.TESTが返す値の意味

CHISQ.TEST関数が返すのは、カイ二乗検定のp値(右側累積確率)です。

p値は「帰無仮説(観測値と期待値に差はない)が正しいと仮定したとき、観測されたズレ以上のズレが偶然で起こる確率」を表します。
たとえばp値が0.03なら「3%の確率でしか偶然起こらない結果」という意味ですね。
一般的な有意水準5%(0.05)を下回っているので、「偶然とはいえないほど大きなズレ」と判断できます。

判定の基準はシンプルです。

  • p値 < 0.05: 有意な偏り・関連あり(帰無仮説を棄却)
  • p値 ≧ 0.05: 偶然の範囲(帰無仮説を棄却できない)

TIP

CHISQ.TEST関数が内部で行っているのは、χ²統計量 Σ((実測値-期待値)²/期待値) を計算し、その値をCHISQ.DIST.RT関数で右側確率に変換する2段階の処理です。
自由度は範囲のサイズから自動的に決まります。行数・列数がともに2以上のときは(行数-1)×(列数-1)、1次元配列のときはデータ点数-1になりますよ。

CHISQ.TEST関数の基本的な使い方

ここからは具体的な数値を使って、CHISQ.TEST関数の動きを確認していきましょう。
まずはシンプルな1次元データの適合度検定から始めます。

サイコロの偏りを検定する(適合度検定の最小例)

サイコロを60回振った結果が「公正なサイコロ」と矛盾しないかを判定します。
公正なら各目が10回ずつ出るはずですね。

実測値(B列)期待値(C列)
1810
21210
3710
41510
5910
6910

期待値はすべて10(60÷6)です。空きセルに次の数式を入れます。

=CHISQ.TEST(B2:B7, C2:C7)

結果は約 0.4934 です。

p値が0.4934なので「この程度のばらつきは約49%の確率で偶然起こる」という意味になります。
有意水準5%(0.05)を大幅に上回っているので、「サイコロに偏りがあるとはいえない」と判定できますね。

期待値を変えて結果を比較する

実測値は同じで、期待値だけを変えると結果がどう変わるかを見てみましょう。
たとえば「特定の目が出やすい歪んだサイコロ(4の目に重みあり)」を期待値とすると、次のようになります。

実測値期待値(歪み有り)
188
2128
378
41518
599
699
=CHISQ.TEST(B2:B7, D2:D7)

結果は約 0.5973 です。
歪んだサイコロを想定した期待値のほうが、実測値とのズレが小さくなったためp値が大きくなりました。
「想定したモデルと実測がよく合っている」と読めますね。

実測値・期待値が完全に一致する場合

参考までに、完全に同じ値が並んでいるとどうなるかも見ておきましょう。

実測値: 10, 10, 10, 10, 10, 10
期待値: 10, 10, 10, 10, 10, 10
=CHISQ.TEST(B2:B7, C2:C7)   → 1

ズレが0なのでp値は1(=「偶然性100%」)になります。
理屈どおりの結果ですね。

CHISQ.TEST関数の実践的な使い方・応用例

独立性検定——クロス集計表から関連を判定する

「性別と商品の好みに関連があるか」を調べる独立性検定の例です。
実務でいちばんよく使うパターンですね。

次のクロス集計表があるとします。

実測値(B2:C3)

 商品A商品B
男性3020
女性1535

期待値は「行合計 × 列合計 ÷ 総合計」で計算します。手計算すると次のとおりです。

 商品A商品B
男性50×45÷100 = 22.550×55÷100 = 27.5
女性50×45÷100 = 22.550×55÷100 = 27.5

期待値テーブルをE2:F3に置いて、CHISQ.TEST関数を呼びます。

=CHISQ.TEST(B2:C3, E2:F3)

結果は約 0.00257 です。
有意水準5%を大きく下回るので、「性別と商品の好みには有意な関連がある」と判断できますね。

TIP

独立性検定では、実測値と期待値を同じ行列構造(この例では2行2列)で渡すのがポイントです。
1列に並べ替えてしまうと自由度の自動判定が変わり、p値が変わってしまいます。クロス集計表のままの形で渡してくださいね。

期待値を数式で自動計算する

クロス集計表が大きくなると、期待値を手計算で入れるのは大変です。
合計列・合計行を使った数式で期待値を一気に出してしまいましょう。

実測値表が B2:D4(3行3列)にあり、E列に行合計、5行目に列合計、E5に総合計が入っているとします。

 商品A商品B商品C行合計
男性30202575
女性15353080
学生25202065
列合計707575220

期待値はG2:I4のセル群に次の式を入れます。

=$E2*B$5/$E$5

絶対参照($E2:列固定/B$5:行固定/$E$5:両方固定)の使い分けがポイントです。
G2に入れたあと右と下にコピーすると、表全体の期待値が一発で完成します。

期待値テーブルが完成したら、CHISQ.TEST関数を呼ぶだけです。

=CHISQ.TEST(B2:D4, G2:I4)

3行3列のクロス集計表なので、自由度は (3-1)×(3-1) = 4 が自動で使われます。

TIP

Microsoft 365のスピル機能を使うなら、=MMULT(E2:E4, B5:D5) / E5 のような行列演算で期待値ブロックを1式で生成することもできます。
ただしレポートの可読性を重視するなら、複合参照の式をコピーする方法が分かりやすいですよ。

CHISQ.DIST.RTを併用してχ²統計量も同時に出す

検定レポートでは「p値だけでなくχ²統計量と自由度も明記したい」ことがあります。
CHISQ.TEST関数はp値しか返さないので、χ²値は別の式で求める必要がありますね。

χ²統計量はSUMPRODUCT関数で1式にまとめられます。

=SUMPRODUCT((B2:C3-E2:F3)^2/E2:F3)

先ほどの性別×商品の例で計算すると、結果は約 9.0909 です。
これにCHISQ.DIST.RT関数を組み合わせれば、p値も並んで出せます。

=CHISQ.DIST.RT(9.0909, 1)   → 0.00257(CHISQ.TESTと同じ値)

CHISQ.TESTとCHISQ.DIST.RTは内部的に同じ計算をしているので、結果は完全に一致します。
レポート用には次のテンプレートが便利です。

項目数式結果
χ²統計量=SUMPRODUCT((B2:C3-E2:F3)^2/E2:F3)9.0909
自由度=(2-1)*(2-1)1
p値(CHISQ.TEST)=CHISQ.TEST(B2:C3, E2:F3)0.00257
p値(DIST.RT)=CHISQ.DIST.RT(9.0909, 1)0.00257

CHISQ.TESTで素早くp値を出しつつ、χ²値と自由度を別セルに添えれば検定レポートとしての体裁が整いますね。

CHISQ.INV.RTで臨界値と突き合わせる

p値ベースの判定だけでなく「χ²統計量と臨界値を比較する」古典的な手順もよく使われます。
CHISQ.INV.RT関数で有意水準5%の臨界値を求めて、χ²統計量と比較してみましょう。

項目数式結果
χ²統計量=SUMPRODUCT((B2:C3-E2:F3)^2/E2:F3)9.0909
自由度=(2-1)*(2-1)1
有意水準5%臨界値=CHISQ.INV.RT(0.05, 1)3.8415
p値=CHISQ.TEST(B2:C3, E2:F3)0.00257

χ²統計量(9.0909)が臨界値(3.8415)を超えているので、「有意」と判定できます。
同じ結論をp値からも確認できますね(0.00257 < 0.05)。

両方を併記すると、論文や監査資料でも納得感のあるレポートに仕上がりますよ。

曜日別の問い合わせ件数に偏りがあるかを検定する

実務でよくある「曜日や月で度数に偏りがあるか」の判定例です。
1週間の問い合わせ件数(合計245件)が、曜日に均等に分布しているかを調べます。

曜日実測値期待値
4535
3035
2835
3235
4035
3535
3535

期待値は 245÷7 = 35件 です。

=CHISQ.TEST(B2:B8, C2:C8)

結果は約 0.2863 です。
有意水準5%を上回るので、「曜日による有意な偏りがあるとはいえない」と判定できますね。

TIP

p値が0.05以上だったとき「差がない」と断定するのは避けましょう。
正しくは「有意な差は認められなかった」という表現です。サンプル数が少なくて差が検出されていない可能性もあるためですね。

よくあるエラーと対処法

#N/Aエラー

CHISQ.TEST関数で最もよく見るエラーです。実測範囲と期待範囲のサイズが一致しないと発生します。

原因対策
行数が違う両方の範囲の行数を揃える
列数が違う両方の範囲の列数を揃える
範囲の指定ミスF2キーで数式を編集して、選択範囲を再確認する
=CHISQ.TEST(B2:B6, C2:C7)   → #N/A エラー(実測5件・期待6件で行数不一致)
=CHISQ.TEST(B2:C3, E2:F4)   → #N/A エラー(実測2行・期待3行で行数不一致)
=CHISQ.TEST(B2:B6, C2:C6)   → 正常

クロス集計表の独立性検定では、両方とも m行×n列 の同じ形である必要があります。

#NUM!エラー

期待値に0以下の値が含まれると発生します。

原因対策
期待値に0が含まれる該当カテゴリを除外するか、隣接カテゴリと統合する
期待値がマイナス計算式を見直して正の値が入るように修正する
=CHISQ.TEST(B2:B5, C2:C5)   → C2に0が入っていると #NUM! エラー

カイ二乗検定の計算では各セルで「期待値で割る」処理が走るので、期待値が0だと0除算が発生してしまいます。
期待度数が極端に小さいカテゴリは、隣のカテゴリと統合してから検定するのが定石ですよ。

#VALUE!エラー

引数に数値以外の文字列が含まれると発生します。

=CHISQ.TEST({"A", 12, 7}, {10, 10, 10})   → #VALUE!エラー

セル参照を使う場合は、参照先がすべて数値かを確認してください。
「見た目は数字でも文字列扱い」のセルが混じっていることが多いです。=ISNUMBER(B2)で確認できますよ。

#NAME?エラー

Excel 2007以前で CHISQ.TEST を使うと、ピリオド付きの関数名を認識できずに発生します。

=CHISQ.TEST(B2:B7, C2:C7)   → #NAME?エラー(Excel 2007以前)

このときは旧 CHITEST 関数を使うか、Excelを2010以降にアップデートしてください。
旧CHITEST関数も計算結果は同じです。移行はそのまま関数名を置き換えるだけで済みます。

なお、関数名の「.(ピリオド)」を全角で入力した場合も#NAME?エラーになります。
半角ピリオドで入力されているかも合わせて確認してくださいね。

期待度数が5未満のセルがある(エラーではないが要注意)

カイ二乗検定は、各セルの期待度数が5以上あることが前提とされています。
5未満のセルが多いと検定の精度が下がるため注意してください(コクランの基準)。

状態推奨される対処
期待度数5未満が全体の20%以下そのまま使ってOK
期待度数5未満が全体の20%超カテゴリを統合する
最小期待度数が1未満フィッシャーの正確検定を使う

エラーは出ないので気づきにくい落とし穴です。レポートを書く前に期待値テーブルをざっと確認しておくと安心ですよ。

CHISQ.DIST.RT・CHISQ.INV.RT・旧CHITEST関数との違い・使い分け

カイ二乗分布関連関数の使い分け早見表

カイ二乗分布関連には、用途の違う関数がいくつかあります。
求めたい値や検定の流れに合わせて選びます。

関数入力出力主な用途
CHISQ.TEST実測範囲, 期待範囲p値(右側確率)範囲から一発でカイ二乗検定
CHISQ.DIST.RTカイ二乗値, 自由度右側累積確率χ²値からp値を直接算出
CHISQ.DISTカイ二乗値, 自由度, 関数形式左側確率 or PDF累積確率の計算・PDF描画
CHISQ.INV.RT右側累積確率, 自由度カイ二乗値有意水準αから臨界値
CHISQ.INV左側累積確率, 自由度カイ二乗値信頼区間の下限・左側臨界値
CHITEST実測範囲, 期待範囲p値CHISQ.TESTの旧名(同じ結果)

実務シナリオ別の使い分けは次のとおりです。

  • データ範囲を渡して一気に検定したい: CHISQ.TEST(この記事の関数)
  • χ²統計量を自分で計算してp値だけ欲しい: CHISQ.DIST.RT
  • 有意水準αから臨界値を求めたい: CHISQ.INV.RT
  • 左側確率から臨界値・信頼区間の下限: CHISQ.INV
  • カイ二乗分布のグラフを描きたい: CHISQ.DIST(関数形式FALSEで確率密度)

CHISQ.TESTとCHISQ.DIST.RTの関係

CHISQ.TESTが内部で行っている計算は、χ²統計量を求めてからCHISQ.DIST.RTで右側確率に変換する2段階の処理です。
つまり次の2つの式は同じ結果を返します。

=CHISQ.TEST(B2:C3, E2:F3)
=CHISQ.DIST.RT(SUMPRODUCT((B2:C3-E2:F3)^2/E2:F3), (2-1)*(2-1))

使い分けのポイントは次のとおりです。

  • データ範囲しか手元にない、χ²値はExcelに任せたい: CHISQ.TEST
  • χ²値が論文や教科書から既にわかっている: CHISQ.DIST.RT
  • 検定レポートで「χ²値・自由度・p値」を全部並べたい: 両方併用(χ²値はSUMPRODUCT、p値はCHISQ.TESTで横並び)

旧CHITEST関数との互換性

旧CHITEST関数(Excel 2007以前)は、新CHISQ.TEST関数と引数の意味も計算結果もまったく同じです。
移行は関数名を置き換えるだけで済みます。

項目CHISQ.TEST(新)CHITEST(旧)
引数実測範囲, 期待範囲実測範囲, 期待範囲
戻り値p値(右側確率)p値(右側確率)
計算結果同じ同じ
導入バージョンExcel 2010Excel 2003以前

旧関数の代替対応は次のとおりです。

旧書き方新書き方(同じ結果)
=CHITEST(actual, expected)=CHISQ.TEST(actual, expected)
=CHIDIST(x, df)=CHISQ.DIST.RT(x, df)
=CHIINV(p, df)=CHISQ.INV.RT(p, df)

旧CHITEST関数で作られたブックは、計算結果を変えないかぎり書き換える必要はありません。
新規で数式を作るときはCHISQ.TEST関数群を使ってくださいね。

TIP

CHISQ.TESTファミリーは「ピリオド付き」の新関数名で書けば、Microsoft 365・Excel 2013〜2024のすべてで動きます。
Excel 2007以前のサポートが必要な共有ブックでは、互換のCHITEST/CHIDIST/CHIINVを残す選択もありです。

他の検定関数との比較

カイ二乗検定以外の検定関数とも比較しておきましょう。検定の目的に応じて使い分けます。

検定関数検定の種類対象データ
CHISQ.TESTカイ二乗検定カテゴリデータの偏り・関連
T.TESTt検定2群の平均値の差
F.TESTF検定2群の分散の差
Z.TESTz検定母平均との差(母分散既知)
  • カテゴリデータに偏りがあるか: CHISQ.TEST
  • 2グループの平均に差があるか: T.TEST
  • 2グループのばらつきに差があるか: F.TEST

関連関数の一覧

関数説明
CHISQ.TESTデータ範囲から直接カイ二乗検定のp値
CHISQ.DIST.RTカイ二乗分布の右側累積確率(p値)
CHISQ.DISTカイ二乗分布の左側累積確率 or PDF
CHISQ.INV.RTカイ二乗分布の右側逆関数(確率→x)
CHISQ.INVカイ二乗分布の左側逆関数(確率→x)
CHITESTCHISQ.TESTの旧名
CHIDISTCHISQ.DIST.RTの旧名
CHIINVCHISQ.INV.RTの旧名
T.DISTt分布の左側確率
F.DISTF分布の左側確率

まとめ

CHISQ.TEST関数は、実測値と期待値の範囲を渡すだけでカイ二乗検定のp値を直接返してくれる関数です。
χ²統計量や自由度を自分で計算する手間を一気にカットできるのがいちばんの魅力ですね。

この記事のポイント

  • 構文は =CHISQ.TEST(実測範囲, 期待範囲) の2つの引数を指定する
  • 戻り値はp値(右側累積確率)p < 0.05 で「有意な偏り・関連あり」と判定する
  • 自由度は範囲のサイズから自動算出される(行・列がともに2以上なら(行-1)×(列-1)、それ以外は要素数-1)
  • 適合度検定(1次元)と独立性検定(2次元クロス集計)の両方に使える
  • 期待度数は「行合計×列合計÷総合計」で計算する。複合参照の数式でテーブル化できる
  • χ²値も並記したいときは SUMPRODUCT((実測-期待)^2/期待)CHISQ.DIST.RTを併用する
  • 範囲のサイズが違うと#N/Aエラー、期待値に0があると#NUM!エラー
  • 期待度数が5未満のセルが多いと検定精度が落ちる(コクランの基準)。カテゴリ統合かフィッシャーの正確検定を検討
  • 旧CHITEST関数は完全互換。関数名を置き換えるだけで移行できる

カイ二乗分布関連の関数は使い分けが大事です。
あわせて以下の関数も覚えておくと、検定作業がぐっと楽になりますよ。

タイトルとURLをコピーしました