|
用R语言求置信区间是很方便的,而且很灵活,至少我觉得比spss好多了。
7 @9 J4 p0 L7 P, Q: E' ^9 K2 @* `如果你要求的只是95%的置信度的话,那么用一个很简单的命令就可以实现了
. m% u7 Q; `, D( a首先,输入da=c(你的数据,用英文逗号分割),然后t.test(da),运行就能得到结果了。
% L% s+ k+ ~9 ~我的数据是newbomb <- c(28,26,33,24,34,-44,27,16,40,-2,29,22,24,21,25,30,23,29,31,19). J- n1 b' Z7 g' w6 q
t.test(newbomb)得到的结果如下8 ]3 r0 \8 U: ]" t9 ~
% {( r! S, T# M/ a* @7 W; ?/ i如果要求任意置信度下的置信区间的话,就需要自己编一个函数了。# [' {/ G* D X; }4 ?
当然,有两点要记住的,置信区间的计算在知道方差和不知道方差的情况下,计算公式是不一样的。7 e- ~6 x! Y: c" M7 x- n3 R) B
下面做一个两种情况下都可以用的函数。
) _! I, e# x, |- qconfint<-function(x,sigma=-1,alpha=0.05)0 M8 ~2 h2 e4 [
{
: }3 g# _( b( m+ N, G7 t1 B1 I n<-length(x)
) u" |0 h) M- k xb<-mean(x)
4 S$ g4 V1 k- Z if(sigma>=0)
7 H" O3 B% u l( E$ {7 q {
9 z. ^5 Y: b& L* J/ \8 t, }3 G tmp<-sigma/sqrt(n)*qnorm(1-alpha/2);df<-n2 D; ?3 l1 V% X
}: Q0 s2 W. I/ m8 _! S, n
else{
3 J* c! m1 c4 V1 p$ u9 g L8 e tmp<-sd(x)/sqrt(n)*qt(1-alpha/2,n-1);df<- n-1
2 ?: B' r$ B" ^( g3 U }
( [! y# I) x& L. X! v; K data.frame(mean=xb,df=df,a=xb-tmp,b=xb+tmp): L3 r/ Z9 L2 F( W" Q2 e
}
* s" l0 P% P1 S! }# e这个函数的使用: 如果不知道方差,则confint(x,alpha) 知道方差,则confint(x,sigma,alpha)
; e2 z3 {# \% }" p这样就能计算出结果了。 ( a/ W6 \9 ?( K; o: f
$ M6 z }1 `+ f/ O1 _7 h
. @% e7 k8 t( x( e4 W' k5 F |