xellstorm 学習センター
JA
アプリを開く

Excelで対数正規分布の乱数を作る:LOGNORM.INV、パラメーター、使いどころ

ガイド · 2026年10月更新

ひとことで言うと:ふだんは中くらいの値ですが、ときどき何倍もの大きな値になる量です。修理費用が例です。ゼロを下回ることはありません。

対数正規分布は、コスト、損失、所要期間のように、ゼロを下回らず上側の裾が長い量を表します。対数をとると正規分布になる分布です。Excelでは =LOGNORM.INV(RAND(), LN(median), s) で値を引けます。クレーム1件の修理コストが、中央値2,000(USD)、s = 0.8のとき、平均は2,754と中央値より高く、P90は5,576で、中央値の2.8倍です。

対数正規分布とは

正規分布が小さくて独立した影響を足し合わせた形なら、対数正規分布は掛け合わせた形です。たとえば、修理が思ったより20%複雑で、部品が30%高く、作業時間も10%長くかかる、といった具合です。値は常に正で、大半は低い側に集まり、細い裾が右に遠くまで伸びます。ごく一部のクレームは、典型的な額の何倍にもなります。

グラフの見方:棒は、シミュレーションで引いた10,000個の値がその区間にいくつ入ったかを表し、線は理論上の曲線です。棒が高いほど、その付近の値がよく出ます。右に長く続く低い部分が、まれに起きる高額のクレームです。

対数正規分布、中央値2,000、s 0.8xellstormがクレームの修理コストを10,000回引いた値のヒストグラム。右に歪んだ形で、理論上の対数正規分布の密度を線で重ねています。1,055付近にピークがあり、右へ長い裾が続きます。P10は717、平均は2,754、P90は5,576です。02,5005,0007,50010,000P10 717平均 2,754P90 5,576
クレーム1件の修理コスト(USD)、中央値2,000、s = 0.8の対数正規分布。棒:xellstormによる10,000回の引き、線:理論上の曲線。裾はグラフの外まで続き、引いた値の1.3%が12,000を超えます。

2つの数値で決まります。中央値は代表的な値で、結果の半数がこれを下回ります。ばらつきsは、裾がどこまで伸びるかを決めます。0.25前後なら値は中央値の近くにとどまり、1前後なら中央値の何倍にもなる値が出ます(専門的には、sは値の対数の標準偏差です)。平均、山の位置、パーセンタイルは、この2つの数値から決まります。

数式:平均、標準偏差、山の位置、パーセンタイル
対数正規分布の数式(ln = 自然対数、e = 2.718…)。中央値2,000、s = 0.8の場合の計算例
量数式と計算例
平均中央値 × es²/2
= 2,000 × e0.32 = 2,754
標準偏差平均 × √(es² − 1)
= 2,608
山の頂点(最頻値)中央値 × e−s²
= 1,055
P10とP90中央値 × e∓1.2816 s
= 717と5,576

山(最頻値)< 中央値 < 平均という順は、右に歪んだ量に典型的です。平均は裾に引っ張られて上がり、シミュレーションしたクレームのうち、平均的なクレームより高くつくのは34.5%だけです。中央値や、最も可能性の高いコストで組んだ予算は、平均に届きません。

Excelでの対数正規分布

LOGNORM.INV(probability, mean, standard_dev) は誤読しやすい関数です。引数の平均と標準偏差は、値そのものではなく、値の対数のものです。先ほどのクレームでは、LN(2,000) = 7.60と0.8です。コストそのものの平均と標準偏差を入れてしまうのは、この関数で最も多い間違いで、意味のない結果になります。そのため、このExcelファイルは中央値をセルに置き、LN(median) を渡しています。1つのセルにまとめると、数式は =LOGNORM.INV(RAND(),LN(D6),F6) です。

Excelでの対数正規分布:Excelファイルの6行目。中央値はD6、lnのばらつき(s)はF6
セル数式値
乱数 u(I6)=RAND()
引いた値(J6)=LOGNORM.INV(I6,LN(D6),F6)
1つのセルで引く=LOGNORM.INV(RAND(),LN(D6),F6)
平均(K6)=D6*EXP(F6^2/2)2,754
P10 (L6)=LOGNORM.INV(0.1,LN(D6),F6)717
P90 (M6)=LOGNORM.INV(0.9,LN(D6),F6)5,576
数値の確認:理論値と、Excelとxellstormがそれぞれ引いた10,000個の値の比較
クレーム1件の修理コスト、対数正規分布:理論値と各10,000回の引き
理論値Excel(RAND())xellstorm
平均2,7542,7972,754
標準偏差2,6082,6592,603
P10717734717
P50(中央値)2,0002,0202,000
P905,5765,6425,575

Excelは RAND() で完全にランダムに引きます。xellstormは範囲全体に均等に散らして引く(ラテンハイパーキューブサンプリング)ので、統計値が理論値に近くなります。

代わりに値の平均と標準偏差がわかっている場合は、先に換算します。s = √(ln(1 + (sd / mean)²))、中央値 = mean / √(1 + (sd / mean)²) です。平均3,000、標準偏差1,500なら、s = 0.4724、中央値は2,683になります。Excelでは =SQRT(LN(1+(sd/mean)^2)) と =mean/SQRT(1+(sd/mean)^2) です。LOGNORM.DIST(x, LN(median), s, TRUE) は、値がx以下になる確率を返します。旧名の LOGINV は LOGNORM.INV と同じ働きです。

対数正規分布の使いどころ

他の分布と比べると、正規分布は左右対称で、負の値も取りえます。PERT分布や三角分布には上限があるので、専門家が見積もる範囲には合いますが、何倍にも超過しうる量には向きません。ガンマ分布も同じような形ですが、裾は細くなります。データがあるなら、対数正規分布とガンマ分布の両方を当てはめて比べてください。

xellstormで対数正規分布を入力する

  1. セルを入力にして、「分布」ステップで対数正規分布を選びます。
  2. 各欄の定義はscipyと同じです。sは対数のばらつき、scaleは中央値、locは位置のずらし(シフト)で、値がゼロより上から始まる場合を除き0です。このクレームの例では、s 0.8、scale 2000、loc 0です。「平均」と「P10 – P90」の列で、入力した内容から何が得られるかを確認できます。
  3. パーセンタイルで考える場合は、入力を選び、サイドパネルの「見積もりから」を使います。P10、P50、P90を入力して対数正規分布を選ぶと、sと中央値が求まります。過去の値があれば、「データから」でlocを0にした対数正規分布を当てはめ、他の形と比べます。

「Excelファイルから取り込み」は、=LOGNORM.INV(RAND(), mu, sigma) のセルを対数正規分布の入力に変換します。アドインの関数も変換できます。RiskLognorm(値の平均と標準偏差)、RiskLognorm2(値の対数の平均と標準偏差)、VoseLognormal、PsiLogNormal などです。

よくある質問

Excelで対数正規乱数(対数正規分布に従う乱数)を作るには?

=LOGNORM.INV(RAND(), LN(median), s) を使います。medianは代表的な値、sはその対数の標準偏差です。中央値2,000、s = 0.8なら =LOGNORM.INV(RAND(), LN(2000), 0.8) です。再計算のたびに新しい値が出ます。

LOGNORM.INVの平均と標準偏差は何ですか?

ln(x)の平均と標準偏差で、よくμとσと書かれます。値そのものの平均と標準偏差ではありません。μは中央値の対数で、LN(2,000) = 7.60です。値の平均と標準偏差から始める場合は、σ = √(ln(1 + (sd / mean)²))、μ = ln(mean) − σ² / 2 と換算します。

対数正規分布の平均が中央値より高いのはなぜですか?

裾が右に遠くまで伸びる一方で、値はゼロを下回れないからです。ときどき出る非常に大きな値が、平均を押し上げます。平均は中央値 × es²/2 なので、ばらつきが大きいほど差は広がります。s = 0.8なら、中央値2,000に対して平均は2,754です。

対数正規分布と正規分布は、どちらを使えばよいですか?

目標値のまわりに左右対称にばらつき、ゼロから遠い量には、正規分布を使います。上側が下側より長い正の量(コスト、損失、所要期間、価格)には、対数正規分布を使います。標準偏差が平均に比べて小さい(平均の約10分の1未満)場合は、2つはほとんど同じです。

関連ページ

xellstormは、Excelモデル向けのブラウザー型モンテカルロシミュレーションツールです。アドインは不要で、Excelファイルがパソコンの外に出ることはありません。