# 既知の分散 sigma2 を与えて信頼係数 conf の信頼区間を求める conf.interval<-function(x,conf,sigma2){ n<-length(x) alpha<-1-conf k<-qnorm(1-alpha/2,0,1) barx<-mean(x) mL<-barx-k*sqrt(sigma2/n) mU<-barx+k*sqrt(sigma2/n) return(c(mL,mU)) } # 実行例 sigma2<-4 x<-rnorm(10,2,sqrt(sigma2)) conf.interval(x,0.95,sigma2) # $ N (0,\,1 ^2 ) $ から標本数 $ n = 10 $ の標本を 100 回繰り返し抽出し,信頼度 # $95\% $ の信頼区間を 100 個作成する. for (i in 1:100){ print(conf.interval(rnorm(10,0,1),0.95,1)) } # 信頼係数 conf の信頼区間を nsim 個求める sim.conf.interval<-function(nsim,n,conf){ result<-c() for (i in 1:nsim){ result<-rbind(result,conf.interval(rnorm(n),conf,1)) } result } # 実行例 sim.conf.interval(100,5,0.95) # 信頼区間の作図 plot.conf.interval<-function(r){ nsim<-nrow(r) gx<-c(0,0) gy<-c(0,nsim) rft<-apply(r,1,prod)>0 plot(gx,gy,type="l",xlim=range(-2,2),ylim=range(0,nsim)) for (i in 1:nsim){ if(!rft[i]) lines(c(r[i,1],r[i,2]),c(i,i),col=2) else lines(c(r[i,1],r[i,2]),c(i,i),col=3) } cat(length(which(rft)),"interval.\n") } # 実行例 plot.conf.interval(sim.conf.interval(100,5,0.80))