中心極限定理

Juliaを用いて,一様分布からsize個をサンプリングして標本平均を求めることを1000回繰り返し,size個を大きくしていくと標本平均正規分布に従うことを示す.

using PyPlot
using Statistics
using Distributions

fig = figure(figsize=(20, 12), dpi=200)

# 標本の大きさのリスト
size_list = [1, 2,5, 10, 50, 100, 500, 1000, 5000, 10000, 50000, 100000]

# 一様分布U(loc, loc+scale)のパラメータ
# loc は分布の開始点(最小値), scale は分布の幅
loc = 0
scale = 10

for (i, size) in pairs(size_list) # インデックスを1から開始する
ax = fig.add_subplot(2, 7, i)
title("\$size=$size\$")

# 一様分布からsize個サンプリングして標本平均を求めることを1000回繰り返す
sm = zeros(1000)
for j in 1:1000
vals = rand(Uniform(loc, loc+scale), size)
# size個の平均を計算
sm[j] = mean(vals)
end

# 一様分布の平均と分散を計算
mu = mean(Uniform(loc, loc+scale))
var = Statistics.var(Uniform(loc, loc+scale))

# 一様分布の標本平均の分布をヒストグラムとして描画
# plt[:hist] は、PythonのMatplotlibライブラリをJuliaから呼び出すために
# 用いる.ヒストグラムの描画.
plt[:hist](sm, alpha=0.4, label="sm", bins=20, density=true)

# 正規分布のpdfを描画
# 99%点まで描画
# 信頼係数99%のとき,標準正規分布において上側0.5%点は2.58
x = collect(mu-2.58*(var/size)^0.5:0.001:mu+2.58*(var/size)^0.5)
# pdfの値を生成
norm_vals = pdf(Normal(mu, (var/size)^0.5), x)
# plt[:plot] は、PythonのMatplotlibライブラリをJuliaから呼び出すために
# 用いる.折れ線グラフの描画.
plt[:plot](x, norm_vals, label="norm")

# グラフに凡例(legend)を追加
legend()
end

Mathematics is the language with which God has written the universe.





















view関数 変数と関数の構造体としての定義 数値微分 t分布の正規分布近似 マトリョーシカ特徴表現学習 LISA