Julia程式碼 using Distributions, Plots, LaTeXStrings; pyplot()
# 定義函數statPair(),
# 計算給定不同分配及特定樣本大小的情況下的樣本平均及樣本變異數
function statPair(dist,n)
sample = rand(dist,n)
[mean(sample),var(sample)]
end
# uniform分配
stdUni = Uniform(-sqrt(3),sqrt(3))
n, N = 3, 10^5
# 模擬母體分配為uniform分配情況下其
# 抽樣得到的樣本平均及樣本變異數的數值
dataUni = [statPair(stdUni,n) for _ in 1:N]
# 模擬母體分配為uniform時
# 計算若樣本平均及樣本變異為獨立的數字
dataUniInd = [[mean(rand(stdUni,n)),var(rand(stdUni,n))] for _ in 1:N]
# 模擬母體分配為Normal分配情況下其
# 抽樣得到的樣本平均及樣本變異數的數值
dataNorm = [statPair(Normal(),n) for _ in 1:N]
# 模擬母體分配為Normal時
# 計算若樣本平均及樣本變異為獨立的數字
dataNormInd = [[mean(rand(Normal(),n)),var(rand(Normal(),n))] for _ in 1:N]
p1 = scatter(first.(dataUni), last.(dataUni),
c=:blue, ms=1, msw=0, label="Same group")
p1 = scatter!(first.(dataUniInd), last.(dataUniInd),
c=:red, ms=0.8, msw=0, label="Separate group",
xlabel=L"\overline{X}", ylabel=L"S^2")
p2 = scatter(first.(dataNorm), last.(dataNorm),
c=:blue, ms=1, msw=0, label="Same group")
p2 = scatter!(first.(dataNormInd), last.(dataNormInd),
c=:red, ms=0.8, msw=0, label="Separate group",
xlabel=L"\overline{X}", ylabel=L"$S^2$")
# 從圖中可以很清楚的看出在uniform分配時
# 若樣本平均及樣本變異為獨立抽樣,所計算出的數字的分布和
# 樣本平均及樣本變異由同一樣本一起計算出的數字的分布
# 有所差異。
# 而在Normal分配時
# 若樣本平均及樣本變異為獨立抽樣,所計算出的數字的分布和
# 樣本平均及樣本變異由同一樣本一起計算出的數字的分布
# 並無差別。
plot(p1, p2, ylims=(0,5), size=(800, 400))
Originally published at on August 6, 2020.