No.04262 Re: 比重の推定値 【青木繁伸】 2007/08/28(Tue) 11:29
以下のような R プログラムでシミュレーションしてみました。set.seed(12345) # 乱数の初期値設定(再現性確保のため)やや意外な結果となりました。
loop <- 100000 # 試行回数
x <- gendat2(loop*2, 0.9) # データ生成(母集団サイズは実際は無限母集団となる)
w <- x[,1]*0.3+140 # 平均値140,標準偏差0.3
v <- x[,2]*0.2+70 # 平均値70,標準偏差0.2
sim1 <- function(w, v) {
x <- outer(w, v, "/")
mean(x) # w, v の全ての組み合わせで比重を求めその平均値を返す
}
sim2 <- function(w, v) {
mean(w/v) # w, v に便宜的に測定値を対応付けて比重を求めその平均値を返す
}
sim3 <- function(w, v) {
mean(w)/mean(v) # w,v それぞれの平均値から比重を求めその平均値を返す
}
output <- function(x) { # 平均値と標準偏差を表示
str <- deparse(substitute(x))
cat(sprintf("%s: mean = %.15g, sd = %.15g\n", str, mean(x), sd(x)))
}
n <- 3
w1 <- matrix(sample(w, n*loop, replace=TRUE), loop) # n個のwをloopセット復元抽出
v1 <- matrix(sample(v, n*loop, replace=TRUE), loop) # n個のvをloopセット復元抽出
result1 <- sapply(1:loop, function(i) sim1(w1[i,], v1[i,])) # sim1で解析
result2 <- sapply(1:loop, function(i) sim2(w1[i,], v1[i,])) # sim2で解析
result3 <- sapply(1:loop, function(i) sim3(w1[i,], v1[i,])) # sim3で解析
output(result1) # それぞれ結果を表示
output(result2)
output(result3)
result1: mean = 1.99999433381713, sd = 0.00411718276908669
result2: mean = 1.99999434514443, sd = 0.0041171747206635
result3: mean = 1.99998345332055, sd = 0.00411715598489566
わざわざ全ての組み合わせで9通りの比重を出さなくても,便宜的に順序づけた3通りの比重で良さそう。さすがに平均値から比重を求めるのは少し劣るが,それでもそんなに大きな違いはない。
10回測定したとして(n=10)やってみると以下の通り
result1: mean = 2.0000068983649, sd = 0.00226272103526129
result2: mean = 2.00000689759157, sd = 0.00226273550382908
result3: mean = 1.99999221571126, sd = 0.00226264148136657
なお,母集団は復元抽出したので無限母集団,比重の真値は2
No.04278 Re: 比重の推定値 【エヌ氏】 2007/08/29(Wed) 10:00
ありがとうございました。
標本サイズnを増やすと真値(母平均)の推定信頼性が増す,つまり標準誤差が(1/√n)になりますが,3通りのW,Vの組合せを変えて9通りにしても標準誤差は減っていないということのようですね。
● 「統計学関連なんでもあり」の過去ログ--- 040 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る