「HYPGEOMDISTって関数を見つけたけど、HYPGEOM.DISTとどう違うの?」。スプレッドシートで統計関数を使おうとして、こんな疑問を持ったことはありませんか?
名前がよく似た関数が2つあると、どちらを使えばいいか迷いますよね。間違えたら計算結果が変わるのでは、と不安にもなります。
結論から言うと、HYPGEOMDIST関数はHYPGEOM.DIST関数の互換バージョンです。この記事ではGoogleスプレッドシートでのHYPGEOMDIST関数の使い方を、構文・引数から実務活用、そしてよくある疑問まで解説します。HYPGEOM.DIST関数との関係もはっきりさせますよ。
スプレッドシートのHYPGEOMDIST関数とは
HYPGEOMDIST関数(読み方: ハイパージオムディスト関数)は、超幾何分布(ちょうきかぶんぷ)にもとづいて確率を返す互換関数です。「HYPGEOM」は「Hypergeometric(超幾何)」、「DIST」は「Distribution(分布)」の略です。
超幾何分布とは、非復元抽出にもとづく確率分布のことです。非復元抽出とは、取り出したものを戻さずに次を引く方法です。くじ引きで当たりを引いたら袋に戻さずに次を引く場面をイメージしてください。引くたびに残りの枚数が減るので、毎回の当選確率が変わります。
たとえば次のような場面で使います。
- 100個の部品から10個を抜き取って不良品を調べる検査
- 20枚のくじから5枚を引いて当たりが何枚出るかの確率
- 在庫50個のうち不良品が3個あるとき、8個抜き取って全部良品の確率
- アンケート回収500件のうち特定回答100件あるとき、ランダムに50件抽出した場合の含有数の確率
- カードゲームの山札40枚(うち目当てのカード4枚)から手札5枚に1枚以上含まれる確率
NOTE
HYPGEOMDIST関数はHYPGEOM.DIST関数の互換関数です。計算結果はHYPGEOM.DISTのFALSE(確率質量)と同じですが、累積確率は求められません。Googleの公式ドキュメントではHYPGEOM.DISTが推奨されています。新しく数式を書くときはHYPGEOM.DISTを使いましょう。
二項分布(BINOMDIST)との違い
超幾何分布とよく対比されるのが二項分布です。両者は「成功・失敗の2値の試行」という点で似ていますが、決定的な違いは次のとおりです。
| 分布 | 抽出方法 | 試行ごとの成功確率 | 関数 |
|---|---|---|---|
| 超幾何分布 | 非復元抽出(戻さない) | 変動する | HYPGEOMDIST / HYPGEOM.DIST |
| 二項分布 | 復元抽出(戻す) | 一定 | BINOMDIST / BINOM.DIST |
母集団のサイズが標本に対してとても大きいときは、超幾何分布と二項分布の差はほぼなくなります。実務的な目安として、標本サイズが母集団の5%以下なら二項分布で代用できると言われています。
HYPGEOMDIST関数の書き方(構文と引数)
基本構文
=HYPGEOMDIST(成功数, 標本サイズ, 母集団成功数, 母集団サイズ)
カッコの中に4つの引数を指定します。HYPGEOM.DIST関数の5番目の引数(cumulative)がない点が大きな違いです。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 成功数(sample_s) | 必須 | 標本内の成功数(当たりを何個引いたか) |
| 標本サイズ(number_sample) | 必須 | 標本のサイズ(何個引くか) |
| 母集団成功数(population_s) | 必須 | 母集団内の成功数(全体の当たりの数) |
| 母集団サイズ(number_pop) | 必須 | 母集団のサイズ(全体の個数) |
引数の並びは「標本→母集団」の流れです。まず「引いた中の当たり数」「何個引いたか」を指定します。次に「全体の当たり数」「全体の個数」を指定します。
TIP
引数に小数を指定すると、小数部分は切り捨てられます。たとえば2.7は2として処理されますよ。
数式の中身(COMBIN関数とのつながり)
HYPGEOMDIST関数が裏で行っている計算は、組合せの考え方(COMBIN関数)にもとづいています。次のような式で表されます。
=COMBIN(母集団成功数, 成功数) * COMBIN(母集団サイズ-母集団成功数, 標本サイズ-成功数) / COMBIN(母集団サイズ, 標本サイズ)
「当たりの中から成功数を引く組合せ」と「ハズレの中から残りを引く組合せ」をかけて、「全体から標本を引く組合せ」で割っているわけです。HYPGEOMDISTはこの計算を1つの式に閉じ込めてくれているので、自分で組合せを書く必要はありません。
たとえば次の2つの式は同じ結果になります。
=HYPGEOMDIST(2, 5, 3, 10)
=COMBIN(3, 2) * COMBIN(7, 3) / COMBIN(10, 5)
どちらも約0.4167です。理屈を知っておくと、エラーが出たときに原因を見極めやすくなりますよ。
HYPGEOM.DISTとの引数比較
HYPGEOMDIST関数とHYPGEOM.DIST関数の引数を並べて比較してみましょう。
| 引数の位置 | HYPGEOMDIST | HYPGEOM.DIST |
|---|---|---|
| 1番目 | 成功数(sample_s) | 成功数(sample_s) |
| 2番目 | 標本サイズ(number_sample) | 標本サイズ(number_sample) |
| 3番目 | 母集団成功数(population_s) | 母集団成功数(population_s) |
| 4番目 | 母集団サイズ(number_pop) | 母集団サイズ(number_pop) |
| 5番目 | なし | 累積(cumulative) |
最初の4つは同じです。HYPGEOM.DISTだけに5番目のcumulative引数があります。HYPGEOMDISTは常に確率質量(HYPGEOM.DISTのFALSE相当)を返します。
HYPGEOMDIST関数の基本的な使い方
実際に数式を入力して確率を求めてみましょう。10枚のくじがあり、そのうち3枚が当たりです。5枚引いたときに、ちょうど2枚が当たる確率を計算します。
=HYPGEOMDIST(2, 5, 3, 10)
結果は約0.4167(41.7%) です。5枚引けばほぼ半分の確率で2枚当たることがわかります。
各当たり枚数の確率も見てみましょう。
| 当たり枚数 | 数式 | 確率 |
|---|---|---|
| 0枚 | =HYPGEOMDIST(0, 5, 3, 10) | 0.0833(8.3%) |
| 1枚 | =HYPGEOMDIST(1, 5, 3, 10) | 0.4167(41.7%) |
| 2枚 | =HYPGEOMDIST(2, 5, 3, 10) | 0.4167(41.7%) |
| 3枚 | =HYPGEOMDIST(3, 5, 3, 10) | 0.0833(8.3%) |
1枚当たりと2枚当たりの確率がもっとも高く、同じ値になっています。合計するとちょうど1.0000(100%)になりますよ。
セル参照で値を変えて試す
引数を直接書くよりも、セル参照を使うほうが実務的です。次のように表を組むと、母集団サイズや成功数を変えるだけで再計算できます。
| セル | 内容 | 値 |
|---|---|---|
| A2 | 成功数 | 2 |
| B2 | 標本サイズ | 5 |
| C2 | 母集団成功数 | 3 |
| D2 | 母集団サイズ | 10 |
| E2 | 確率 | =HYPGEOMDIST(A2, B2, C2, D2) |
D2を10から20に変えれば、母集団サイズが増えたときの確率変化を観察できます。シミュレーションが手早くできて便利ですよ。
品質検査での活用例
品質管理の現場でも活用できます。100個の部品のうち不良品が5個あるロットから、10個を抜き取り検査する場面を考えましょう。
不良品が1個も含まれない確率を求めます。
=HYPGEOMDIST(0, 10, 5, 100)
結果は約0.5838(58.4%) です。不良品率5%のロットでも、10個の抜き取りでは約58%の確率で不良品がゼロになります。検査の精度を見積もるときに使えますよ。
逆に「抜き取り検査で不良品を1個でも検出できる確率」は、次のように余事象で計算します。
=1 - HYPGEOMDIST(0, 10, 5, 100)
結果は約0.4162(41.6%) です。10個抜くだけでは、不良品を見逃す可能性が約58%もあるとわかります。検査サンプル数を増やす根拠としても使えるデータですね。
「k個以上」の確率を求めるには
HYPGEOMDIST関数には累積確率の機能がありません。「k個以上」の確率を求めるには、個別の確率を足し合わせる必要があります。
たとえば「10枚のくじ(当たり3枚)から5枚引いて、2枚以上当たる確率」は次のように計算します。
=HYPGEOMDIST(2, 5, 3, 10) + HYPGEOMDIST(3, 5, 3, 10)
結果は約0.5000(50.0%) です。2枚当たる確率と3枚当たる確率を足しています。
ただし、場合の数が多いと個別に足すのは大変です。そんなときはHYPGEOM.DIST関数のTRUE(累積確率)を使うほうが簡単ですよ。
=1 - HYPGEOM.DIST(1, 5, 3, 10, TRUE)
累積確率を使えるのがHYPGEOM.DISTの大きなメリットです。
実務シナリオ別のHYPGEOMDIST活用
シナリオ1: 抜き取り検査の合格基準を作る
「100個のロットから20個抜いて、不良品が2個以下なら合格」というルールがあったとします。実際の不良率が10%のとき、このロットが合格になる確率はいくつでしょうか。
母集団サイズ100、母集団成功数(不良品数)10、標本サイズ20として、成功数0、1、2の合計を求めます。
=HYPGEOMDIST(0, 20, 10, 100) + HYPGEOMDIST(1, 20, 10, 100) + HYPGEOMDIST(2, 20, 10, 100)
結果は約0.6695(67.0%) です。不良率10%のロットでも、67%の確率で合格と判定されてしまうとわかります。検査基準が緩いことが数字で見える化されますね。基準を厳しくすべきか、サンプル数を増やすべきかの議論につながります。
シナリオ2: アンケートのサンプル代表性をチェック
500件のアンケートを回収して、そのうち100件が特定の回答(たとえば「商品Aを購入したい」)だったとします。ランダムに50件を抽出して詳細分析したとき、抽出した50件に「商品Aを購入したい」が15件以上含まれる確率を求めます。
=1 - (HYPGEOMDIST(0, 50, 100, 500) + HYPGEOMDIST(1, 50, 100, 500) + ... + HYPGEOMDIST(14, 50, 100, 500))
ただし15個分を足すのは大変なので、ここは累積確率に対応したHYPGEOM.DIST関数を使うほうが圧倒的に楽です。
=1 - HYPGEOM.DIST(14, 50, 100, 500, TRUE)
このように「個数が多くなる累積計算」は、HYPGEOM.DISTに乗り換える典型的なケースです。
シナリオ3: イベント抽選の当選見込み
社内イベントで30人の社員から3人を抽選し、3人とも営業部(営業部の人数は12人)に当たる確率を求めてみます。
=HYPGEOMDIST(3, 3, 12, 30)
結果は約0.0542(5.4%) です。営業部の割合が4割なのに、3人連続で当たる確率は5%程度しかありません。抽選結果が偏っていないかの目安にもなります。
標本サイズと精度のトレードオフ
抜き取り検査やサンプル調査では、「どのくらい抜けば信頼できるか」が永遠のテーマです。HYPGEOMDIST関数を使えば、標本サイズを変えながら検出力を確認できます。
たとえば「100個中5個が不良品のロット」から不良品を1個以上検出する確率を、標本サイズ別に求めてみましょう。
=1 - HYPGEOMDIST(0, 5, 5, 100) ← 5個抜き取り
=1 - HYPGEOMDIST(0, 10, 5, 100) ← 10個抜き取り
=1 - HYPGEOMDIST(0, 20, 5, 100) ← 20個抜き取り
=1 - HYPGEOMDIST(0, 30, 5, 100) ← 30個抜き取り
| 標本サイズ | 不良品1個以上を検出できる確率 |
|---|---|
| 5個 | 約23.0% |
| 10個 | 約41.6% |
| 20個 | 約68.0% |
| 30個 | 約82.7% |
標本サイズを増やすほど検出力は上がりますが、検査コストもかさみます。許容できる見逃しリスクと相談しながら標本サイズを決める、その判断材料になりますよ。
HYPGEOM.DIST関数との違い・どちらを使うべき?
HYPGEOMDIST関数とHYPGEOM.DIST関数の関係を整理しましょう。
| 項目 | HYPGEOMDIST | HYPGEOM.DIST |
|---|---|---|
| 種類 | 互換関数(旧バージョン) | 現行関数(推奨) |
| 引数の数 | 4つ | 5つ |
| 累積確率 | 非対応 | TRUE/FALSEで選択可能 |
| 確率質量の計算結果 | 同じ | 同じ(FALSEを指定) |
| Googleの推奨 | 非推奨 | 推奨 |
結論としては、新しく数式を書くときはHYPGEOM.DISTを使いましょう。理由は次の3つです。
- Googleの公式ドキュメントでHYPGEOM.DISTが推奨されている
- 累積確率(TRUE)を使えるため、「k個以下」の確率を1つの数式で求められる
- ExcelでもHYPGEOM.DISTが標準で、互換性が高い
ただし、既存のスプレッドシートでHYPGEOMDISTが使われている場合は慌てて書き換える必要はありません。確率質量の計算結果は同じなので、そのまま動き続けますよ。
TIP
HYPGEOM.DIST関数の詳しい使い方(累積確率の活用、品質検査への応用、BINOM.DISTとの使い分けなど)はHYPGEOM.DIST関数の解説記事で詳しく紹介しています。
HYPGEOMDISTからHYPGEOM.DISTへの書き換え
既存の数式を書き換えるなら、関数名を変更して5番目にFALSEを追加するだけです。
=HYPGEOMDIST(2, 5, 3, 10) ← 互換関数
=HYPGEOM.DIST(2, 5, 3, 10, FALSE) ← 推奨関数(FALSEを追加)
どちらも結果は0.4167です。HYPGEOMDISTは常にFALSE(確率質量)相当の値を返すので、書き換えるときは必ずFALSEを指定してくださいね。
スプレッドシートの「検索と置換」機能(Ctrl+H)を使えばシート内のHYPGEOMDISTをまとめて見つけられます。ただし引数の追加が必要なため、BINOM.DIST関数やBINOMDIST関数のように単純な名前の置換だけでは完了しません。1つずつ5番目の引数を追加していきましょう。
関連する確率分布関数
スプレッドシートには似た役割の確率分布関数がいくつかあります。場面に応じて使い分けましょう。
| 関数 | 用途 |
|---|---|
| HYPGEOMDIST / HYPGEOM.DIST | 非復元抽出(袋から戻さず引く) |
| BINOMDIST / BINOM.DIST | 復元抽出・独立試行(コイン投げなど) |
| NEGBINOMDIST | 成功数が決まるまでの失敗回数の分布 |
| POISSON関数 | 単位時間あたりの発生回数(コールセンター入電数など) |
| PROB関数 | 任意の確率分布から区間確率を求める |
母集団が有限で、なおかつ抜き出した個体を戻さない場面では超幾何分布(HYPGEOMDIST)が正解です。
よくあるエラーと対処法
HYPGEOMDIST関数でつまずきやすいポイントをまとめました。
#NUM! エラー: 成功数が標本サイズを超えている
成功数は標本サイズ以下でなければなりません。「5個引いて6個当たる」は起こりえないのでエラーになります。
=HYPGEOMDIST(6, 5, 3, 10) ← #NUM! エラー
引数の順番を間違えていないか確認してみてください。
#NUM! エラー: 母集団成功数が母集団サイズを超えている
母集団成功数は母集団サイズ以下でなければなりません。「全体100個のうち当たり120個」は矛盾しています。
=HYPGEOMDIST(2, 5, 120, 100) ← #NUM! エラー
#NUM! エラー: 成功数が母集団成功数を超えている
当たりが全部で3個しかないのに、5個当てることはできません。
=HYPGEOMDIST(5, 10, 3, 100) ← #NUM! エラー
#NUM! エラー: 標本サイズが母集団サイズを超えている
10個しかない母集団から15個引くことはできません。
=HYPGEOMDIST(2, 15, 3, 10) ← #NUM! エラー
母集団サイズより大きな標本を指定していないか確認しましょう。
#VALUE! エラー: 引数に文字列が入っている
数値であるべき引数にテキストが入ると#VALUE!エラーです。セル参照を使うときは、参照先が数値であることを確認しましょう。
累積確率を求めようとしてエラーになるケース
HYPGEOMDIST関数にはcumulative引数がありません。5番目の引数を指定するとエラーになります。累積確率が必要な場合はHYPGEOM.DIST関数を使ってくださいね。
引数の意味を取り違えるミス
HYPGEOMDISTの引数順は「成功数 → 標本サイズ → 母集団成功数 → 母集団サイズ」です。「全体 → 一部」の順ではなく「一部 → 全体」の順なので、感覚と逆かもしれません。「自分が手元で見るもの(標本)」を先に書く、と覚えるとミスを減らせますよ。
よくある質問(FAQ)
Q1. HYPGEOMDIST関数とHYPGEOM.DIST関数で、結果が違うことはありますか?
A. HYPGEOM.DISTの5番目の引数にFALSEを指定する限り、計算結果は完全に一致します。違いが出るとしたらHYPGEOM.DISTでTRUEを指定して累積確率を取った場合だけです。HYPGEOMDISTは常に確率質量(ちょうどk個の確率)しか返さないので、累積を取りたい場合は数式の構造を変える必要があります。
Q2. ExcelのHYPGEOMDIST関数とスプレッドシートのHYPGEOMDIST関数は同じですか?
A. 引数の構文も計算結果も同じです。Excel 2010以降ではHYPGEOM.DISTが標準関数となり、HYPGEOMDISTは互換関数として残されています。スプレッドシートでもこの仕様にあわせており、どちらの環境でも同じ式が動きます。
Q3. 母集団サイズが非常に大きいとき、HYPGEOMDISTとBINOMDISTのどちらを使うべきですか?
A. 標本サイズが母集団サイズの5%以下なら、BINOMDIST関数で代用してもほぼ同じ結果になります。母集団が100万のように非常に大きい場合は、計算負荷が軽い二項分布で十分なケースが多いです。ただし母集団が小さい(数十から数百)場面ではHYPGEOMDIST(またはHYPGEOM.DIST)のほうが正確です。
Q4. 累積確率(k個以下の確率)はHYPGEOMDISTで求められませんか?
A. 求められません。HYPGEOMDISTは確率質量関数(PMF)専用です。累積確率関数(CDF)が必要な場合はHYPGEOM.DIST関数の5番目の引数にTRUEを指定してください。あるいは、HYPGEOMDISTを足し合わせて自前で累積を作るしかありませんが、計算量が増えるのでおすすめしません。
Q5. 引数に小数や負の数を入れるとどうなりますか?
A. 小数を入れると小数点以下が切り捨てられます(2.7は2として処理)。負の数を入れると#NUM!エラーになります。HYPGEOMDISTは「個数」を扱う関数なので、引数はすべて0以上の整数(または整数として解釈される値)でなければなりません。
Q6. HYPGEOMDISTの結果が0になるのはどんなときですか?
A. 物理的にありえない組合せを指定したときに0が返ることがあります。たとえば「全体100個のうち当たりが0個のとき、当たりを1個引く確率」は当然ゼロです。式が動いているのに結果が0なら、引数の値が現実的かを再確認しましょう。
Q7. ArrayFormulaやMAPと組み合わせて、複数行を一括計算できますか?
A. 可能です。範囲を指定して=ArrayFormula(HYPGEOMDIST(A2:A10, B2:B10, C2:C10, D2:D10))のように書けば一気に計算できます。シミュレーション表を作るときに便利ですよ。最新のスプレッドシートではMAP関数やBYROW関数を使う方法もあります。
まとめ
HYPGEOMDIST関数は、超幾何分布(非復元抽出の確率分布)にもとづいて確率を求める互換関数です。
- HYPGEOM.DIST関数の旧バージョンで、確率質量の計算結果は完全に同じ
- 引数は4つで、HYPGEOM.DISTの5番目のcumulative引数がない
- 常に確率質量(「ちょうどk個当たる確率」)のみを返す
- 累積確率(「k個以下の確率」)が必要ならHYPGEOM.DISTを使おう
- 新しく数式を書くときはHYPGEOM.DISTがおすすめ
- 既存のHYPGEOMDIST数式はそのまま動くので、急いで書き換えなくてOK
- 計算はCOMBIN関数による組合せの比で表現できる
- 標本サイズが母集団の5%以下ならBINOMDIST関数で代用できる
- 成功数 > 標本サイズなどの矛盾した値を指定すると
#NUM!エラー - ほかの互換関数(BINOMDIST関数、POISSON関数、NEGBINOMDIST関数など)も同様に現行関数への移行が推奨されている
HYPGEOMDISTとHYPGEOM.DISTで迷ったら、HYPGEOM.DISTを選んでおけば間違いありません。既存ファイルのHYPGEOMDISTも問題なく動くので、安心してくださいね。抜き取り検査やサンプル抽出の現場で、母集団が有限な確率を計算したいときに頼れる関数です。
