トピック18から正規分布の平均値を推測してきたが、そこでは標準偏差が「分かっているもの」(所与されているもの)だったが、これは現実的ではない。ここでは、標準偏差が所与でない場合の、正規分布母集団の平均値の推定を行う。
単純に、観測データの標準偏差を使うことを考える。しかしこれは、「観測データの標準偏差が母集団の標準偏差」となってしまう。そこで、この観測データの標準偏差 s を「調整」した、次を標準偏差とみなす
前回の 事前確率に一様分布 では 標準偏差 h = 10 の前提で求めたが、その観測データを使って、標準偏差を不明として平均年齢を推定する。
> x <- c(22,38,31,42,23,55,26,24,19,42,34,31)
> h <- sqrt(var(x))*(1+20/sqrt(length(x)))
> h/sqrt(length(x))
[1] 3.462731
母集団の標準偏差が 10 と分かっていた場合は、h / √n = 10 / √12 = 2.89(SE「標準誤差」のこと)で、今回の 約3.46 とは異なる値となった。その結果、平均値の推定も本来の母集団とは異なってしまう。
難しい問題だが、これが現実だ。母集団を反映するサンプルの必要性を感じる。
難しい問題だが、これが現実だ。母集団を反映するサンプルの必要性を感じる。
Activity 19-4: What is the Average Temperature in Bismarck?
課題:ある都市の1月の平均気温を、標準偏差が所与の場合とそうでない場合で「90%区間推定」する。観測値は
x <- c(-5,23,21,17,23,27,22,26,6,20)
> h0 <- 15/sqrt(length(x))
> h0
[1] 4.743416
x <- c(-5,23,21,17,23,27,22,26,6,20)
h0 <- 15/sqrt(length(x))
m <- mean(x)
curve(dnorm(x,m,h0),from=-10,to=50,n=100,
xlab="M",ylab="",main="Known STD")
p0<-qnorm(c(0.05,0.95),m,h0)
m0 <- seq(p0[1],p0[2],by=(p0[2]-p0[1])/99)
m0val <- c(m0,rev(m0))
y0val <- c(rep(0,100),dnorm(rev(m0),m,h0))
polygon(m0val,y0val,col="blue",density=c(20),angle=45)
text(40,0.06,"90% interval",col="blue")
> h <- sqrt(var(x))*(1+20/length(x)^2)
> h
[1] 11.98666
h <- sqrt(var(x))*(1+20/length(x)^2)
curve(dnorm(x,m,h),from=-10,to=50,n=100,xlab="M",ylab="",main="Unknown STD")
m1 <- seq(p[1],p[2],by=(p[2]-p[1])/99)
mval <- c(m1,rev(m1))
yval <- c(rep(0,100),dnorm(rev(m1),m,h))
polygon(mval,yval,col="blue",density=c(20),angle=45)
text(40,0.03,"90% interval",col="blue")
標準偏差 for Normal Prior Part1 に続く。
/* tex
*/



0 件のコメント:
コメントを投稿