用R语言求置信区间是很方便的,而且很灵活,至少我觉得比spss好多了。
" U' k# F# m- T. t# O6 Z+ {! R如果你要求的只是95%的置信度的话,那么用一个很简单的命令就可以实现了
1 W& c; C/ o0 s6 e- k- N, ^首先,输入da=c(你的数据,用英文逗号分割),然后t.test(da),运行就能得到结果了。1 J8 |2 [. f* s! z' ]( Y& d8 J5 H
我的数据是newbomb <- c(28,26,33,24,34,-44,27,16,40,-2,29,22,24,21,25,30,23,29,31,19)) v+ L/ a# v: O& Q6 R- |
t.test(newbomb)得到的结果如下
1 |1 v5 Q6 j4 i& g0 d H' c$ P4 X6 \+ }. u' J3 b# T6 n
如果要求任意置信度下的置信区间的话,就需要自己编一个函数了。$ w5 ~% R* W6 q
当然,有两点要记住的,置信区间的计算在知道方差和不知道方差的情况下,计算公式是不一样的。8 w: f$ T( n. @0 {" D
下面做一个两种情况下都可以用的函数。
1 j, I1 ~: V; f! M& X: xconfint<-function(x,sigma=-1,alpha=0.05)
. s/ w h* Y& H! |& K5 o {' V( P0 E: i- S% ?
n<-length(x)
: g& @! }! V5 z3 z" H/ l xb<-mean(x)1 ]3 M. r% t% Z! |9 Q1 k. K) F
if(sigma>=0)
, T" q7 ~+ [: s9 q, H, Z {2 y( p2 M Y+ q0 N
tmp<-sigma/sqrt(n)*qnorm(1-alpha/2);df<-n
* S2 ~0 X7 n L- ]1 S }
, i5 i. c7 k4 N7 o' [ else{
( E9 X: e/ V+ ]2 v r) x3 J, b1 y: f tmp<-sd(x)/sqrt(n)*qt(1-alpha/2,n-1);df<- n-1
' G: J3 o' j8 \- W# Z }: k: h/ e- O$ y; c3 U/ W9 G3 n
data.frame(mean=xb,df=df,a=xb-tmp,b=xb+tmp)$ G# d2 C3 Z1 s# M6 N7 X
}
6 X# J8 \$ T' o. C0 N f3 G6 n这个函数的使用: 如果不知道方差,则confint(x,alpha) 知道方差,则confint(x,sigma,alpha) ' j2 \3 }$ T7 R! X
这样就能计算出结果了。
6 z; b0 j9 y. }1 B N9 V3 d, @5 _1 r5 y7 Z7 y* \6 K+ k; B- b i* m
$ B2 ]# }# [* _# S q, Z/ l
|