「ExcelでLOGNORMDIST関数を使っていたけど、スプレッドシートでも同じように使えるのかな?」。ExcelからGoogleスプレッドシートへ移行したときに気になるポイントですよね。
結論から言うと、LOGNORMDIST関数はGoogleスプレッドシートでもそのまま使えます。ただし、現在はLOGNORM.DISTという新しい名前の関数が推奨されています。この記事ではスプレッドシートのLOGNORMDIST関数の使い方を、LOGNORM.DISTとの違いや移行時のポイントとあわせて解説します。
LOGNORMDIST関数とは
LOGNORMDIST関数(読み方: ログノーム・ディスト関数)は、対数正規分布にもとづいて累積確率を返す互換関数です。「LOGNORM」は「Lognormal(対数正規)」、「DIST」は「Distribution(分布)」の略です。
対数正規分布(データの自然対数をとると正規分布になる分布)とは、「値が必ず正で、右に裾が長い」データによく当てはまるモデルです。売上や年収、待ち時間のように少数の大きな値が分布を引っ張るデータに使います。
たとえば「月間売上の対数平均が2、対数標準偏差が0.5のとき、売上10万円以下の確率は何%か」を1つの数式で求められます。
LOGNORMDIST関数にできることをまとめると、次のとおりです。
- ある売上額が全体の何%に位置するかを求める(累積確率)
- 待ち時間や処理時間が一定以内に収まる確率を計算する
- 正規分布では扱いにくい、右に偏ったデータを分析する
NOTE
LOGNORMDIST関数はGoogleスプレッドシートの全バージョンで使えます。ただしGoogleの公式ドキュメントではピリオド付きのLOGNORM.DIST関数が推奨されています。新しく数式を書くときはLOGNORM.DISTを使いましょう。
基本構文と3つの引数
=LOGNORMDIST(x, 平均, 標準偏差)
カッコの中に3つの引数を指定します。
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| x | 必須 | 確率を求めたい数値(0より大きい値) |
| 平均(mean) | 必須 | LN関数で対数変換した値の平均 |
| 標準偏差(standard_deviation) | 必須 | 対数変換した値の標準偏差(0より大きい値) |
ここで大事なポイントがあります。2番目と3番目の引数は「元データの平均・標準偏差」ではなく、「対数変換後の平均・標準偏差」です。元データをそのまま渡さないように注意してくださいね。
TIP
xに0以下を指定すると
#NUM!エラーになります。対数正規分布は正の値だけで定義されるためです。標準偏差に0以下を指定した場合も#NUM!エラーです。
LOGNORM.DISTとの違い
LOGNORMDISTとLOGNORM.DISTの主な違いは「引数の数」です。計算結果は同じですが、LOGNORMDISTは累積確率しか返せません。
=LOGNORMDIST(10, 2, 0.5) <- 旧関数名(累積のみ・引数3つ)
=LOGNORM.DIST(10, 2, 0.5, TRUE) <- 新関数名(累積/密度を選べる・引数4つ)
違いをまとめると次の表のとおりです。
| 項目 | LOGNORMDIST | LOGNORM.DIST |
|---|---|---|
| 関数名の形式 | ピリオドなし(旧形式) | ピリオドあり(新形式) |
| 引数の数 | 3つ | 4つ(累積/密度の切り替えあり) |
| 累積確率(CDF) | 返せる | 返せる(TRUE指定) |
| 確率密度(PDF) | 返せない | 返せる(FALSE指定) |
| Googleスプレッドシート | 使える | 使える(推奨) |
| Excel 2007以前 | 使える | 使えない |
| Excel 2010以降 | 使える(互換用) | 使える(推奨) |
| 公式ドキュメントでの扱い | 互換関数 | 推奨関数 |
既存のシートにLOGNORMDISTで書いた数式がある場合、わざわざ書き換える必要はありません。動作に違いはないので、そのまま使い続けて大丈夫ですよ。
スプレッドシートでのLOGNORMDIST関数の使い方
LOGNORMDIST関数は常に累積確率を返します。「x以下になる確率」を求めるときに使いましょう。
累積確率で「x以下の確率」を求める
対数平均2・対数標準偏差0.5の対数正規分布で、10以下の確率を求めてみます。
=LOGNORMDIST(10, 2, 0.5)
結果は約0.7275(72.8%) です。「対数平均2・対数標準偏差0.5の分布で、10以下になる確率が72.8%」という意味です。
「x以上」の確率を求めたいときは、1から引きます。
=1 - LOGNORMDIST(10, 2, 0.5)
結果は約0.2725。つまり10を超えるのは全体の約27.2%ですね。
xの値を変えたときの結果も見てみましょう。
| x | LOGNORMDIST(x, 2, 0.5) | 意味 |
|---|---|---|
| 3 | 0.0357(3.6%) | 3以下が3.6% |
| 5 | 0.2173(21.7%) | 5以下が21.7% |
| 7 | 0.4570(45.7%) | 7以下が45.7% |
| 10 | 0.7275(72.8%) | 10以下が72.8% |
| 15 | 0.9216(92.2%) | 15以下が92.2% |
xが大きくなるほど累積確率が1に近づいていきますよ。
LN・AVERAGE・STDEVとのネスト活用
LOGNORMDIST関数を使うには、対数平均と対数標準偏差が必要です。元データから計算するには、LN関数で対数変換してからAVERAGE・STDEVを適用します。
売上データがB2:B31に入っているとします。
=LOGNORMDIST(50, AVERAGE(LN(B2:B31)), STDEV(LN(B2:B31)))
このようにネスト(入れ子に)すれば、データを追加・変更しても結果が自動更新されます。対数平均や対数標準偏差を別セルに出しておいて参照する方法でもOKです。
TIP
AVERAGE(LN(範囲))はArrayFormula不要で動作します。LN関数が配列を自動展開してくれますよ。
LOGNORMDIST関数の実務活用例
基本がわかったところで、実務で使えるパターンを紹介します。
売上データの分布分析
月間売上のように「ゼロ以上で右に裾が長い」データは対数正規分布にフィットしやすいです。
たとえば各店舗の月間売上(万円)の対数平均が3.5、対数標準偏差が0.8だとします。売上50万円以下の店舗はどのくらいの割合でしょうか。
=LOGNORMDIST(50, 3.5, 0.8)
結果は約0.6967(69.7%) です。売上50万円以下の店舗が全体の約70%だとわかります。
「売上100万円を超える店舗は?」と聞かれたら、1から引けばOKです。
=1 - LOGNORMDIST(100, 3.5, 0.8)
チームの売上目標の設定や、店舗ランク分けの基準づくりに活用できますよ。
LOGNORM.INVとの組み合わせ
LOGNORMDIST関数は「値から確率を求める」関数です。逆に「確率から値を求める」にはLOGNORM.INV関数を使います。
たとえば「上位10%に入るには売上がいくら以上必要か」を求める場合です。
=LOGNORM.INV(0.9, 3.5, 0.8)
LOGNORMDISTとLOGNORM.INVはセットで覚えておくと、分布分析の幅が広がりますよ。
ExcelからスプレッドシートへのLOGNORMDIST移行ガイド
ExcelからGoogleスプレッドシートに移行するとき、LOGNORMDISTまわりで知っておくべきポイントをまとめました。
移行時に確認すべき3つのポイント
1. 既存のLOGNORMDIST数式はそのまま動く
ExcelファイルをGoogleスプレッドシートにインポートしたとき、LOGNORMDISTの数式はそのまま正常に動作します。自動変換や手動書き換えは不要です。
2. 新規作成時はLOGNORM.DISTを推奨
既存の数式はそのままで問題ありませんが、新しく数式を書く場合はLOGNORM.DIST関数を使いましょう。LOGNORM.DISTなら累積確率だけでなく確率密度も求められます。将来的な互換性を考えると、推奨関数を使っておくのが安心です。
3. 他の旧関数名も同じルール
LOGNORMDISTだけでなく、統計関数は多くが「ピリオドなし→ピリオドあり」に移行しています。
| 旧関数名 | 新関数名(推奨) |
|---|---|
| LOGNORMDIST | LOGNORM.DIST |
| NORMDIST | NORM.DIST |
| NORMSDIST | NORM.S.DIST |
| NORMSINV | NORM.S.INV |
どの関数も「旧名で書いた数式はそのまま動く。新しく書くなら新名を使う」が基本の考え方です。
よくあるエラーと対処法
LOGNORMDIST関数でつまずきやすいポイントをまとめました。
xに0以下を指定して#NUM!エラー
対数正規分布は正の値だけで定義されます。0や負の値を指定すると#NUM!エラーです。売上データに「0円」が含まれている場合は、フィルタで除外するかIF関数でスキップしましょう。
=LOGNORMDIST(0, 2, 0.5) <- #NUM! エラー
標準偏差に0以下を指定して#NUM!エラー
標準偏差は0より大きい値が必要です。データが全部同じ値の場合、STDEV関数は0を返すので注意してください。
「元データの平均」を引数に渡してしまう
2番目の引数は「対数変換後の平均」です。元データの平均(たとえば売上の平均50万円)をそのまま渡すと、結果が大きくずれます。元データから計算するには、LN関数を通してからAVERAGEを取りましょう。
=AVERAGE(LN(B2:B100)) <- 対数平均を求める
=STDEV(LN(B2:B100)) <- 対数標準偏差を求める
引数に文字列を渡して#VALUE!エラー
数値であるべき引数にテキストが入ると#VALUE!エラーです。セル参照を使うときは、参照先が数値か確認してくださいね。
まとめ
LOGNORMDIST関数は、対数正規分布にもとづいて累積確率を返す互換関数です。
- LOGNORM.DISTの旧関数名で、引数は3つ(x、対数平均、対数標準偏差)
- LOGNORM.DISTとの違いは「累積/密度の切り替えができない」点のみ
- Excelの旧バージョン(2007以前)で標準だった関数名で、Googleスプレッドシートでも使える
- 既存シートのLOGNORMDIST数式は書き換え不要。そのまま動く
- 新しく数式を書くときはLOGNORM.DIST関数を推奨
- 引数の平均・標準偏差は「対数変換後」の値。元データの値をそのまま渡さないように注意
- LOGNORM.INV関数と組み合わせると、分布分析の幅が広がる
ExcelからGoogleスプレッドシートへ移行した方は、まず既存の数式がそのまま動くことを確認してみてください。その上で、新しく書く数式から少しずつLOGNORM.DISTに切り替えていくのがおすすめですよ。
