「100個の部品から10個を検査して、不良品が1個も見つからない確率は?」品質管理や抜き取り検査で、こんな疑問を感じたことはありませんか?
抜き取り検査では取り出した部品を戻さずに次を引くので、毎回の確率が変わります。電卓や勘で計算するのは現実的ではないですよね。
そんなときに使うのがHYPGEOM.DIST関数です。この記事ではGoogleスプレッドシートでのHYPGEOM.DIST関数の使い方を、基本構文から実務活用まで解説します。BINOM.DIST関数との使い分けや、旧関数HYPGEOMDISTとの違いもあわせて紹介しますよ。
スプレッドシートのHYPGEOM.DIST関数とは
HYPGEOM.DIST関数(読み方: ハイパージオム・ディスト関数)は、超幾何分布(ちょうきかぶんぷ)にもとづいて確率を返す関数です。「HYPGEOM」は「Hypergeometric(超幾何)」、「DIST」は「Distribution(分布)」の略です。
超幾何分布とは、非復元抽出にもとづく確率分布のことです。非復元抽出とは、取り出したものを戻さずに次を引く方法です。くじ引きで当たりを引いたら袋に戻さずに次を引く場面をイメージしてください。引くたびに残りの枚数が減るので、毎回の当選確率が変わります。
HYPGEOM.DIST関数にできることをまとめると、次のとおりです。
- 非復元抽出で「ちょうどk個当たる」確率を求める
- 「k個以下当たる」累積確率を求める
- 抜き取り検査でロットの合格率を計算する
- くじ引きやカード抽選の確率を正確に算出する
NOTE
HYPGEOM.DIST関数はGoogleスプレッドシートの全バージョンで使えます。Excelにも同名の関数があり、動作は同じです。
HYPGEOM.DIST関数の書き方(構文と引数)
基本構文
=HYPGEOM.DIST(sample_s, number_sample, population_s, number_pop, cumulative)
カッコの中に5つの引数を指定します。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| sample_s(標本成功数) | 必須 | 標本内の成功数(当たりを何個引きたいか) |
| number_sample(標本サイズ) | 必須 | 標本のサイズ(何個引くか) |
| population_s(母集団成功数) | 必須 | 母集団内の成功数(全体の当たりの数) |
| number_pop(母集団サイズ) | 必須 | 母集団のサイズ(全体の個数) |
| cumulative(累積) | 必須 | TRUEで累積確率、FALSEで確率質量 |
引数の順番は「標本→母集団」の流れです。まず「標本の中で何個当たったか」「標本は何個か」を指定します。次に「母集団の当たりは何個か」「母集団は何個か」を指定します。
TIP
引数に小数を指定すると、小数部分は切り捨てられます。たとえば2.7は2として処理されます。
基本的な使い方
10枚のくじがあり、そのうち3枚が当たりです。5枚引いたときに、ちょうど2枚が当たる確率を求めてみましょう。
=HYPGEOM.DIST(2, 5, 3, 10, FALSE)
結果は約0.4167(41.7%) です。5枚引けばほぼ半分の確率で2枚当たることがわかります。
この結果を検算してみましょう。超幾何分布の確率質量関数(PMF)は次の計算式で表せます。
P(X=k) = C(M,k) × C(N-M, n-k) / C(N,n)
COMBIN関数を使って手計算すると、次のとおりです。
=COMBIN(3,2) * COMBIN(7,3) / COMBIN(10,5)
結果は0.4167で、HYPGEOM.DIST関数とぴったり一致します。COMBIN関数は「n個からk個を選ぶ組み合わせの数」を返す関数です。HYPGEOM.DIST関数はこの組み合わせ計算を1つにまとめてくれているわけですね。
各当たり枚数の確率も見てみましょう。
| 当たり枚数 | 数式 | 確率 |
|---|---|---|
| 0枚 | =HYPGEOM.DIST(0, 5, 3, 10, FALSE) | 0.0833(8.3%) |
| 1枚 | =HYPGEOM.DIST(1, 5, 3, 10, FALSE) | 0.4167(41.7%) |
| 2枚 | =HYPGEOM.DIST(2, 5, 3, 10, FALSE) | 0.4167(41.7%) |
| 3枚 | =HYPGEOM.DIST(3, 5, 3, 10, FALSE) | 0.0833(8.3%) |
1枚当たりと2枚当たりの確率がもっとも高く、同じ値になっています。合計するとちょうど1.0000(100%)になりますよ。
累積確率(TRUE)の使い方
累積確率を使うと「k個以下当たる確率」を一発で計算できます。
k個以下の確率
先ほどのくじ引きの例で、2枚以下当たる確率を求めてみましょう。
=HYPGEOM.DIST(2, 5, 3, 10, TRUE)
結果は約0.9167(91.7%) です。0枚・1枚・2枚それぞれの確率を合計した値です。個別に計算した0.0833+0.4167+0.4167=0.9167と一致することを確認してみてくださいね。
k個以上の確率
「k個以上」の確率がほしいときは、1から「k-1個以下」の累積確率を引きます。
=1 - HYPGEOM.DIST(k-1, number_sample, population_s, number_pop, TRUE)
たとえば「2枚以上当たる確率」なら次のように書きます。
=1 - HYPGEOM.DIST(1, 5, 3, 10, TRUE)
結果は約0.5000(50.0%) です。「1枚以下の確率」を1から引くことで求められます。累積確率(TRUE)は「k個以下」を計算するので、「k個以上」を求めるにはこのように補数を使いますよ。
実務活用例|品質検査のロット抽出
品質管理の現場で、抜き取り検査にHYPGEOM.DIST関数を活用する例を見てみましょう。
検査条件
- ロット(母集団): 100個
- 不良品数: 5個
- 抜き取り数: 10個
この条件で、抜き取った10個の中に不良品が1個も含まれない確率を求めます。
=HYPGEOM.DIST(0, 10, 5, 100, FALSE)
結果は約0.5838(58.4%) です。不良品率5%のロットでも、10個の抜き取りでは約58%の確率で不良品がゼロになります。
合格判定への応用
「不良品が1個以下なら合格」という基準の場合、合格する確率を計算してみましょう。
=HYPGEOM.DIST(1, 10, 5, 100, TRUE)
結果は約0.9231(92.3%) です。この基準なら約92%の確率で合格と判定されます。
逆に「不良品が2個以上見つかる確率」も求められます。
=1 - HYPGEOM.DIST(1, 10, 5, 100, TRUE)
結果は約0.0769(7.7%) です。不良品率5%のロットが不合格になる確率は約8%だとわかります。
抜き取り検査は取り出した部品を戻さない「非復元抽出」です。そのためHYPGEOM.DIST関数が理論的に正しい計算方法になりますよ。
BINOM.DISTとの違い|復元 vs 非復元の使い分け
HYPGEOM.DIST関数とBINOM.DIST関数は、どちらも「成功が何回起きるか」の確率を求める関数です。もっとも大きな違いは抽出方法です。
| 項目 | HYPGEOM.DIST | BINOM.DIST |
|---|---|---|
| 抽出方法 | 非復元抽出(戻さない) | 復元抽出(毎回戻す) |
| 確率の変化 | 引くたびに変わる | 毎回一定 |
| 分布 | 超幾何分布 | 二項分布 |
| 主な用途 | 抜き取り検査・くじ引き | 品質検査(大量生産)・アンケート |
どちらを使うべきかの判断基準
実務では次のように判断してください。
- 取り出したものを戻さない → HYPGEOM.DIST
- 取り出したものを戻す(または毎回独立) → BINOM.DIST
くじ引きや抜き取り検査は「戻さない」のが普通です。この場合はHYPGEOM.DIST関数を使います。
母集団が大きい場合は二項分布で近似できる
母集団サイズ(N)が標本サイズ(n)に対して十分に大きい場合、超幾何分布は二項分布に近似できます。目安はN > 20n(抽出率 n/N < 5%)です。
たとえば10,000個のロットから100個を抜き取る場合です。抽出率は1%なので、BINOM.DIST関数で近似しても誤差はごくわずかです。
一方、150個のロットから15個を抜き取る場合は抽出率10%です。この規模ではHYPGEOM.DIST関数を使いましょう。
母集団が小さいほど「戻さない」効果が大きくなります。迷ったらHYPGEOM.DIST関数を使えば正確な結果が得られますよ。
HYPGEOMDIST(互換関数)との違い
GoogleスプレッドシートにはHYPGEOMDISTという旧バージョンの関数もあります。
| 項目 | HYPGEOM.DIST | HYPGEOMDIST |
|---|---|---|
| 引数の数 | 5個 | 4個 |
| cumulative引数 | あり(TRUE/FALSE) | なし |
| 計算モード | 確率質量と累積分布を選択可能 | 確率質量のみ(常にFALSE相当) |
| 推奨度 | 推奨(新しい関数) | 非推奨(互換性のみ) |
HYPGEOMDISTは累積確率を求められません。累積分布(TRUE)が必要な場面ではHYPGEOM.DISTを使う必要があります。
=HYPGEOMDIST(2, 5, 3, 10) ← 旧関数(常に確率質量)
=HYPGEOM.DIST(2, 5, 3, 10, FALSE) ← 新関数(FALSEで確率質量)
どちらも結果は0.4167で同じです。ただしGoogleの公式ドキュメントではHYPGEOM.DISTが推奨されています。新しく数式を書くときはHYPGEOM.DISTを使いましょう。
よくあるエラーと対処法
HYPGEOM.DIST関数でつまずきやすいポイントをまとめました。
標本成功数が標本サイズを超えて#NUM!エラー
sample_sはnumber_sample以下でなければなりません。「5個引いて6個当たる」は起こりえないので、エラーになります。
=HYPGEOM.DIST(6, 5, 3, 10, FALSE) ← #NUM! エラー
母集団成功数が母集団サイズを超えて#NUM!エラー
population_sはnumber_pop以下でなければなりません。「全体100個のうち当たり120個」は矛盾しています。
=HYPGEOM.DIST(2, 5, 120, 100, FALSE) ← #NUM! エラー
標本成功数が母集団成功数を超えて#NUM!エラー
当たりが全部で3個しかないのに、5個当てることはできません。
=HYPGEOM.DIST(5, 10, 3, 100, FALSE) ← #NUM! エラー
引数に文字列を渡して#VALUE!エラー
数値であるべき引数にテキストが入ると#VALUE!エラーになります。セル参照を使うときは、参照先が数値であることを確認してくださいね。
まとめ
HYPGEOM.DIST関数は、超幾何分布(非復元抽出の確率分布)にもとづいて確率を求める関数です。
- 5番目の引数にFALSEで「ちょうどk個当たる確率」が返る
- TRUEで「k個以下当たる確率」が返る
- 抜き取り検査やくじ引きなど「戻さない」場面で正確な確率を計算できる
- BINOM.DIST関数は「戻す」場合。母集団が大きい(N > 20n)なら近似可能
- 旧関数HYPGEOMDISTは累積確率に非対応。HYPGEOM.DISTを使おう
- COMBIN関数で手計算した結果と一致する(仕組みの理解に役立つ)
- sample_s > number_sampleなどの矛盾した値を指定すると
#NUM!エラー
ほかの確率分布関数とあわせて使うと分析の幅が広がります。事象が独立な復元抽出ではBINOM.DIST関数、ある期間に起きる回数を扱うならPOISSON.DIST関数、一定回数の成功が出るまでの試行回数を求めるならNEGBINOM.DIST関数も確認してみてくださいね。
