|
用R语言求置信区间是很方便的,而且很灵活,至少我觉得比spss好多了。 1 K9 R0 N5 m$ P* ^
如果你要求的只是95%的置信度的话,那么用一个很简单的命令就可以实现了
+ |' E g4 a6 ?1 E首先,输入da=c(你的数据,用英文逗号分割),然后t.test(da),运行就能得到结果了。
* \+ q" b9 w k3 Z( }( F( @我的数据是newbomb <- c(28,26,33,24,34,-44,27,16,40,-2,29,22,24,21,25,30,23,29,31,19)
$ e) P. A. J2 e% y7 o/ R/ gt.test(newbomb)得到的结果如下4 z. g1 m# k( ]
' c- b& u3 t. A1 _* ?. }' y: @
如果要求任意置信度下的置信区间的话,就需要自己编一个函数了。
% I& _: \; x3 \5 p( y' p5 P+ A6 p当然,有两点要记住的,置信区间的计算在知道方差和不知道方差的情况下,计算公式是不一样的。
1 Y1 N; [3 w/ W' |9 E* Z, d. D下面做一个两种情况下都可以用的函数。/ x1 u8 x( H$ w+ v: w9 M: @
confint<-function(x,sigma=-1,alpha=0.05)
/ j; F3 t- R9 L {
! _5 s6 Q. z& u3 R" r n<-length(x)/ Z+ ?0 K( N4 c% Q( w9 E
xb<-mean(x)* o- A7 L* y8 f+ r
if(sigma>=0)
1 u: D' B5 _5 V! F( N {
. ?( ^' a$ N" p% ?9 t tmp<-sigma/sqrt(n)*qnorm(1-alpha/2);df<-n
8 K$ l5 z+ {6 _; h+ T; c7 N }! v: x! Z: |9 X$ R
else{! C% J, S. i) L) Y* m
tmp<-sd(x)/sqrt(n)*qt(1-alpha/2,n-1);df<- n-1
5 M9 b/ {# e$ x }& l2 m6 p0 b: i! B* k: p$ _3 z/ O
data.frame(mean=xb,df=df,a=xb-tmp,b=xb+tmp)
( ^6 v3 t3 S, P4 \) d& r& p; P }0 E5 W% G8 a# J) ]( O
这个函数的使用: 如果不知道方差,则confint(x,alpha) 知道方差,则confint(x,sigma,alpha) ! ] M8 m/ ~5 ~" o3 T
这样就能计算出结果了。
7 S) c- U1 [' A% M4 _
. H {6 E. y! g' c# I6 T$ b
$ `$ |# u8 ^; Q7 U5 W; k' u |