最近工作中用到了区间估计,将自己程序中用到的方法整理如下,仅供参考~
interval_estimated <- function(x, sigma=-1, side=0, alpha=0.05){
n <- length(x); xb <- mean(x)
if (sigma >= 0){
if (side < 0){
tmp <- sigma/sqrt(n)*qnorm(1-alpha)
a <- -Inf; b <- xb+tmp
} else if (side > 0){
tmp <- sigma/sqrt(n)*qnorm(1-alpha)
a <- xb-tmp; b <- Inf
} else{
tmp <- sigma/sqrt(n)*qnorm(1-alpha/2)
a <- xb-tmp; b <- xb+tmp
}
df <- n
} else{
if (side < 0){
tmp <- sd(x)/sqrt(n)*qt(1-alpha,n-1)
a <- -Inf; b <- xb+tmp
} else if(side > 0){
tmp <- sd(x)/sqrt(n)*qt(1-alpha,n-1)
a <- xb-tmp; b <- Inf
} else{
tmp <- sd(x)/sqrt(n)*qt(1-alpha/2,n-1)
a <- xb-tmp; b <- xb+tmp
}
df <- n-1
}
data.frame(a=a, b=b)
}
在上述方法中,x是数据构成的向量。sigma是总体的标准差,sigma的默认值为-1,当标准差已知的时候,输入相应的值,程序采用正态分布估计区间端点,否则,程序采用t分布估计区间端点。side参数控制单双侧置信区间,默认值为0,当side<0时,求单侧置信区间的上限,当side>0时,求单侧置信区间下限,当side=0时,求双侧置信区间。该方法输出为区间的两个端点的值。