|
用R语言求置信区间是很方便的,而且很灵活,至少我觉得比spss好多了。
: Y+ o3 S6 k2 L X: H$ O如果你要求的只是95%的置信度的话,那么用一个很简单的命令就可以实现了
0 ?# B- Z" }" F- \& g. j3 N7 t首先,输入da=c(你的数据,用英文逗号分割),然后t.test(da),运行就能得到结果了。* S# e8 D: p, T1 v" }
我的数据是newbomb <- c(28,26,33,24,34,-44,27,16,40,-2,29,22,24,21,25,30,23,29,31,19)
& W0 j/ ?. [7 Q( h% {t.test(newbomb)得到的结果如下
; }5 Z; b- O; a" j( N C, Z5 y5 W4 L! g
如果要求任意置信度下的置信区间的话,就需要自己编一个函数了。
0 i5 {) b$ z! n当然,有两点要记住的,置信区间的计算在知道方差和不知道方差的情况下,计算公式是不一样的。
7 Z7 p, ~# k) a, q% @+ D" I下面做一个两种情况下都可以用的函数。
3 s/ B: N& Y2 \4 _confint<-function(x,sigma=-1,alpha=0.05)
6 @' O' `+ e7 j- _3 z' U, S {
$ h# n& K+ [0 [6 Y. U9 c; U n<-length(x)* q* `6 E" p" N: e2 J
xb<-mean(x)
$ }/ Z, |5 H }8 x if(sigma>=0)
3 a/ M; n' \0 E/ p8 _ {
+ M6 M' g' ?4 m$ Y tmp<-sigma/sqrt(n)*qnorm(1-alpha/2);df<-n
; e# T- ^. V1 B }
: d+ Q0 s5 g1 P6 x# j2 e" I else{/ a: k. k) R O B) M
tmp<-sd(x)/sqrt(n)*qt(1-alpha/2,n-1);df<- n-1; `+ r# O* _5 a* C5 e5 N- i+ [- X& W: F
}! s" N$ J7 g3 v! v
data.frame(mean=xb,df=df,a=xb-tmp,b=xb+tmp) W" }; }' U* @# x) o+ K7 d
}
) x8 R+ k; x2 M3 {- _这个函数的使用: 如果不知道方差,则confint(x,alpha) 知道方差,则confint(x,sigma,alpha)
3 z) y s* I8 h这样就能计算出结果了。 W( J2 J% {& ^& b) V: Z' v
' O4 z0 p; f- D3 K- q/ R8 V) U
: { U* U/ U+ L; r! L7 w" @; f |