6.3兩正態總體的區間估計
(1)兩個總體的方差已知
在R中編寫計算置信區間的函數twosample.ci()如下,輸入參數為樣本x, y,置信度α和兩個樣本的標准差。
> twosample.ci=function(x,y,alpha,sigma1,sigma2){ + n1=length(x);n2=length(y) + xbar=mean(x)-mean(y) + z=qnorm(1-alpha/2)*sqrt(sigma1^2/n1+sigma2^2/n2) + c(xbar-z,xbar+z) + }
前面介紹的Z檢驗函數z.test()可以在兩總體方差已知的情況下,計算兩總體均值差的置信區間,分別用參數sigma.x和sigma.y來說明已知的標准差數值即可。
例:
Bamberger's是一家為社區提供大眾性商品的零傳商店,為了努力維持商店的良好聲譽,公司實施了將營業時間延長至夜間的計划。以Bamberger's延長營業時間前后27個典型周的銷售額數據為例(以萬元為單位),計算這兩個樣本均值差的區間估計,從而可以看出計划實施后的效果。首先查看數據的基本類型,並繪制直方圖對比。
> sales=read.table("D:/Program Files/RStudio/sales.txt",header=T) > head(sales) prior post 1 67.90 86.10 2 76.12 71.13 3 68.64 116.25 4 74.94 102.60 5 63.32 97.51 6 50.43 65.39 > attach(sales) > par(mfrow=c(1,2)) > hist(prior) #分別繪制計划前后銷售額的直方圖 > hist(post)
從直方圖可以看出,銷售額樣本大致呈正態分布,假設已知計划實施前后的總體標准差分別為8和12,調用上面寫好的函數,計算樣本均值差在置信水平為1-a下的置信區間
> twosample.ci(post,prior,alpha=0.05,8,12) [1] 19.10298 29.98295 > z.test(post,prior,sigma.x=8,sigma.y=12)$conf.int [1] 19.10298 29.98295 attr(,"conf.level") [1] 0.95
區間估計的結果是,Bamberger's公司延長營業時間后周營業額明顯增加,增加額的范圍是[19.10, 29.98]
(2)兩個總體的方差未知但相等
正如計算單.正態總體均值的置信區間,R中的函數t.test()還可以用來求兩總體均值差的置信區間,山於總體方差相等,需要將其中的參數var.equal設為TRUE。
> t.test(post,prior,var.equal=TRUE)$conf.int [1] 18.66541 30.42051 attr(,"conf.level") [1] 0.95
由計算結果同樣可以得到結論:Barnberger's公司延長營業時間后周營業額明顯增加,在0.95的置信水平下,營業額增加的置信區間是[18.67,30.42]
(3) 兩個總體的方差未知且不等
R中也沒有直接的函數可用,仍需要手動寫出一個函數twasarnple.ci2()
> twosample.ci2=function(x,y,alpha){ + n1=length(x);n2=length(y) + xbar=mean(x)-mean(y) + S1=var(x);S2=var(y) + nu=(S1/n1+S2/n2)^2/(S1^2/n1^2/(n1-1)+S2^2/n2^2/(n2-1)) + z=qt(1-alpha/2,nu)*sqrt(S1/n1+S2/n2) + c(xbar-z,xbar+z) + }
在實際分析中,兩總體的方差未知且不等是最常見的情況,在Bamberger's公司的案例中如果延長營業時間前后的方差未知並且不相等,就要通過上面編寫的函數計算樣本均位差的置信區間:
> twosample.ci2(post,prior,0.05) [1] 18.63821 30.44771
相比之前,營業時間延長后的樣本均值明顯增加,兩樣本均值差的置信區問為[18.64, 30.45]由於方差未知,在做區間估計時可利用的信息更少,因此在相同置信水平下,這時估計得到的置信區間相對更寬一些。
6.3.2兩方差比的區間估計
方差比的區問估計與方差的假設檢驗密不可分,所以R中的函數var.test()可以用來直接計算兩正態總體方拾比的置信區間,調用格式如下:
var.test(x, y, ratio = 1, alternative = c("two.sided", "less", "greater"), conf.level = 0.95, ...) > var.test(prior,post)$conf.int [1] 0.1772458 0.8534348 attr(,"conf.level") [1] 0.95
通過函數var.test()計算后的結果可以看出,兩樣本方差比在95%置信水平下的區間估計為[0.1772, 0.8534],這說明延長營業額后,周營業額的波動性變大。
6.4關於比率的區間估計
比率的估計在R中實現起來也比較簡單,函數prop.test()可以直接完成對P的估計和檢驗,其調用格式為
prop.test(x, n, p = NULL,
alternative = c("two.sided", "less", "greater"),
conf.level = 0.95, correct = TRUE)
其中,參數x為具有某種特征的樣本個數;n為樣本量;P設置假設檢驗時原假設的比率值;correct是邏輯值,設置是否應用Yates連續性修正,默認為TRUE
例:
某市為了解居民住房情況,抽查了n=2000戶家庭,其中人均不足5平米的困難戶有x=214個,通過樣本信息計算該市困難戶比率P的置信區間(置信度為0.95)
> prop.test(214,2000) 1-sample proportions test with continuity correction data: 214 out of 2000, null probability 0.5 X-squared = 1234, df = 1, p-value < 2.2e-16 alternative hypothesis: true p is not equal to 0.5 95 percent confidence interval: 0.09396256 0.12157198 sample estimates: p 0.107
比率檢驗函數的計算結果表明,在95%的置信水平下,困難戶比率的區間估計為[0.0940,0.1216],而最后一行的P值給出的是點估計,該市困難戶比率為0.107
事實上,當樣本數足夠多時,x服從超兒何分布,上面我們用的是正態分布近似,但當抽樣比很小時還可以用二項分布來近似,這時用到的函數是二項式檢驗binom.test(),其調用格式如下,內部參數與prop.test()一致。在上例中,如果該市的總人口數較大,那么抽樣比很小,就應當用二項分布近似:
> binom.test(214,2000) Exact binomial test data: 214 and 2000 number of successes = 214, number of trials = 2000, p-value < 2.2e-16 alternative hypothesis: true probability of success is not equal to 0.5 95 percent confidence interval: 0.09378632 0.12137786 sample estimates: probability of success 0.107
二項式檢驗的結果表明,在95%的置信水平下,困難戶比率的區間估計為[0.0938, 0.1214],這與修正正態近似的結果非常接近,點估計值仍為0.107