【Excel】NORM.INV関数 – 正規分布の乱数を生成する

Excel 基本動作

前回はRAND関数を使って乱数を生成する方法を紹介しました。今回はNORM.INV関数を使って正規分布に従った乱数を生成する方法を紹介します。前回の内容は以下から参照ください。

スポンサーリンク

NORM.INV関数とは

まずはNORMINV関数について解説します。正規分布の乱数を生成できれば中身は興味ないという場合は読み飛ばしてください。また正規分布については以下を参照ください。

NORMINV関数について、Microsoftの解説を見ると、”指定した平均と標準偏差に対する正規分布の累積分布関数の逆関数の値を返します。

また、書式としては以下と説明されています。

NORMINV(確率,平均,標準偏差)

これだと意味が分からないと思うので、以下解説します。平均と標準偏差を前提知識として説明します。もし標準偏差がわからない人は以下を参照ください。

今回の関数について、恐らく多くの人にとって問題は”累積分布関数の逆関数”というのが全く分からないということだと思います。まず”累積分布関数”というのは何か。

累積分布関数というのは、ある値以下の値を取る確率を表す関数です。例えば”数学のテストで40点以下となる確率”を表します。その累積分布を求める関数の”逆関数”ということになります。

まずは逆関数ではなく、累積分布を求める関数であるNORM.DIST関数を使ってみましょう

NORM.DIST関数は以下の書式で使い、”関数形式”で累積分布関数を意味する”TRUE”を指定することで、累積確率の値を返します。

NORM.DIST(x,平均,標準偏差,関数形式)

具体例を見てみましょう。数学のテストで平均点が50、標準偏差が15だったとします。この時”40点以下”の範囲には何%のデータが含まれるでしょうか?

答えは以下の通り、”25.25%”です。

では、この”逆”の計算をしてみます。つまり、XX%のデータが含まれる点数の範囲は何点以下であるか?ということを算出します。例えば、40%のデータが含まれるような点数の範囲は何点以下でしょうか

答えは以下の通り、”46.2点”です。この計算に使っているのが、NORM.INV()関数です。NORM.DIST関数の逆の計算をしています

スポンサーリンク

正規分布の乱数を生成する

では、上で紹介したNORM.INV関数を使って、正規分布に従った乱数を生成してみましょう。正規分布に従った乱数が必要なのは、例えばテストの点数の架空のデータを作成するようなケースです。テストの点数は典型的な正規分布のデータですが、RAND()関数を使用すると、不自然に高得点と低得点のデータが多くなってしまいます。そういったときに、正規分布に従った乱数が便利です。

具体的には以下の書式で生成します。

NORM.INV(RAND(), 平均, 標準偏差)

この式によって、上の説明の”確率”の部分をランダムに指定することができます。”確率”をランダムにするということは、標準偏差の釣鐘型のエリアのどこかに点を打つ、というイメージです。

そうすると、以下の黄色部分のように平均点付近の点数が指定される確率が高いので、単にランダムに生成するよりも平均付近にデータを多く生成することができるのです。

例えば以下では、平均60点、標準偏差15で正規分布に従ったテストの点数をランダムに生成しています。

ROUND関数については以下を参照してください。

数式が入った状態でEnterを押すとまた別乱数になります。試しにヒストグラムを表示してみましたが、意図した通り、平均点付近にデータが多くなりました。

ところで、テストの場合は最低点と最高点が決まっていることがほとんどです。その場合に決まっている点数の範囲内に値を収めるには、以下のような方法があります。

IF関数については以下を参照ください。

コメント

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