|
用R语言求置信区间是很方便的,而且很灵活,至少我觉得比spss好多了。
! C5 z7 z5 K4 N" e1 q5 u: x' t% X如果你要求的只是95%的置信度的话,那么用一个很简单的命令就可以实现了
3 N' ]' r% X3 \+ h# X* P首先,输入da=c(你的数据,用英文逗号分割),然后t.test(da),运行就能得到结果了。
$ }4 V! s) ?6 p& H; R我的数据是newbomb <- c(28,26,33,24,34,-44,27,16,40,-2,29,22,24,21,25,30,23,29,31,19)
p& L: l, k* X! A4 l/ u- Bt.test(newbomb)得到的结果如下
) t* o3 I0 m I4 W9 `' O& _. j0 |# f! L' i2 u
如果要求任意置信度下的置信区间的话,就需要自己编一个函数了。; k! a# r2 }/ I" |; i( L! ^
当然,有两点要记住的,置信区间的计算在知道方差和不知道方差的情况下,计算公式是不一样的。& e8 s% W. `& z+ |
下面做一个两种情况下都可以用的函数。
0 T# c5 O6 a" b& D- |! l* `+ Econfint<-function(x,sigma=-1,alpha=0.05)' t6 l; p( z% [
{
( Q6 [9 ^# n6 p3 X5 D- m n<-length(x)
+ c3 h8 z2 _% c xb<-mean(x)
' B5 v+ @' o* A- _ if(sigma>=0)
( _+ u: d, H& u3 ?- ^/ f3 U( O* i {
4 e" `& ^+ v' Y tmp<-sigma/sqrt(n)*qnorm(1-alpha/2);df<-n
' J7 x' c3 B4 {8 d }
9 `* T$ l, `, h4 Q else{1 W8 J+ p8 B$ y) h6 K$ ~9 {6 m2 C
tmp<-sd(x)/sqrt(n)*qt(1-alpha/2,n-1);df<- n-1
# D" V9 d$ E2 f( J B }
! Q" P2 N9 ] D3 M0 l data.frame(mean=xb,df=df,a=xb-tmp,b=xb+tmp)
" s4 v& I) R4 K; j }' H8 e. @% ^& z/ S3 i l5 A
这个函数的使用: 如果不知道方差,则confint(x,alpha) 知道方差,则confint(x,sigma,alpha)
2 b5 t- _6 v$ f这样就能计算出结果了。
1 V$ M3 M6 d) _8 w1 X! F6 R! T3 N
4 X4 `! |4 Z% C$ ]/ A+ e. \5 N: F B1 v+ j
|