二項式置信區間的樣本量?
背景:
工作中的一個小組正在抽樣 1,000 名客戶進行聯繫,並從那時起確定這種努力是否值得。我想看看這個(幾乎)任意樣本大小值是否“足夠好”。
如果我們假設總體中成功的真實比例是 0.016 (1.6%),我需要多大的樣本量才能獲得 0.005 (0.5%) 的置信區間誤差“半寬度”) ? 這是我在 R 中的方法:
install.packages("Hmisc") library(Hmisc) target.halfWidth <- 0.005 sims <- 25000 #number of draws from binomial to perform p <- 0.016 #true proportion n <- seq(from=500, to=5000, by=100) #number of samples #hold results results <- matrix(numeric(0), length(n),2) #loop through desired sample size options for (i in 1: length(n)) { x <- rbinom(sims, n[i], p) #draws from binomial with p and n ci <- binconf(x, n[i] ,method="asymptotic", alpha=0.1) #normal theory 90% CI half_width <- ci[,3]-ci[, 1] #half width of CI #need the number where the half width is within the target range prob.halfWidth <- length(half_width[half_width<target.halfWidth])/sims #store results results[i, 1] <- n[i] results[i, 2] <- prob.halfWidth } #plot plot(results[, 2], results[, 1], type="b") results
該模擬表明,我們需要 2,200 個樣本才能有 95% 的置信度,即 90% CI 最多為 0.005。
問題:
- 這是一個合適的方法嗎?
- 有沒有更好的方法?
- 如果有一些亞群的有限樣本,你能給出什麼建議?假設我們想知道在沒有“很多”客戶可供選擇的人群中抽取多少樣本。或許某個群體只有5000人,比起一個有50000人可供選擇的群體,我們難道不能少拿幾個來下決心嗎?
在 MansT 回答後添加:
- 這有意義嗎,在我的模擬場景下,添加一個步驟:
prob.halfWidth <- 長度(half_width [half_width
僅當生成的 CI 還包含真實 p(即 0.016)時才增加分子? 2. 在您的代碼下,在處理有限樣本時將有限總體校正器FPC添加到您的行中是否也合適:
halfWidth <- qnorm(0.95) sqrt(p.est (1-p.est)/n) 3. 我不確定超幾何的 CI 公式,但也許我可以替換我的代碼行
ci <- binconf(x,n[i],method=“asymptotic”,alpha=0.1) #正常理論 90% CI
R中的Sprop函數?
(1) 是的。
(2) 是的。只有二項式隨機變量的可能結果,因此可以查看每個可能結果會發生什麼 - 實際上這比模擬大量結果要快!
讓是其中“成功”的數量客戶並讓. 置信區間為,所以半寬是. 因此我們要計算. 在 R 中,我們可以這樣做:
target.halfWidth<-0.005 p<-0.016 #true proportion n.vec<-seq(from=1000, to=3000, by=100) #number of samples # Vector to store results prob.hw<-rep(NA,length(n.vec)) # Loop through desired sample size options for (i in 1: length(n.vec)) { n<-n.vec[i] # Look at all possible outcomes x<-0:n p.est<-x/n # Compute halfwidth for each option halfWidth<-qnorm(0.95)*sqrt(p.est*(1-p.est)/n) # What is the probability that the halfwidth is less than 0.005? prob.hw[i]<-sum({halfWidth<=target.halfWidth}*dbinom(x,n,p)) } # Plot results plot(n.vec,prob.hw,type="b") abline(0.95,0,col=2) # Get the minimal n required n.vec[min(which(prob.hw>=0.95))]
答案是在這種情況下也是如此。
最後,驗證漸近正態逼近區間是否確實提供了所需的覆蓋率通常是一個好主意。在 R 中,我們可以將覆蓋概率(即實際置信度)計算為:
p<-0.016 n<-2200 x<-0:n p.est<-x/n halfWidth<-qnorm(0.95)*sqrt(p.est*(1-p.est)/n) # Coverage probability sum({abs(p-p.est)<=halfWidth}*dbinom(x,n,p))
不同的給出不同的覆蓋範圍。為了大約,名義上的實際置信水平間隔似乎大約一般來說,我認為這對你的目的來說是好的。
(3) 當您從有限總體中抽樣時,成功的次數不是二項式的,而是超幾何的。如果總體與您的樣本量相比很大,則二項式可以作為近似值。如果你從 5000 個樣本中抽取 1000 個樣本,比如說,它沒有。看看基於超幾何分佈的比例的置信區間!
其他問題的答案:
讓為置信區間。
1)在這種情況下,您不再計算但
即實際包含的區間長度的概率最多為 0.01。這可能是一個有趣的數量,取決於你對什麼感興趣…… 2)也許,但可能不是。如果總體規模與您不需要的樣本量相比較大,並且如果不是,則二項式分佈不適合開始!
3)
Sprop
似乎包含基於超幾何區間的置信區間,因此應該可以正常工作。