|
用R语言求置信区间是很方便的,而且很灵活,至少我觉得比spss好多了。 * c9 t" `& I/ H; n+ r, K# y" h8 ~
如果你要求的只是95%的置信度的话,那么用一个很简单的命令就可以实现了5 \7 p; M6 s6 r& R9 z/ i- }
首先,输入da=c(你的数据,用英文逗号分割),然后t.test(da),运行就能得到结果了。
2 r; `" }' f( N0 _7 b我的数据是newbomb <- c(28,26,33,24,34,-44,27,16,40,-2,29,22,24,21,25,30,23,29,31,19), p, x+ A; b Z2 k& ?7 a
t.test(newbomb)得到的结果如下
& H; p5 I) ^9 _$ f. F
$ |6 A1 {3 \1 s2 ~2 m. H9 `* A) t如果要求任意置信度下的置信区间的话,就需要自己编一个函数了。
( j! w7 ^ f* W& g! k当然,有两点要记住的,置信区间的计算在知道方差和不知道方差的情况下,计算公式是不一样的。
# y3 z# C4 T7 M+ q u9 K; W3 V下面做一个两种情况下都可以用的函数。: h' y; D; U2 X
confint<-function(x,sigma=-1,alpha=0.05)
) Y9 d) z6 ^% b1 I: X) w; L {5 {+ n* ^( Q& O Z% _1 ]. G3 B
n<-length(x)7 w+ `" g, G3 B, h
xb<-mean(x)% Z. @" ^* Q2 Y _5 B
if(sigma>=0)
& k+ X% D v+ F8 t {
- B4 ]/ [( r! b tmp<-sigma/sqrt(n)*qnorm(1-alpha/2);df<-n$ V6 b: j0 _7 K, ^/ H& a% Q
}; a) B( J8 K! A) c5 h0 E1 H/ V$ y
else{) L6 Z+ b. L C$ C0 @
tmp<-sd(x)/sqrt(n)*qt(1-alpha/2,n-1);df<- n-1
: L5 x8 U n. m5 k0 z1 i6 e8 @' M }
4 b2 r2 C* C. h# ~ data.frame(mean=xb,df=df,a=xb-tmp,b=xb+tmp). b6 X4 B/ ^. z3 `- G0 v% f
}; D X0 i3 U! P; c9 C9 p* C# K
这个函数的使用: 如果不知道方差,则confint(x,alpha) 知道方差,则confint(x,sigma,alpha)
' Z) ^ r8 I7 C: O% u; `4 M这样就能计算出结果了。 6 q' _$ i9 Q" B) Q& A+ f q6 t6 X
; F4 v5 A1 o3 E- N0 n) N( H I9 k6 A( l# k" n8 I
|