20/12/14 13:24:34.56 cg4Dtd6W.net
これでいいはず
# 確率密度関数
pdf <- function(x,k=20) x^(k/2-1)*exp(-x/2)/(2^(k/2)*gamma(k/2))
curve(pdf(x),0,60)
# 累積分布関数
cdf <- function(x) integrate(pdf,0,x)$value
cdf=Vectorize(cdf)
# 逆累積分布関数
cdf_1 <- function(x) uniroot(function(p) cdf(p)-x, c(0,1e3))$root
# 下限値cを与えて95%信頼区間幅を返す
c2CI <- function(c) cdf_1(0.95+cdf(c)) - c # 95%信頼区間幅
# CI幅が最小となるcを算出
(c=optimize(c2CI,c(0,10))$minimum)
# CIの上限値
cdf_1(0.95+cdf(c))