スプレッドシートのHYPGEOM.DIST関数の使い方|超幾何分布

スポンサーリンク

「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.DISTBINOM.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.DISTHYPGEOMDIST
引数の数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関数も確認してみてくださいね。

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