スプレッドシートのERFC関数の使い方|テール確率・不良率を1行で計算

スポンサーリンク

「規格外れの割合を出してほしい」と言われ、=1-ERF(x) と書いたことはありませんか。

その「1を引く」手間を省いてくれるのが、スプレッドシートのERFC関数です。ERF関数(誤差関数)の「残り部分」を返す相補版で、テール確率(分布の裾に出る確率)や不良率を直接計算できます。

この記事では、ERFC関数の構文・使い方・ERFとの使い分けを解説します。ERFC.PRECISEとの違いも含め、誤差関数ファミリー4関数をすっきり整理できる内容にしました。ERF関数の基本については スプレッドシートのERF関数の使い方 で詳しく解説しています。合わせてご覧ください。

ERFC関数とは何か|Googleスプレッドシートで使う相補誤差関数の基本

まず「ERFCとは何か」をざっくり押さえておきましょう。数式より先にイメージをつかんでおくと、後の説明がスムーズに入ってきます。

ERFC = 1 − ERF という相補関係

ERFCは相補誤差関数(Complementary Error Function)と呼ばれます。ERF関数(誤差関数)と次の関係にある関数です。

ERFC(x) = 1 − ERF(x)

ERF(x)が「0からxまで」の積分を返すのに対し、ERFC(x)は「xから+∞まで」の積分を返します。2つを足すと必ず1になります。

ERF(x) + ERFC(x) = 1

積分で書くと次のとおりです。

ERFC(x) = (2/√π) × ∫(x→+∞) e^(-t²) dt

「ERFが捉えた範囲の外側がERFC」というイメージを持つと、直感的に理解しやすいですよ。

どんな場面で使うのか(テール確率・不良率)

ERFC関数が特に役立つ場面は主に2つです。

1つ目はテール確率(正規分布の裾、ある値より外側に出る確率)の計算です。ERF関数では「内側の確率」が返ってきます。外側を出すには 1-ERF(x) と書く必要があります。ERFCならそのまま1ステップで出せます。

2つ目は不良率の計算です。製品の寸法が規格外れになる割合を求めるとき、ERFCを使うと数式が短くなります。

「誤差の範囲外に出る確率」を求めたいときは、ERFよりERFCのほうが直感的ですよ。

ERF関数との関係を「残り部分」のイメージで理解する

確率の全体を1と考えると、ERFが「真ん中に収まった分」、ERFCが「はみ出した分」です。コインの表と裏のような相補関係で、どちらか一方があればもう一方は自動的に決まります。

「裾の確率を出したい」場面では、ERFよりERFCのほうが読みやすい数式になります。

ERFC関数の構文と引数

ERFC関数の構文はシンプルです。引数は1つだけです。

基本構文:=ERFC(x)

=ERFC(x)
引数必須/省略説明
x必須数値積分の下限値。ERFC(0)=1、負の値も入力可

代表的な戻り値を表にまとめました。

数式結果補足
=ERFC(0)1全範囲の積分(最大値)
=ERFC(0.5)0.4795
=ERFC(1)0.1573ERF(1)≈0.8427との和=1
=ERFC(1.5)0.0339
=ERFC(2)0.00468ほぼゼロに近い
=ERFC(3)0.0000221ほぼゼロ
=ERFC(-1)1.84271を超える(正常な動作)

xが大きくなるほど0に近づきます。値域は0〜2です(xが−∞→+∞のとき2→0に単調減少)。xが負のときは1を超えますが、これは正常な動作です。

引数に数値以外を入れた場合(#VALUE!エラー)

引数に文字列や空白を渡すと #VALUE! エラーになります。

=ERFC("abc")  →  #VALUE!
=ERFC(A1)     →  A1が文字列や空白の場合 #VALUE!

詳しい対処は後半の「エラーと対処法」で解説します。

ERFC関数の使い方|基本例と応用例

ここからは実際の入力例を見ていきます。

数値を直接入力する基本パターン

まずは引数に数値を直接書くパターンです。

=ERFC(0)    →  1
=ERFC(1)    →  0.1572992071
=ERFC(2)    →  0.004677734981

xが大きくなるにつれて急激に0に近づきます。xが3を超えると0.0001未満の非常に小さな値になります。

負の値も渡せます。

=ERFC(-1)  →  1.8427007929

ERF(-1)≈−0.8427なので、ERFC(-1)=1−(−0.8427)=1.8427になります。

セル参照で連続計算する

実務では、A列にx値を並べてB列で一括計算する形が使いやすいです。

 A(x値)B(数式)結果
20=ERFC(A2)1
30.5=ERFC(A3)0.4795001222…
41=ERFC(A4)0.1572992071…
51.5=ERFC(A5)0.0338948535…
62=ERFC(A6)0.004677734…

B2に =ERFC(A2) と入力し、下方向にドラッグコピーするだけです。

ERF(x) + ERFC(x) = 1 を確認する(相補性の検証)

ERFとERFCの相補関係は、スプレッドシート上で確認できます。

=ERF(1) + ERFC(1)    →  1
=ERF(2) + ERFC(2)    →  1

この式を実際に試してみると、ERFC関数の意味が体感的につかめますよ。

ERFC と ERF の使い分け

同じ計算結果を出せる場面でも、ERFとERFCでは数式の読みやすさが変わります。

「引き算しなくて済む」ときにERFCを選ぶ

ERF関数で「裾の確率」を出すには =1-ERF(x) と書く必要があります。ERFCならそのまま書けます。

求めたい値ERFを使う場合ERFCを使う場合
x=1の裾の確率=1-ERF(1)=ERFC(1)
不良率(規格幅0.3、標準偏差0.1)=1-ERF(0.3/(0.1*SQRT(2)))=ERFC(0.3/(0.1*SQRT(2)))

数式が1ステップ短くなります。「裾の確率を出している」という意図も、式の見た目から伝わりやすくなります。

不良率・テール確率を直接出す実務パターン

製品の寸法が正規分布に従う場合、ERFCで不良率を直接計算できます。正規分布とは、測定値が平均値の周りに釣り鐘型に散らばる確率分布のことです。

具体例: 平均10mm、標準偏差(ばらつきの大きさを示す指標)0.1mm、規格幅±0.3mm(9.7〜10.3mm)の場合

=ERFC(0.3 / (0.1 * SQRT(2)))

→ 約 0.0027(不良率 0.27%)

ERFを使う場合は =1-ERF(0.3/(0.1*SQRT(2))) と書く必要があります。ERFCなら引き算なしで不良率が直接出てきます。

テール確率(正規分布の上側確率)は次の式で計算できます。

P(X > x) = ERFC(x / SQRT(2)) / 2

代表的な換算値です。

x(標準偏差の倍数)数式結果意味
1.0=ERFC(1/SQRT(2))/2約 0.1587平均+1σ超えの確率
1.96=ERFC(1.96/SQRT(2))/2約 0.025統計的有意水準5%(片側)
2.0=ERFC(2/SQRT(2))/2約 0.0228平均+2σ超えの確率
3.0=ERFC(3/SQRT(2))/2約 0.00135平均+3σ超えの確率

NORM.DIST との使い分けも含めた判断フロー

正規分布の確率を出す方法は複数あります。次の基準で使い分けると迷いません。

  • テール確率・不良率を直接出したい → ERFC を使う(引き算不要)
  • 工学系の数式に erf(x) がそのまま登場する → ERF または ERFC を使う
  • 平均・標準偏差を直接指定して確率を出したい → NORM.DIST(正規分布の累積確率を計算する関数)が直感的

ERFCとNORM.DISTの関係は次のとおりです。

NORM.DIST(x, 0, 1, TRUE) = 1 − ERFC(x/SQRT(2))/2

「平均と標準偏差を指定して確率を出したいだけ」なら、NORM.DISTで十分です。ERFCは「裾の確率を直接出したい」場面で力を発揮します。

ERFC.PRECISE との違い

ERFC.PRECISEは、ERFCとまったく同じ計算をする関数です。

引数の意味は同じ・Excel互換性の差

項目ERFCERFC.PRECISE
計算結果同じ同じ
引数の数1個1個
積分範囲x〜+∞x〜+∞
Excel互換Excel 2010 以前も対応Excel 2010 以降
Googleスプレッドシート使用可能使用可能
=ERFC(1)          →  0.1572992071
=ERFC.PRECISE(1)  →  0.1572992071

小数点以下まで完全に一致します。

「PRECISE」という名前は「精度が高い」という意味ではありません。Excel 2010で命名規則を統一した際に付けられたサフィックスです。ERFCとまったく同じ計算をしています。

どちらを使うべきか

実務ではERFCで統一して問題ありません。Googleスプレッドシートでは両関数とも使えます。

Excel 2010以降との互換性を明示したい場合は、ERFC.PRECISEを選ぶ選択肢もあります。どちらを選んでも計算結果は変わりません。

4関数ファミリーの比較については スプレッドシートのERF.PRECISE関数の使い方 で詳しく整理しています。合わせてご覧ください。

エラーと対処法

ERFC関数で発生するエラーの大半は #VALUE! です。原因はシンプルなので、対処も難しくありません。

#VALUE!エラーの原因と解決策

原因: 引数に数値以外(文字列・空白など)を渡している。

=ERFC("abc")    →  #VALUE!
=ERFC(A1)       →  A1が文字列や空白の場合 #VALUE!

解決策:

  1. 引数が数値かを確認する: =ISNUMBER(A1) でTRUEが返るかチェックする。ISNUMBER(セルの値が数値かどうかを判定する関数)が便利です
  2. 文字列の数字を変換する: =VALUE(A1) で数値に変換してから渡す
  3. エラー行を空白にする: =IFERROR(ERFC(A2), "") でガードする

IFERROR(エラー発生時に代替値を返す関数)を使うと、大量データのシートでも見た目をきれいに保てます。

=IFERROR(ERFC(A2), "")

複数行に数式をコピーする際は、IFERRORで包んでおくと安心です。

なお、#NAME? エラーは関数名のスペルミスが原因です。正しくは ERFCERFCC ではない)です。

まとめ

スプレッドシートのERFC関数は、ERF関数の「残り部分(相補)」を1ステップで返す関数です。最後にポイントを振り返っておきましょう。

  • 構文: =ERFC(x)。引数は1つだけ(積分範囲はx〜+∞固定)
  • 代表値: ERFC(0)=1、ERFC(1)≈0.1573、ERFC(2)≈0.00468
  • 相補関係: ERF(x) + ERFC(x) = 1 が常に成り立つ
  • 使い分け: 「裾の確率・不良率」を出したいときはERFCが有利。=1-ERF(x) の引き算が不要
  • 不良率の計算: =ERFC(規格幅 / (標準偏差 × SQRT(2))) で直接計算できる
  • ERFC.PRECISEとの違い: 計算結果は完全に同じ。Excel互換性の表記が異なるだけ
  • エラー: #VALUE! がほぼすべて。引数が数値かどうかを確認すれば解決する

「テール確率や不良率を出したい」場面では、まず =ERFC(x) を試してみてください。ERF関数と組み合わせれば、誤差関数ファミリー全体を使いこなせるようになります。

ERF関数の基本については スプレッドシートのERF関数の使い方 で詳しく解説しています。合わせてご覧ください。

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