データセットを作成し、そこから統計を計算するのは簡単です。逆はどうですか?
ある変数が平均X、標準偏差Yを持ち、正規(ガウス)分布を持っていると仮定するとします。分布に適合する「ランダムな」データセット(任意のサイズ)を生成するための最良の方法は何でしょうか?
編集:この種の開発は この質問 ;その方法で何かを作ることはできますが、もっと効率的な方法があるのではないかと思います。
Box-Mueller法 を使用して、standard正規確率変数を生成できます。次に、それを平均ミューと標準偏差シグマに変換するには、サンプルにシグマを掛けて、ミューを追加します。つまり標準正規分布の各zについて、mu + sigma * zを返します。
これは、Excelでnorminv()関数を使用して非常に簡単に実行できます。例:
= norminv(Rand()、100、15)
平均が100、標準偏差が15(人間のIQ)の正規分布から値を生成します。この数式を列の下にドラッグすると、必要な数の値が表示されます。
この問題がいくつかのプログラミング言語で解決されているページを見つけました。
[〜#〜] r [〜#〜] とリストの2番目のアルゴリズム ここ を使用した例を示します。
X<-4; Y<-2 # mean and std
z <- sapply(rep(0,100000), function(x) (sum(runif(12)) - 6) * Y + X)
plot(density(z))
> mean(z)
[1] 4.002347
> sd(z)
[1] 2.005114
> library(fUtilities)
> skewness(z,method ="moment")
[1] -0.003924771
attr(,"method")
[1] "moment"
> kurtosis(z,method ="moment")
[1] 2.882696
attr(,"method")
[1] "moment"
ガウス確率変数を生成する方法はいくつかあります。標準的な方法は、前述のBox-Meullerです。少し速いバージョンはここにあります:
http://en.wikipedia.org/wiki/Ziggurat_algorithm
ガウス変数の生成に関するウィキペディアのリファレンスは次のとおりです
http://en.wikipedia.org/wiki/Normal_distribution#Generating_values_from_normal_distribution
一種のモンテカルロシミュレーションにすることができます。広いランダムな「許容範囲」から始めて、いくつかの真にランダムな値を生成します。統計をチェックして、平均と分散がずれているかどうかを確認します。ランダム値の「許容範囲」を調整し、さらにいくつかの値を追加します。要件と母集団のサンプルサイズの両方に達するまで繰り返します。
頭のてっぺんから、あなたの考えを教えてください。 :-)
Statistics ToolboxのMATLAB関数 normrnd
は、指定されたミューとシグマで正規分布の乱数を生成できます。
正規分布のデータセットを生成するのは簡単です( http://en.wikipedia.org/wiki/Box%E2%80%93Muller_transform を参照)。
生成されたサンプルには正確なN(0,1)分布がないことに注意してください。あなたはそれを標準化する必要があります-平均を差し引き、次に標準偏差で割ります。次に、このサンプルを指定されたパラメーターを使用して正規分布に自由に変換できます。標準偏差を掛けてから、平均を追加します。