「古いExcelファイルにCHIINVっていう関数が残っていたんだけど、これって今でも使っていいの?」
そんな質問を後輩から受けて、答えに詰まった経験はありませんか?
カイ二乗検定の数式によく登場するのに、Excelの関数の挿入ダイアログでは「互換性」フォルダに格納されています。
最近の解説記事も意外と少なく、そのまま使い続けて問題ないのか迷うところですよね。
かといってCHISQ.INV.RTに書き換えるべきか、判断に困る場面もあると思います。
そんなときに役立つのが、この記事で解説するCHIINV関数です。
CHIINVはカイ二乗(χ²)分布の右側確率の逆関数で、検定の棄却域の境界値(臨界値)を返してくれる関数です。
この記事ではCHIINVの基本構文と、CHISQ.INV.RTへの置き換え方を解説します。
適合度検定・独立性検定での実践例、自由度ごとの臨界値早見表、エラー対処もまとめて掲載しています。
検定の現場でそのまま使える内容になっているので、ぜひ最後までご覧ください。
CHIINV関数とは?カイ二乗分布の右側確率の逆関数
CHIINV関数(読み方: カイ・インバース)は、カイ二乗(χ²)分布の右側確率の逆関数を返す関数です。
「CHI」はギリシャ文字のχ(カイ)、「INV」は「Inverse(逆)」の略です。
合わせて「カイ二乗の逆関数」という意味になります。
Excel 2007以前ではこのCHIINVが標準の関数でした。
Excel 2010で関数名がCHISQ.INV.RTに変更されています。
ただし互換性のためCHIINVもそのまま残されており、Microsoft 365を含む現行のExcelで問題なく動作します。
NOTE
CHIINVは「互換性関数」フォルダに分類されています。新しく数式を組む場合は後継のCHISQ.INV.RT関数の利用が推奨されますが、既存のブックでCHIINVを使い続けても結果は同じです。
CHIINVが返す値のイメージ
カイ二乗分布のグラフをイメージしてください。
横軸にχ²の値、縦軸に確率密度をとると、右に裾を引いた山型のグラフになります。
CHIINVは、「右側に分布の何%を残すか」を指定すると、その境界となるχ²の値を返してくれる関数です。
たとえば「右側に5%を残す境界(=有意水準5%の臨界値)」を求めたいなら =CHIINV(0.05, df) と入力します。
つまり、検定でいう棄却域の境界値(臨界値)を、関数ひとつで取り出せるわけです。
CHIDIST関数(右側確率)との関係
CHIINVは、対になる関数 CHIDIST関数 のちょうど逆の働きをします。
| 関数 | 入力 | 出力 |
|---|---|---|
| CHIDIST | χ²の値, 自由度 | 右側確率(p値) |
| CHIINV | 右側確率, 自由度 | χ²の値(臨界値) |
実務での使い分けは次のようになります。
CHIDISTで観測されたχ²のp値を出し、CHIINVでその有意水準の臨界値を出して両者を比較するイメージです。
CHIINV関数の基本的な使い方
構文
=CHIINV(probability, deg_freedom)
| 引数 | 必須 | 内容 |
|---|---|---|
| probability | 必須 | カイ二乗分布の右側確率(0以上1以下) |
| deg_freedom | 必須 | 自由度(1以上の整数。10^10 未満) |
引数は2つだけで、第1引数に「右側確率」、第2引数に「自由度」を渡します。
シンプルな例
有意水準5%(α=0.05)、自由度3のカイ二乗検定で棄却域の境界値を求めてみます。
=CHIINV(0.05, 3)
結果は 約 7.8147 です。
これは「自由度3のカイ二乗分布で、右側に5%を残す境界のχ²の値が7.8147である」という意味になります。
つまり、検定統計量χ²を計算してこの値以上であれば、有意水準5%で帰無仮説を棄却できる、と判断できます。
計算結果の意味
CHIINVが返す値は、確率の世界から「臨界値」というχ²の値の世界への変換結果です。
有意水準が小さくなるほど(α=0.05 → 0.01)、より右側の境界を求めることになるので、戻り値は大きくなります。
| 自由度 | α=0.05 | α=0.01 |
|---|---|---|
| 3 | 7.8147 | 11.3449 |
| 5 | 11.0705 | 15.0863 |
「厳しめの基準で検定する=より大きなχ²でないと棄却できない」というイメージが、数値からも読み取れますね。
CHISQ.INV.RTへの置き換え方(推奨)
書き換えはCHIINV→CHISQ.INV.RTにするだけ
CHIINVをCHISQ.INV.RT関数に置き換える手順は、関数名を変えるだけのシンプルな作業です。
引数の順序・意味はまったく同じなので、機械的に置き換えてOKです。
=CHIINV(0.05, 3) ← 旧
=CHISQ.INV.RT(0.05, 3) ← 新(推奨)
どちらも結果は約7.8147で完全に一致します。
なぜ置き換えが推奨されるのか
Microsoftが互換性関数の利用を非推奨にしているのには、主に次の理由があります。
- 後継関数(CHISQ.INV.RT)は計算アルゴリズムが改善されており、極端な引数での精度が高い
- 関数名から「右側(RT=Right Tailed)の逆関数」であることが明示的に分かる
- 新しい数式は後継関数で書くのがMicrosoftの公式推奨
実務上の数値の差はほぼありませんが、新規でブックを作る場合や数式を整理するタイミングで置き換えておくと安心です。
一括置換のやり方
シート内のCHIINVをまとめてCHISQ.INV.RTに置換する手順です。
- 置換したいシート(または範囲)を選択する
Ctrl + Hで「検索と置換」ダイアログを開く- 検索する文字列に
CHIINV(、置換後の文字列にCHISQ.INV.RT(を入力 - 「すべて置換」をクリック
IMPORTANT
検索文字列に末尾の
(を含めるのがポイントです。CHIINVだけで検索すると、もし他のセルに「CHIINV関数とは…」のような説明テキストがあった場合まで誤って置換してしまいます。CHIINV(まで含めれば、関数として使われている箇所だけを安全に置換できます。
実務での使い方|カイ二乗検定の棄却域を求める
CHIINV関数の最大の使いどころは、カイ二乗検定の臨界値を求める場面です。
代表的な2つのパターンを見てみましょう。
適合度検定の棄却域
「サイコロを60回振って各目が10回ずつ出るはずだが、実際の度数と理論度数にズレはあるか?」という検定が適合度検定の典型例です。
| 出目 | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| 観測度数 | 8 | 12 | 7 | 14 | 9 | 10 |
| 期待度数 | 10 | 10 | 10 | 10 | 10 | 10 |
このケースでは、
- カテゴリ数 = 6 なので、自由度 df = 6 – 1 = 5
- 有意水準 α = 0.05 とする
- 棄却域の境界値 =
=CHIINV(0.05, 5)→ 約 11.0705
検定統計量χ²はカテゴリごとに (観測 - 期待)^2 / 期待 を計算して合計します。
合計値が11.0705以上であれば「サイコロは公平でない」と結論づけられる、というわけです。
独立性検定の棄却域
「性別と特定商品の購入有無に関連はあるか?」のような2変数のクロス集計を検定するのが独立性検定です。
| 購入した | 購入しなかった | |
|---|---|---|
| 男性 | 30 | 20 |
| 女性 | 25 | 25 |
2×2のクロス集計の場合、
- 自由度 df = (行数-1) × (列数-1) = 1 × 1 = 1
- 有意水準 α = 0.05
- 棄却域の境界値 =
=CHIINV(0.05, 1)→ 約 3.8415
3×4のクロス集計なら df = 2 × 3 = 6 となり、臨界値は =CHIINV(0.05, 6) で約12.5916と求められます。
クロス表のサイズが変わっても自由度を計算してCHIINVに渡すだけで臨界値が出るので、検定実務がぐっとラクになります。
自由度・有意水準ごとの臨界値早見表
実務でよく使う有意水準と自由度の組み合わせをまとめた早見表です。
すべて =CHIINV(α, df) または =CHISQ.INV.RT(α, df) で計算した値で、小数第4位まで掲載しています。
| 自由度 df | α=0.10 | α=0.05 | α=0.025 | α=0.01 | α=0.005 |
|---|---|---|---|---|---|
| 1 | 2.7055 | 3.8415 | 5.0239 | 6.6349 | 7.8794 |
| 2 | 4.6052 | 5.9915 | 7.3778 | 9.2103 | 10.5966 |
| 3 | 6.2514 | 7.8147 | 9.3484 | 11.3449 | 12.8382 |
| 4 | 7.7794 | 9.4877 | 11.1433 | 13.2767 | 14.8603 |
| 5 | 9.2364 | 11.0705 | 12.8325 | 15.0863 | 16.7496 |
| 6 | 10.6446 | 12.5916 | 14.4494 | 16.8119 | 18.5476 |
| 7 | 12.0170 | 14.0671 | 16.0128 | 18.4753 | 20.2777 |
| 8 | 13.3616 | 15.5073 | 17.5345 | 20.0902 | 21.9550 |
| 9 | 14.6837 | 16.9190 | 19.0228 | 21.6660 | 23.5894 |
| 10 | 15.9872 | 18.3070 | 20.4832 | 23.2093 | 25.1882 |
TIP
早見表の値はあくまで参考用です。検定をするときは、自分のケースの自由度・有意水準でCHIINVをセルに入力して計算した方が、コピペミスもなく確実です。
CHIINV・CHISQ.INV.RT・CHISQ.INV の違い
カイ二乗分布の逆関数は、Excelに3つ用意されています。
似た名前で混乱しやすいので、ここで整理しておきましょう。
比較表
| 関数 | 入力する確率 | 返す値 | 状態 |
|---|---|---|---|
| CHIINV | 右側確率 | χ²の臨界値 | 互換性関数(旧) |
| CHISQ.INV.RT | 右側確率 | χ²の臨界値 | 推奨(新) |
| CHISQ.INV | 左側確率 | χ²の臨界値 | 推奨(新) |
CHIINVとCHISQ.INV.RTは中身は同じで、ただ名前が新旧で違うだけです。
CHISQ.INV は「左側確率」を入力する関数なので、用途が異なります。
左側確率を扱う場合
P(X ≤ x) = 確率 を満たすxを求めたいときはCHISQ.INV関数を使います。
たとえば「左側に2.5%を残す境界」(信頼区間の下限などで使う)は次のように書けます。
=CHISQ.INV(0.025, df)
右側と左側は次の関係で互いに変換できます。
CHISQ.INV.RT(p, df) = CHISQ.INV(1 - p, df)
具体例で確認してみましょう。
| 関数 | 計算結果 |
|---|---|
=CHISQ.INV.RT(0.05, 5) | 約 11.0705 |
=CHISQ.INV(0.95, 5) | 約 11.0705 |
確かに同じ値が返ってきますね。
普段の検定では右側を使うことがほとんどなので、CHIINV / CHISQ.INV.RT を覚えておけば十分です。
CHIINV関数で起こりやすいエラーと対処法
CHIINV関数で出やすい代表的なエラーと、その対処法をまとめました。
| エラー | 主な原因 | 対処法 |
|---|---|---|
#NUM! | probability が 0未満 or 1超 | 0以上1以下の値に修正する |
#NUM! | deg_freedom が 1未満 | 自由度を1以上に修正。クロス表の場合は (行数-1)×(列数-1) を再確認 |
#NUM! | deg_freedom が極端に大きい | 10^10 を超えると返らない。実務では参照ミスを疑う |
#VALUE! | 引数が文字列になっている | 数値が入ったセルを参照しているか確認 |
| 結果が想定と大きく違う | probability と 自由度を逆に指定している | 第1引数=確率、第2引数=自由度の順序を確認 |
WARNING
一番多いミスが第1引数と第2引数の取り違えです。
たとえば自由度5で有意水準5%の臨界値を求めるつもりで=CHIINV(5, 0.05)と書いてしまうと、#NUM!エラーが出ます。
「最初は確率(0〜1の小数)、次に自由度(整数)」の順番を強く意識してください。
また、自由度に小数を指定した場合はエラーにはならず、整数部分のみが採用されて小数部分は切り捨てられます。
たとえば =CHIINV(0.05, 3.7) は =CHIINV(0.05, 3) と同じ結果になります。
意図しない切り捨てを防ぐため、自由度には整数を渡すようにしましょう。
まとめ|CHIINVは右側確率からχ²の臨界値を逆算する関数
CHIINV関数のポイントを最後に整理しておきます。
- CHIINVはカイ二乗分布の右側確率の逆関数で、χ²検定の棄却域の境界値(臨界値)を返す
- 構文は
=CHIINV(probability, deg_freedom)。第1引数が右側確率、第2引数が自由度 - Excel 2010以降はCHISQ.INV.RTが推奨。書き換えは関数名だけ変えればOK(引数は同じ)
- 「右側」を扱うのがCHIINV / CHISQ.INV.RT、「左側」を扱うのがCHISQ.INV
- 対関数の CHIDIST と組み合わせると、p値も臨界値も同じシートで完結する
実務でカイ二乗検定をする場面は意外と多くあります。
CHIINVは自由度と有意水準を入れるだけで臨界値が出る、シンプルで強力な関数です。
早見表と一緒に覚えておきましょう。
新規ブックではCHISQ.INV.RTを使うのがおすすめです。
既存ブックのCHIINVは無理に書き換えなくてもOKという運用が、一番ラクで実務的だと思います。
