ExcelのCHITEST関数の使い方|カイ二乗検定のp値を返す旧式関数(後継: CHISQ.TEST)

スポンサーリンク

「古いExcelブックに入っている=CHITEST(...)という関数、新しいExcelで開いても大丈夫?」
こんな疑問を持ったことはありませんか?

旧式のCHITEST関数を見ると、CHISQ.TESTに書き換えるべきか迷ってしまいますよね。
そのままにしてレポートを作り直したら数値が変わってしまわないかも気になります。

そんなときに役立つのがExcelのCHITEST関数の正しい理解です。
この記事では基本の書き方から実務での活用例まで解説します。
適合度検定・独立性検定の両方の使い方を、数値例つきで整理しました。
後継のCHISQ.TEST関数との違いや、旧CHIDIST・CHIINVとの組み合わせ方もあわせて紹介しますよ。

ExcelのCHITEST関数とは?カイ二乗検定のp値を返す旧式関数

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

CHITEST関数はExcel 2003以前から提供されていた歴史ある関数です。
Excel 2010以降はCHISQ.TEST関数にリニューアルされました。
ただし旧CHITESTもそのまま現行Excelで動きます。古いブックを開いても計算結果は変わりませんよ。

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

  • 旧Excelブック(2007以前)で作られた検定数式をそのまま使う
  • アンケートの回答に偏りがあるかを判定する(適合度検定)
  • 2つのカテゴリに関連があるかを調べる(独立性検定)
  • クロス集計表からダイレクトにp値を算出する
  • χ²統計量と自由度の手計算を省く

NOTE

CHITEST関数はExcelの全バージョン(2003以前から最新のMicrosoft 365まで)で使えます。
Excel 2010以降は互換性関数という扱いで、新規作成ではCHISQ.TEST関数の使用が推奨されています。
計算結果は両関数で完全に一致するので、既存ブックの数式を急いで書き換える必要はありません。

CHITEST関数の書き方(構文と引数)

基本構文

=CHITEST(実測範囲, 期待範囲)

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

引数の説明

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

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

TIP

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

CHITESTが返す値の意味

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

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

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

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

TIP

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

CHITEST関数の基本的な使い方

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

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

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

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

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

=CHITEST(B2:B7, C2:C7)

結果は約 0.4934 です。

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

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

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

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

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

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

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

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

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

CHITEST関数の実践的な使い方・応用例

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

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

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

実測値(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に置いて、CHITEST関数を呼びます。

=CHITEST(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に入れたあと右と下にコピーすると、表全体の期待値が一発で完成します。

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

=CHITEST(B2:D4, G2:I4)

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

TIP

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

旧CHIDIST・CHIINVと組み合わせる(旧ブック保守の鉄板パターン)

旧Excelブックを保守するときに役立つのが、CHITEST・CHIDIST・CHIINVの3点セットです。
古いマニュアルで作られた検定レポートをそのまま動かすときに使えます。

先ほどの性別×商品(2行2列)の例で、レポート用テーブルを作ってみましょう。

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

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

3つの旧関数はすべて現行Excelで動きます。
新しく数式を作るならCHISQ.TESTCHISQ.DIST.RTCHISQ.INV.RTを使う方が将来的にも安心です。

CHITESTで出したp値とχ²値を並記する

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

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

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

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

=CHIDIST(9.0909, 1)   → 0.00257(CHITESTと同じ値)

CHITESTとCHIDISTは内部的に同じ計算をしているので、結果は完全に一致します。
レポート用に「χ²値・自由度・p値」の3項目を横並びで配置すると、検定レポートとしての体裁が整いますよ。

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

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

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

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

=CHITEST(B2:B8, C2:C8)

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

TIP

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

よくあるエラーと対処法

#N/Aエラー

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

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

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

#NUM!エラー

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

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

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

#VALUE!エラー

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

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

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

#NAME?エラー

関数名のスペルミスや、全角文字が混じったときに発生します。

=CHITEST(B2:B7, C2:C7)   → #NAME?エラー(CHITESTを「CHTEST」など誤入力)

CHITEST関数は全バージョンのExcelで使えます。ただし「I」抜けや「TEST」のスペルミスがあると認識されません。
セル参照を含めて半角英字で入力されているかを確認してくださいね。

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

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

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

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

CHITEST・CHISQ.TEST・CHIDIST・CHIINV関数の違いと使い分け

旧関数と新関数の対応表

カイ二乗分布関連の旧関数(互換性関数)は、それぞれ後継関数に置き換えられています。
計算結果はすべて同じです。

旧関数(互換)新関数(推奨)用途
CHITESTCHISQ.TEST範囲から直接p値
CHIDISTCHISQ.DIST.RTχ²値→右側累積確率
CHIINVCHISQ.INV.RT右側累積確率→χ²値

旧関数の代替対応は、関数名を置き換えるだけで完了します。

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

NOTE

Microsoft公式のヘルプでは、Excel 2010以降で互換性関数のCHITESTより精度が高くなった新CHISQ.TESTが推奨されています。
ただし旧CHITESTも将来的なバージョンで動くよう維持されているため、既存ブックの数式を急いで書き換える必要はありません。

CHITESTとCHISQ.TESTの関係

CHITESTとCHISQ.TESTは、引数も計算結果もまったく同じです。
次の2つの式は完全に同じ値を返します。

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

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

  • 既存の旧ブックを保守する: CHITEST(書き換え不要)
  • 新しくレポートを作成する: CHISQ.TEST(推奨)
  • Excel 2007以前で開く可能性がある: CHITEST(CHISQ.TESTは旧バージョンで#NAME?)
  • 共有ブックで全バージョン互換にしたい: CHITEST

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

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

関数入力出力主な用途
CHITEST実測範囲, 期待範囲p値(右側確率)範囲から一発でカイ二乗検定(旧式)
CHISQ.TEST実測範囲, 期待範囲p値(右側確率)CHITESTの後継
CHIDISTカイ二乗値, 自由度右側累積確率χ²値からp値(旧式)
CHISQ.DIST.RTカイ二乗値, 自由度右側累積確率CHIDISTの後継
CHIINV右側累積確率, 自由度カイ二乗値有意水準αから臨界値(旧式)
CHISQ.INV.RT右側累積確率, 自由度カイ二乗値CHIINVの後継

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

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

他の検定関数との比較

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

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

関連関数の一覧

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

まとめ

CHITEST関数は、実測値と期待値の範囲を渡すだけでカイ二乗検定のp値を直接返してくれる旧式関数です。
Excel 2003以前から使われてきた歴史ある関数で、現行Excelでも互換性関数として動き続けます。

この記事のポイント

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

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

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