|
用R语言求置信区间是很方便的,而且很灵活,至少我觉得比spss好多了。 + H$ ^( y7 Y. @- W( K/ D9 Q
如果你要求的只是95%的置信度的话,那么用一个很简单的命令就可以实现了
5 ]2 G4 z2 D1 P3 k: t* ]首先,输入da=c(你的数据,用英文逗号分割),然后t.test(da),运行就能得到结果了。
n8 z4 \) J5 N我的数据是newbomb <- c(28,26,33,24,34,-44,27,16,40,-2,29,22,24,21,25,30,23,29,31,19)- X. l/ \3 j5 A3 r! m
t.test(newbomb)得到的结果如下
z" w( F% t6 z& B+ P u1 d
. z" ^2 b) m* t3 X+ e" V+ E如果要求任意置信度下的置信区间的话,就需要自己编一个函数了。
y$ n# D1 ~! R3 i6 D8 f/ m' T当然,有两点要记住的,置信区间的计算在知道方差和不知道方差的情况下,计算公式是不一样的。) m8 u4 L2 ?0 f1 L) }
下面做一个两种情况下都可以用的函数。, a$ v! \% L9 x/ r$ g
confint<-function(x,sigma=-1,alpha=0.05)8 v4 w- s1 f/ l' T, x1 c
{
5 j. O& z- ~8 F3 Y( c4 x5 Q8 } n<-length(x)# O! ]0 n1 v6 s& |! _8 h# ~
xb<-mean(x)/ p N: Q) a% j* K( r$ @
if(sigma>=0)
3 } g; @! [) x4 K9 t6 @" G: X( X {7 x. w3 r# l Q- Y; Y; f+ U
tmp<-sigma/sqrt(n)*qnorm(1-alpha/2);df<-n
9 V9 W2 ^* p& l% |& r7 D }
) B2 A z" _9 F- J: L else{5 n. G8 _* u) S1 H# E- d$ B
tmp<-sd(x)/sqrt(n)*qt(1-alpha/2,n-1);df<- n-11 \6 Y) O% R5 f/ X0 b3 A
}
4 L* o2 Y4 { s3 L4 Q# l% W2 C# p data.frame(mean=xb,df=df,a=xb-tmp,b=xb+tmp): A. j' [* R3 C: r& t- U$ V
}
5 Y) P2 k2 @' M1 P这个函数的使用: 如果不知道方差,则confint(x,alpha) 知道方差,则confint(x,sigma,alpha)
: }. {# G2 n; `2 }) T4 v! R这样就能计算出结果了。
$ T6 b. p6 _; G/ ~) ]5 C1 m+ x) n I, P3 {; A, L! S* c. f
! @3 U) ?, u. q7 J
|