スプレッドシートのERF関数の使い方|誤差関数(Error Function)を解説

スポンサーリンク

品質管理や統計処理の業務をしていて、「この測定値が誤差の範囲内かどうか、数値で示してほしい」と頼まれた経験はありませんか。

正規分布を前提とした確率計算や、工学系の公式をそのまま再現したいときに登場するのが、スプレッドシートのERF関数(誤差関数)です。エンジニアリング関数の一種ですが、名前を聞いただけで身構えてしまう方も多いはず。

この記事では、ERF関数の構文・使い方・正規分布との関係を、できるだけ数式に頼らず「同僚に教えてあげる感覚」で解説します。Excelで使ったことがある方も、スプレッドシート固有の挙動を改めて確認できる内容にしています。

最後まで読めば、=ERF(下限, 上限) の引数の意味が腹落ちします。上限を省略したときの挙動や #VALUE! エラーの原因も、自分で判断できるようになります。

ERF関数とは何か|誤差関数の基本

まずは「ERF関数とは何者か」を、難しい数式は後回しにしてざっくり押さえておきましょう。

誤差関数(Error Function)の直感的な意味

ERFは「Error Function(誤差関数)」の略で、数学的には次のように定義される特殊関数です。

erf(x) = (2/√π) × ∫₀ˣ e^(-t²) dt

数式だけ見ると難しそうですが、直感的には「平均ゼロ・ある幅で散らばる誤差が、−x〜+x の範囲に収まる確率を表す関数」と捉えると理解しやすいです。

シグモイド(S字)形状を持ち、xが大きくなるほど 1 に漸近します。確率論・統計学・物質科学・偏微分方程式など、幅広い分野で使われる「非初等関数」です。

要するに、正規分布の積分計算を一発で済ませてくれる関数だと思っておけば実務では十分です。

どんな場面で使うのか

ERF関数を使う典型的な場面は、次のようなケースです。

  • 工学・物理系の公式に erf(x) がそのまま登場する場合
  • 標準正規分布における確率を、上限と下限の両方を指定して求めたい場合
  • 品質管理で「測定誤差が ±σ の範囲に収まる確率」を理論値として計算したい場合
  • 拡散方程式や熱伝導の解析解にERFを組み込む必要がある場合

逆に、平均と標準偏差を指定して確率を出したいだけなら、後述する NORM.DIST のほうが直感的に使えます。ERFは「工学・数学の文脈で使われる、ちょっと低レベル寄りの関数」と覚えておくとよいでしょう。

数学系・エンジニアリング関数の入り口として、スプレッドシートのPOWER関数の使い方|べき乗もあわせて確認しておくと、関数の立ち位置がイメージしやすくなります。

ERF関数の構文と引数

ERF関数の構文はとてもシンプルです。引数は最大2つ、最小1つ。これだけ覚えれば動かせます。

基本構文:=ERF(下限, [上限])

公式ヘルプに記載されている構文は次のとおりです。

=ERF(下限, [上限])
  • 下限(必須):積分の下限値(数値)
  • 上限(省略可):積分の上限値(数値)

引数を2つ指定した場合は「下限値 〜 上限値」の範囲でガウス誤差関数を積分した値を返します。引数が1つだけの場合は、後述するとおり「0 〜 下限値」の範囲で積分されます。

公式サンプルでは、=ERF(1) の戻り値は 0.8427007929=ERF(-2.3, -0.7) の戻り値は 0.3210556296 です。スプレッドシート上で実際に入力すると、同じ結果が返ってきます。

上限を省略したときの挙動|よくある誤解

ここがERF関数で一番つまずきやすいポイントです。

上限を省略した =ERF(a) は、「0 〜 a の範囲で積分」した値を返します。つまり =ERF(a)=ERF(0, a) は同じ結果になります。

よくある誤解は次の3パターンです。

誤解実際の挙動
「省略すると 0 〜 ∞ で積分される」違います。0 〜 下限値 で積分されます
「省略すると −∞ 〜 下限値 で積分される」違います。基点はあくまで 0 です
「省略すると下限値だけの値が返る(積分しない)」違います。積分は必ず行われます

「省略時の基点はゼロ」と覚えてしまえば迷いません。下限値が負の数のときは符号が反転して負の値が返ります。結果の正負を見るだけで、挙動をすぐに確認できます。

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

ERF関数の引数に数値以外(文字列など)を渡すと、#VALUE! エラーになります。

=ERF("a")        →  #VALUE!
=ERF(1, "high")  →  #VALUE!

セル参照を使うときは、参照先のセルが文字列や空白になっていないか確認してください。詳しい対処は記事後半の「エラーと対処法」で解説します。

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

ここからは実際にスプレッドシートに数式を入れて、結果を見ていきましょう。

1引数で使う(=ERF(1) など)

まずは引数を1つだけ指定するパターンです。

=ERF(0.5)   →  0.5204998778
=ERF(1)     →  0.8427007929
=ERF(1.5)   →  0.9661051465
=ERF(2)     →  0.9953222650

xが大きくなるにつれて 1 に近づいていくのがよくわかります。これが「シグモイド形状」と呼ばれる理由で、xが2を超えるとほぼ 1 に張り付きます。

負の値を入れると、戻り値も負になります。誤差関数は奇関数(erf(-x) = -erf(x))なので、左右対称な挙動を示します。

=ERF(-1)    →  -0.8427007929
=ERF(-0.5)  →  -0.5204998778

2引数で区間を指定する(=ERF(-2.3, -0.7) など)

引数を2つ指定すると、その区間の積分値が返ります。

=ERF(-2.3, -0.7)  →  0.3210556296
=ERF(0, 1)        →  0.8427007929
=ERF(-1, 1)       →  1.6854015858

=ERF(-1, 1) の値が 2 × ERF(1) になっていることに注目してください。ERFは奇関数なので、対称な区間では「片側の2倍」になります。

実務でよく使うのは「ある測定値が μ−aσ 〜 μ+aσ の範囲に収まる確率」を出すパターンです。これは =ERF(a/SQRT(2)) で計算できます(後述)。

スプレッドシートでの入力手順(スクリーンショット付き)

スプレッドシートでERF関数を入力する手順は、ほかの関数とまったく同じです。

  1. 結果を表示したいセルを選択する
  2. 半角イコール(=)を入力する
  3. ERF( まで打つと候補が表示されるので、Tabキーで補完する
  4. 下限値、必要に応じてカンマ区切りで上限値を入力する
  5. ) で閉じてEnterで確定

サンプルデータを使って試してみましょう。A列に下限、B列に上限を入れておき、C列に =ERF(A2, B2) を入力する形が応用しやすいです。

A列(下限)B列(上限)C列(数式)結果
01=ERF(A2, B2)0.8427007929
-11=ERF(A3, B3)1.6854015858
-2.3-0.7=ERF(A4, B4)0.3210556296
1(空欄)=ERF(A5)0.8427007929

B列を空欄にした場合は、=ERF(A5) のように1引数で書く必要があります。=ERF(A5, B5) のままB5を空欄にすると、#VALUE! エラーになるので注意してください。

ERF値と正規分布の関係を数式なしで理解する

ここがこの記事のメインディッシュです。「ERFの値って結局なに?」という疑問を、確率の言葉に翻訳します。

ERF値→確率換算インライン表

標準正規分布の累積分布関数 Φ(x) と誤差関数の関係は、次の式で表されます。

Φ(x) = (1/2) × [1 + erf(x/√2)]

つまり、=ERF(x/SQRT(2)) を計算すれば、「平均±x×標準偏差の範囲に収まる確率」がわかります。

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

x(標準偏差の倍数)=ERF(x) の値=ERF(x/SQRT(2)) の値±xσ 範囲に収まる確率
0.50.52050.3829約 38.3%
0.80.74210.5763約 57.6%
1.00.84270.6827約 68.3%
1.50.96610.8664約 86.6%
2.00.99530.9545約 95.5%

統計の教科書でおなじみの「±1σ で約68%、±2σ で約95%」という数字が、ERFの値からそのまま導けることが確認できます。

「ERF(1) = 0.8427」だけだと意味がピンと来ませんが、「=ERF(1/SQRT(2)) ≒ 0.6827 = 約68.3%」と読み替えると、急に身近な数字に見えてきますね。

NORM.DISTとERFの使い分け

正規分布の確率を出すだけなら、スプレッドシートには NORM.DIST というもっと使いやすい関数があります。両者の関係は次のとおりです。

=NORM.DIST(x, 0, 1, TRUE) = (1/2) × (1 + ERF(x/SQRT(2)))

実務での使い分け基準は次のように整理できます。

  • 平均・標準偏差を直接指定して確率を出したいNORM.DIST を使う
  • 工学系の公式に erf(x) がそのまま登場するERF を使う
  • 下限と上限の両方を指定して区間積分したいERF を使うのが楽
  • 片側確率や両側確率を出したいNORM.DIST のほうが直感的

迷ったら NORM.DIST を選んでおいて問題ありません。ERFは「工学系の数式をそのまま実装する」ための関数だと割り切ると、使い分けがシンプルになります。

確率分布まわりの関数を体系的に押さえたい方は、スプレッドシートのGAMMA.INV関数の使い方|ガンマ分布逆関数もあわせて読んでみてください。

関連関数|ERFC・ERF.PRECISE・NORM.DIST

ERF関数を理解したら、ファミリー関数も一緒に押さえておくと業務の幅が広がります。

ERFC(余誤差関数)との関係

ERFC(相補誤差関数、Complementary Error Function)は、ERFと次の関係にあります。

ERFC(x) = 1 - ERF(x)

つまり「ERFが捉えきれなかった残り」を返す関数です。スプレッドシートでも =ERFC(x) の形で使えます。

=ERF(1)   →  0.8427007929
=ERFC(1)  →  0.1572992071

合計するとピッタリ 1 になることが確認できます。「裾の確率(テール確率)を出したい」場面では、1 - ERF(x) と書くより ERFC(x) のほうがシンプルです。

ERF.PRECISEとERFの違い

ERF.PRECISE は、Excel 2010 で互換性関数として追加された関数で、Googleスプレッドシートでも使えます。

両者の違いは次のとおりです。

関数引数の数動作
ERF1個または2個1個なら 0〜下限値、2個なら下限値〜上限値で積分
ERF.PRECISE1個のみ常に 0〜下限値 で積分

つまり、引数1個で使うかぎり =ERF(x)=ERF.PRECISE(x) はまったく同じ結果になります。

=ERF(1)          →  0.8427007929
=ERF.PRECISE(1)  →  0.8427007929

実務では ERF で統一しておけば困りません。ERF.PRECISE は「Excel 2010で追加された名前」と覚えておけば十分です。

エンジニアリング関数つながりで、【Excel】IMSUM関数を使って指定した複素数の合計を求めるスプレッドシートのDELTA関数の使い方|等値判定も、合わせて押さえておくと工学・数学系の関数群をシリーズで習得できます。

エラーと対処法

ERF関数で発生する代表的なエラーは #VALUE! だけなので、対処は比較的シンプルです。

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

#VALUE! が出る主な原因は次の3つです。

=ERF("hello")       →  #VALUE!(文字列を渡した)
=ERF(A1)            →  #VALUE!(A1が文字列の場合)
=ERF(1, B1)         →  #VALUE!(B1が文字列または数値変換不可の場合)

対処の優先順位は次のとおりです。

  1. 引数が数値か確認する:参照セルの中身を =ISNUMBER(A1) で確認
  2. 空白セルの取り扱いを確認する:B列が空欄の行で =ERF(A2, B2) のように2引数で書いていないか
  3. 小数点の表記揺れを確認する:CSV取り込み時に「3,14」のようなカンマ区切りになっていないか
  4. エラーハンドリングを追加する=IFERROR(ERF(A2, B2), "") で空白セルを安全に処理

複数行に数式を一気にコピーするときは、IFERROR で包んでおくと安心です。空白行があっても画面が #VALUE! だらけにならず、見た目がすっきりします。

=IFERROR(ERF(A2, B2), "")

なお、引数に極端に大きな値(例:=ERF(10^10))を入れても、ERFは 1 に近い値を返すだけでエラーにはなりません。「数値であるかぎりエラーは起きない」と覚えておけば十分です。

スプレッドシートの基本操作に不安が残る方は、スプレッドシート初心者のための完全ガイドで基礎を押さえてから戻ってくると、関数の理解もスムーズになります。

まとめ

スプレッドシートのERF関数は、誤差関数(ガウス関数の積分)を一発で計算してくれるエンジニアリング関数です。最後にポイントを振り返っておきましょう。

  • 構文は =ERF(下限, [上限])。上限は省略可能で、省略すると「0 〜 下限値」で積分される
  • =ERF(1) は約 0.8427、=ERF(2) は約 0.9953。xが大きくなるほど 1 に近づくシグモイド形状
  • 標準正規分布との関係:Φ(x) = (1/2) × [1 + erf(x/√2)]=ERF(1/SQRT(2)) ≒ 0.6827 で「±1σ に約68%」が導ける
  • 平均・標準偏差を直接指定して確率を出したいなら NORM.DIST のほうが楽。ERFは工学系の公式実装や区間指定で力を発揮する
  • 関連関数:ERFC(x) = 1 - ERF(x)ERF.PRECISE(x) は引数1個のERFと同じ結果
  • エラーは #VALUE! がほぼすべて。引数が数値かどうかを確認すれば解決する

「正規分布の確率を出したい」「工学系の数式を再現したい」という場面に出くわしたら、まず =ERF(x) を試してみてください。値の意味さえ翻訳できれば、ERF関数は思ったより怖くない関数だと感じてもらえるはずです。

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