单侧置信下限

Python020

单侧置信下限,第1张

单侧置信下限就是单侧置信区间设置在被估参数一侧,左侧或右侧的置信区间。这样求得的置信区间称为单侧置信下限。

所以说单侧置信区间是置信区间的一部分

置信区间

95%置信区间(Confidence Interval,CI):当给出某个估计值的95%置信区间为【a,b】时,可以理解为我们有95%的信心(Confidence)可以说样本的平均值介于a到b之间,而发生错误的概率为5%。

置信区间具体计算方式为:

假设知道样本均值(M)和标准差(ST)时:

置信区间下限:a=M - n*ST置信区间上限:a=M + n*ST

当求取90% 置信区间时 n=1.645

当求取95% 置信区间时 n=1.96

当求取99% 置信区间时 n=2.576

【资料拓展】

置信区间是一种常用的区间估计方法,所谓置信区间就是分别以统计量的置信上限和置信下限为上下界构成的区间 [2] 。对于一组给定的样本数据,其平均值为μ,标准偏差为σ,则其整体数据的平均值的100(1-α)%置信区间为(μ-Ζα/2σ , μ+Ζα/2σ) ,其中α为非置信水平在正态分布内的覆盖面积 ,Ζα/2即为对应的标准分数。

置信区间的计算公式取决于所用到的统计量。置信区间是在预先确定好的显著性水平下计算出来的,显著性水平通常称为α(希腊字母alpha),如前所述,绝大多数情况会将α设为0.05。置信度为(1-α),或者100×(1-α)%。于是,如果α=0.05,那么置信度则是0.95或95%,后一种表示方式更为常用。

求解步骤

第一步:求一个样本的均值

第二步:计算出抽样误差。经过实践,通常认为调查:100个样本的抽样误差为±10%;500个样本的抽样误差为±5%;1200个样本时的抽样误差为±3%。

第三步:用第一步求出的“样本均值”加、减第二步计算的“抽样误差”,得出置信区间的两个端点。

1、在置信水平相同的情况下,样本量越多,置信区间越窄。

2、置信区间变窄的速度不像样本量增加的速度那么快,也就是说并不是样本量增加一倍,置信区间也变窄一半(实践证明,样本量要增加4倍,置信区间才能变窄一半),所以当样本量达到一个量时(通常是1,200),就不再增加样本了。故:置信区间=点估计 ±(关键值 × 点估计的标准差)。在其他因素不变的情况下,样本量越多(大),置信区间越窄(小)。

美国做了一项对总统工作满意度的调查。在调查抽取的1,200人中,有60%的人赞扬了总统的工作,抽样误差为±3%,置信水平为95%;如果将抽样误差减少为±2.3%,置信水平降到为90%。

用predict就能做到。

predict的用法:

predict(object, newdata, se.fit = FALSE, scale = NULL, df = Inf,

interval = c("none", "confidence", "prediction"),

level = 0.95, type = c("response", "terms"),

terms = NULL, na.action = na.pass,

pred.var = res.var/weights, weights = 1, ...)

只要注意其中的object,newdata,interval,level,type就行。

object是你的回归模型。

newdata是使用的数据。

interval选confidence或者"c"。

level是置信水平。

type在计算响应变量时使用response,对变量计算使用terms。如果是terms,需要用后面的terms参数指定变量名(character类型向量形式)。

response的话返回一个数据框,三列,分别是预测值,区间下限和上限。

terms返回一个list。

用R语言求置信区间是很方便的,而且很灵活,至少我觉得比spss好多了。

如果你要求的只是95%的置信度的话,那么用一个很简单的命令就可以实现了

首先,输入da=c(你的数据,用英文逗号分割),然后t.test(da),运行就能得到结果了。

我的数据是newbomb <- c(28,26,33,24,34,-44,27,16,40,-2,29,22,24,21,25,30,23,29,31,19)

t.test(newbomb)得到的结果如下

如果要求任意置信度下的置信区间的话,就需要自己编一个函数了。

当然,有两点要记住的,置信区间的计算在知道方差和不知道方差的情况下,计算公式是不一样的。

下面做一个两种情况下都可以用的函数。

confint<-function(x,sigma=-1,alpha=0.05)

{

n<-length(x)

xb<-mean(x)

if(sigma>=0)

{

tmp<-sigma/sqrt(n)*qnorm(1-alpha/2)df<-n

}

else{

tmp<-sd(x)/sqrt(n)*qt(1-alpha/2,n-1)df<- n-1

}

data.frame(mean=xb,df=df,a=xb-tmp,b=xb+tmp)

}

这个函数的使用:

如果不知道方差,则confint(x,alpha) 知道方差,则confint(x,sigma,alpha)

这样就能计算出结果了。