|
用R语言求置信区间是很方便的,而且很灵活,至少我觉得比spss好多了。
; s" O( f; g `9 g/ _9 Y如果你要求的只是95%的置信度的话,那么用一个很简单的命令就可以实现了
; G3 _! _/ u8 p/ z: }首先,输入da=c(你的数据,用英文逗号分割),然后t.test(da),运行就能得到结果了。6 H5 ?% O- a1 Y2 n- R
我的数据是newbomb <- c(28,26,33,24,34,-44,27,16,40,-2,29,22,24,21,25,30,23,29,31,19)& b, V8 \5 n5 t, @0 U) _
t.test(newbomb)得到的结果如下
0 n z' t; I$ E: ?! ]: Z- L% v
* k9 M2 X4 r$ q! _ M8 u如果要求任意置信度下的置信区间的话,就需要自己编一个函数了。/ h+ s* q- [5 s" V8 p- P+ b
当然,有两点要记住的,置信区间的计算在知道方差和不知道方差的情况下,计算公式是不一样的。' u) H! D6 S4 W- k/ p1 W- T/ t
下面做一个两种情况下都可以用的函数。 ]$ t% b# d9 d/ W
confint<-function(x,sigma=-1,alpha=0.05)1 [3 @7 b" \ z' p
{, P* A, w2 S) [1 y
n<-length(x)2 x9 E B; X% z
xb<-mean(x): o1 N" r! r: k
if(sigma>=0)
6 \4 h+ J9 ?6 r' b {
9 `( _, m- d+ G: @ q# Q tmp<-sigma/sqrt(n)*qnorm(1-alpha/2);df<-n. `2 l% X+ i% H$ {6 B
}
% H' l( S# |* Z0 [. o else{% C& @* n: [3 y6 [0 Y1 ?) s
tmp<-sd(x)/sqrt(n)*qt(1-alpha/2,n-1);df<- n-1- @6 _) o8 _: F, W% F+ y! I
}
, e; s6 o& a" v) F2 q9 a$ k data.frame(mean=xb,df=df,a=xb-tmp,b=xb+tmp)
' K I S# R. W4 o+ H/ F% D) L. _6 B }* Z; n9 N* u2 E' \4 o! I
这个函数的使用: 如果不知道方差,则confint(x,alpha) 知道方差,则confint(x,sigma,alpha)
% ^" p" j9 B. o6 s* T) A4 F' x% ?! Z& W这样就能计算出结果了。
# B* _! l' C- e( X" R; v/ ~& l/ L' G( D
1 _9 E/ r# r' Y: I' V: p6 N |