R语言求单侧置信区间或双侧置信区间

       最近工作中用到了区间估计,将自己程序中用到的方法整理如下,仅供参考~


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时,求双侧置信区间。该方法输出为区间的两个端点的值。

猜你喜欢

转载自blog.csdn.net/gdkyxy2013/article/details/80976383