「ExcelでLOGINV関数を使っていたけど、スプレッドシートでも同じように動くの?」「LOGNORM.INVに書き換えた方がいいって聞くけど、何が違うの?」。ExcelからGoogleスプレッドシートへ移行したときに気になるポイントですよね。
結論から言うと、LOGINV関数はGoogleスプレッドシートでもそのまま使えます。ただし現在はLOGNORM.INV関数が推奨されていて、計算結果はどちらもまったく同じです。
この記事ではスプレッドシートのLOGINV関数の使い方を、引数の意味からLOGNORM.INVとの違い・Excel移行時の注意点・よくあるエラーまで、実例を交えながら解説します。
スプレッドシートのLOGINV関数とは?
LOGINV関数(読み方:ログ・インバース)は、対数正規分布の逆関数です。「対数正規分布」とは、データの自然対数をとったときに正規分布になるような分布のことです。値が必ず正で右側に裾が長くなるデータに当てはまります。
関数名は「LOG(Logarithm/対数)+ INV(Inverse/逆)」に由来します。「対数の逆関数」と覚えるとイメージしやすいですよ。
かんたんに言うと、LOGINV関数は「この累積確率に対応する値はいくつ?」を求める関数です。たとえば「店舗売上の下位10%にあたる金額はいくらか」「コールセンターの応答時間で95%の顧客が待てる時間は何秒か」といった計算に使えます。
LOGINV関数でできること
LOGINV関数の主な使い道は次のとおりです。
- 累積確率から元の値を逆算する(パーセンタイル値の算出)
- 「上位○%ライン」「下位○%ライン」を求める
- LOGNORMDIST関数の逆方向の計算を行う
- 売上・所得・応答時間・故障時間など、右裾の長い分布の閾値分析
NOTE
LOGINV関数はGoogleスプレッドシートの全バージョンで使えます。ただしGoogleの公式ドキュメントではLOGNORM.INV関数の使用が推奨されています。新しく数式を書くときはLOGNORM.INVを使いましょう。
対数正規分布が使われる場面
対数正規分布は、現実のデータでよく出てくる分布です。「平均より下に多く集まり、上の方に少数の大きな値がある」というパターンですね。
| データの種類 | 例 |
|---|---|
| 売上・収入 | 店舗別売上、世帯年収、月間アクセス数 |
| 時間・期間 | 待ち時間、応答時間、製品の故障時間 |
| 価格・サイズ | 株価変動、不動産価格、ファイルサイズ |
これらのデータは平均値だけで語ると実態を見誤りやすいので、LOGINVのような逆関数で「下位○%」「上位○%」のラインを把握することが有効です。
スプレッドシートでも問題なく動作する
LOGINV関数はGoogleスプレッドシートで問題なく動作します。Excelで作成したファイルをインポートしたとき、LOGINVの数式はそのまま正常に計算されます。
ただし、LOGINVは「互換関数」という位置づけです。Excelでは2010以降に互換カテゴリへ移動しており、将来的に廃止される可能性もあります。新しく数式を書くならLOGNORM.INV関数を選びましょう。
LOGINV関数の基本構文と引数
LOGINV関数の構文は次のとおりです。
=LOGINV(x, 平均, 標準偏差)
カッコの中に3つの引数を指定します。
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| x | 必須 | 累積確率(0より大きく1より小さい値) |
| 平均(mean) | 必須 | LN関数で対数変換した値の平均 |
| 標準偏差(standard_deviation) | 必須 | 対数変換した値の標準偏差(0より大きい値) |
ここで一番大事なポイントがあります。2番目と3番目の引数は「元データの平均・標準偏差」ではなく、「対数変換後の平均・標準偏差」です。元データの値をそのまま渡さないように注意してくださいね。
TIP
Excelでは1番目の引数名が「probability」ですが、Googleスプレッドシートでは「x」と表記されています。名前は違いますが、どちらも累積確率を指定する点は同じです。動作に違いはないので、書式さえ守れば結果は完全に一致します。
対数平均・対数標準偏差の求め方
元データから対数平均・対数標準偏差を計算するときは、LN関数で対数変換してからAVERAGE・STDEVを取ります。
対数平均 : =AVERAGE(LN(B2:B100))
対数標準偏差: =STDEV(LN(B2:B100))
LOGINVに直接組み込むときは、次のように1つの数式にまとめることもできます。
=LOGINV(0.5, AVERAGE(LN(B2:B100)), STDEV(LN(B2:B100)))
LOGINV関数の基本的な使い方
対数平均3.5、対数標準偏差1.2のとき、累積確率0.039084に対応する値を求めてみます。
=LOGINV(0.039084, 3.5, 1.2)
結果は約4.00です。「対数平均3.5・対数標準偏差1.2の分布で、下から約3.9%の位置にある値が4.00」という意味になります。
確率を変えたときの結果も見てみましょう。
| x(累積確率) | LOGINV(x, 3.5, 1.2) | 意味 |
|---|---|---|
| 0.10 | 約7.06 | 下位10%ライン |
| 0.25 | 約14.73 | 下位25%ライン(第1四分位) |
| 0.50 | 約33.12 | 中央値(メジアン) |
| 0.75 | 約74.46 | 上位25%ライン(第3四分位) |
| 0.90 | 約155.37 | 上位10%ライン |
確率が大きくなるほど返される値も大きくなります。対数正規分布は右に裾が長いので、上位になるほど値の増え方が急になりますよ。
中央値と平均値の関係
対数正規分布では、中央値が「exp(対数平均)」で求められます。上の例だと exp(3.5) ≒ 33.12 です。LOGINV(0.5, 3.5, 1.2) の結果と一致しますね。
中央値と平均値(期待値)は一致しないので、注意が必要です。対数正規分布の平均値は exp(対数平均 + 対数標準偏差²/2) で求められます。データを語るときは「中央値」を中心に据えると誤解が少なくなりますよ。
実務での活用シーン
LOGINV関数は「ある確率に対応する値はいくつか」を計算する場面で力を発揮します。具体的な活用パターンを5つ紹介しますね。
パターン1:売上の目標ライン設定
店舗ごとの月間売上(万円)の対数平均が3.5、対数標準偏差が0.8だとします。「上位20%に入るための売上ライン」を求めてみましょう。
=LOGINV(0.8, 3.5, 0.8)
上位20%(つまり下から80%)に入る売上ラインがわかります。目標設定や店舗ランク分けの基準に活用できますね。
パターン2:応答時間SLAの算出
コールセンターの応答時間が対数正規分布に従うとき、「95%の顧客がこの時間内に応答を受けられる」というSLA(サービスレベル目標)の値を計算できます。
=LOGINV(0.95, 対数平均, 対数標準偏差)
平均値ではなく「95%カバーできるライン」で目標を立てることで、外れ値の影響を含めたリアルな運用基準になります。
パターン3:故障時間の保証期間設計
製品の故障時間(時間)が対数正規分布に従うとき、「下位5%の早期故障ライン」を求めれば保証期間の目安になります。
=LOGINV(0.05, 対数平均, 対数標準偏差)
下位5%=5%の製品がこの時間より早く故障する、という意味です。製品ロットの品質基準を決めるときに役立ちます。
パターン4:年収分布のパーセンタイル分析
世帯年収(万円)の対数平均が6.0、対数標準偏差が0.5だとします。中央値や上位10%ラインを比較しましょう。
中央値 : =LOGINV(0.5, 6.0, 0.5) -> 約403
上位10%ライン: =LOGINV(0.9, 6.0, 0.5) -> 約766
中央値と上位10%ラインで約2倍の差があることがわかります。対数正規分布は格差を視覚化するときによく使われる分布ですよ。
パターン5:株価のリスク分析(VaR近似)
株価のリターンを対数正規分布で近似すると、「99%の確率で下回らない価格ライン」を求められます。
=LOGINV(0.01, 対数平均, 対数標準偏差)
これは金融分野で使われるバリュー・アット・リスク(VaR)の考え方の基礎になっています。実務ではより精緻なモデルを使いますが、簡易チェックとしてLOGINVは便利です。
LOGINVとLOGNORM.INVの違い
LOGINVとLOGNORM.INVは名前が違うだけで、計算結果は完全に同じです。引数の数も3つで変わりません。
=LOGINV(0.5, 3.5, 1.2)
=LOGNORM.INV(0.5, 3.5, 1.2)
どちらも同じ値(約33.12)を返します。
LOGINVとLOGNORM.INVの比較表
| 項目 | LOGINV | LOGNORM.INV |
|---|---|---|
| 関数名の形式 | ピリオドなし(旧形式) | ピリオドあり(新形式) |
| 引数の数 | 3つ | 3つ(変化なし) |
| 引数の順番 | x, 平均, 標準偏差 | x, 平均, 標準偏差 |
| 計算結果 | 同じ | 同じ |
| Googleスプレッドシート | 使える | 使える(推奨) |
| Excel 2007以前 | 使える | 使えない |
| Excel 2010以降 | 使える(互換カテゴリ) | 使える(推奨) |
| 公式ドキュメントでの扱い | 互換関数 | 推奨関数 |
ここが重要なポイントです。LOGINVからLOGNORM.INVへの移行は関数名を書き換えるだけで完了します。引数の追加や順番の変更は一切ありません。
他の互換関数ペアとの比較
同じ対数正規分布の関数ペアで比較すると、LOGINVの移行がいかに簡単かわかります。
| 互換関数 | 推奨関数 | 引数変化 | 移行難易度 |
|---|---|---|---|
| LOGNORMDIST | LOGNORM.DIST | 3→4(cumulative追加) | 中 |
| LOGINV | LOGNORM.INV | 3→3(変化なし) | 低(名前変更のみ) |
LOGNORMDIST→LOGNORM.DISTは4番目の引数(累積/密度の切り替え)が追加されます。一方、LOGINV→LOGNORM.INVは引数がまったく同じです。移行コストはほぼゼロですよ。
似た互換関数の逆関数ペア
LOGINVと同じく「逆関数で名前変更だけで済む」関数も知っておくと便利です。
| 互換関数 | 推奨関数 | 対象分布 |
|---|---|---|
| LOGINV | LOGNORM.INV | 対数正規分布 |
| NORMINV | NORM.INV | 正規分布 |
正規分布の逆関数であるNORMINV関数も、LOGINVと同じパターンでNORM.INV関数に移行できます。
どちらを使うべきか
結論はシンプルです。
- 既存のシートにLOGINVの数式がある場合:そのまま使い続けてOK
- 新しく数式を書く場合:LOGNORM.INV関数を使う
LOGINVは将来的に廃止される可能性があります。新規作成時はLOGNORM.INVを選んでおくのが安心です。
ExcelファイルをSheetsに取り込むときの注意点
ExcelファイルをGoogleスプレッドシートに取り込むとき、LOGINV関連で押さえておきたいポイントを4つ紹介します。
1. 既存のLOGINV数式はそのまま動く
Excelファイルをインポートしても、LOGINVの数式は自動変換されません。そのまま正常に動作します。書き換えなしで結果が再現できるので安心してくださいね。
2. 引数名の表記が異なる
Excelでは1番目の引数名が「probability」ですが、Googleスプレッドシートでは「x」です。見た目の違いだけで、動作への影響はありません。関数の挙動や精度は同じです。
3. Excel 2007以前との互換性に注意
LOGNORM.INVはExcel 2010以降で追加された関数です。Excel 2007以前のファイルとやり取りする可能性がある場合は、LOGINVのまま残しておくのも一つの手です。ただし、現在2007を使っているケースはほぼないので、基本はLOGNORM.INVへの移行をおすすめします。
同じく互換関数のNORMINV関数(正規分布の逆関数)も、Excel移行時に同様の対応が必要です。あわせて確認しておくと安心ですよ。
4. 計算結果の桁数に注意
スプレッドシートとExcelでは内部の浮動小数点演算がほぼ同じなので、LOGINVの結果は通常一致します。ただし、ごく稀に末尾の桁で微差が出ることがあります。実務上の影響はほぼありませんが、厳密な比較が必要な場合はROUND関数で桁数を揃えておくと安心です。
LOGNORM.INVへの移行手順
LOGINVからLOGNORM.INVへの移行はとても簡単です。実際の手順を見ていきましょう。
ステップ1:関数名を置換する
関数名を「LOGINV」から「LOGNORM.INV」に変更するだけです。
変更前: =LOGINV(0.5, 3.5, 1.2)
変更後: =LOGNORM.INV(0.5, 3.5, 1.2)
引数はそのまま。順番の入れ替えも追加もありません。
ステップ2:一括置換は「検索と置換」が便利
大量の数式を一括で書き換えたい場合は、スプレッドシートの「検索と置換」機能(Ctrl + H)が便利です。「LOGINV(」を「LOGNORM.INV(」に置換すれば完了します。
TIP
置換するときは「LOGINV(」のようにカッコまで含めるのがポイントです。関数名だけで置換すると、別の場所(コメント文や表のラベルなど)まで変わってしまう可能性があります。「数式」だけを対象にするオプションをONにするとさらに安全ですよ。
ステップ3:逆関数ペアもまとめて移行
LOGINVを使っているシートには、順方向のLOGNORMDIST関数も使われていることが多いです。あわせて移行すると管理が楽になります。
| 移行元 | 移行先 | 置換パターン |
|---|---|---|
| LOGINV( | LOGNORM.INV( | 名前変更のみ |
| LOGNORMDIST( | LOGNORM.DIST( | 4番目の引数にTRUE追加が必要 |
LOGINVは名前の置換だけでOKですが、LOGNORMDISTはLOGNORM.DIST関数へ移行する際に4番目の引数(TRUE)を追加する必要があります。こちらは少し手間がかかるので注意してくださいね。
ステップ4:移行後の動作確認
置換後は、いくつかの代表的なセルで結果が同じであることを確認しましょう。次のように両方を並べて比較すると一発でチェックできます。
A列: =LOGINV(B2, C2, D2)
E列: =LOGNORM.INV(B2, C2, D2)
F列: =A2=E2 (TRUE が返ればOK)
代表的な行で全て TRUE が返れば、移行は問題なく完了しています。
よくあるエラーと対処法
LOGINV関数でつまずきやすいポイントをまとめました。
xに0以下または1以上を指定して #NUM! エラー
累積確率xは0より大きく1より小さい値が必要です。0や1ちょうど、負の値を指定すると #NUM! エラーになります。
=LOGINV(0, 3.5, 1.2) -> #NUM! エラー(0はNG)
=LOGINV(1, 3.5, 1.2) -> #NUM! エラー(1もNG)
=LOGINV(-0.1, 3.5, 1.2) -> #NUM! エラー(負の値もNG)
=LOGINV(0.5, 3.5, 1.2) -> OK
「0%と100%の値が知りたい」と思っても、対数正規分布では理論上、下限が0・上限が無限大なので意味のある値が返せません。0.001や0.999のように、0と1から少しずらした値を使いましょう。
標準偏差に0以下を指定して #NUM! エラー
3番目の引数(標準偏差)は0より大きい値が必要です。データが全部同じ値だとSTDEV関数(標準偏差を求める関数)が0を返すので注意しましょう。
=LOGINV(0.5, 3.5, 0) -> #NUM! エラー
=LOGINV(0.5, 3.5, -1) -> #NUM! エラー
データが1件しかない場合もSTDEVはエラーを返します。データ件数とバラつきを確認してから使ってくださいね。
引数に文字列を渡して #VALUE! エラー
数値であるべき引数にテキストが入ると #VALUE! エラーです。セル参照を使う場合は、参照先が数値かどうか確認してくださいね。
=LOGINV("0.5", 3.5, 1.2) -> #VALUE! エラーのケースあり
=LOGINV(0.5, "平均", 1.2) -> #VALUE! エラー
セルの書式が「テキスト」になっていると数値も文字列扱いになることがあるので、書式を「自動」または「数値」に戻しておきましょう。
「元データの平均」を引数に渡してしまう
2番目の引数は「対数変換後の平均」です。元データの平均をそのまま渡すと、まったく違う結果になります。元データから計算するときはLN関数を通してからAVERAGE・STDEVを取りましょう。
正しい例:
=LOGINV(0.5, AVERAGE(LN(B2:B100)), STDEV(LN(B2:B100)))
NGな例(元データの平均をそのまま渡す):
=LOGINV(0.5, AVERAGE(B2:B100), STDEV(B2:B100))
このミスはLOGINVでもっとも多いトラブルです。「対数変換してから集計する」を合言葉にしてくださいね。
0や負の値を含むデータでLNがエラー
LN関数は0以下の値を渡すと #NUM! エラーを返します。元データに0や負の値が混ざっているとLOGINVも連鎖的にエラーになります。
データのクレンジング(0以下の除外)を済ませてから対数変換しましょう。たとえば次のようにIFで0以下を除外できます。
=AVERAGE(IF(B2:B100>0, LN(B2:B100)))
まとめ
LOGINV関数は、対数正規分布の累積確率から元の値を逆算する互換関数です。
- LOGNORM.INV関数の旧関数名で、引数は3つ(累積確率、対数平均、対数標準偏差)
- LOGNORM.INVと計算結果は完全に同じ。引数の数も3つで変わらない
- 移行は関数名を書き換えるだけ。引数の追加や変更は不要
- Googleスプレッドシートでもそのまま使える
- 既存のLOGINV数式は書き換え不要。新しく書くならLOGNORM.INVを推奨
- 引数の平均・標準偏差は「対数変換後」の値。元データの値をそのまま渡さないように注意
- LOGNORMDIST関数(確率→値の順方向)とセットで使うと分布分析の幅が広がる
- 正規分布の逆関数であるNORMINV関数も同じパターンで移行できる
LOGINVからLOGNORM.INVへの移行は、統計系の互換関数の中でもっとも簡単な部類です。既存の数式はそのまま使えるので焦る必要はありません。新しく書く数式から少しずつLOGNORM.INVに切り替えていくのがおすすめですよ。
