政策支持度機率計算
場景:
- 政府欲推動某向法案,舉辦 250 人之公聽會,其中執政黨中有 150 人,反對黨中有 100 人。
- 根據統計:
- 平均有 47% 的人支持此法案。
- 政黨傾向統計:
- 執政黨中有 64% 的人支持此法案。
- 反對黨中有 29% 的人支持此法案。
問題:
- (a) 在公聽會中,在未知政黨人數比例前,至少 50% 支持此法案的機率為何?
- (b) 在公聽會中,在已知政黨人數比例後,支持此法案的人數為何?
分析:
- 依問題特性可知,此為二項式機率分佈問題。
- 但因樣本數大,其分佈曲線趨近於標準常態分佈。
# 二項式機率 BinomialMean <- function(sampleSize, mySuccessProbability) { myMean <- sampleSize * mySuccessProbability myMean } BinomialStdDeviation <- function(sampleSize, mySuccessProbability) { myStdDeviation <- sqrt(sampleSize * mySuccessProbability * (1 - mySuccessProbability)) myStdDeviation } BinomialStdDeviation2 <- function(myMean, mySuccessProbability) { myStdDeviation <- sqrt(myMean * (1 - mySuccessProbability)) myStdDeviation } ############################################################################################## # 公聽會人數,執政黨人數,反對黨人數 sampleSize <- c(250, 150, 100) # 母體法案支持者比率,執政黨中法案支持者比率,反對黨中法案支持者比率 mySuccessProbability <- c(0.47, 0.64, 0.29) myMean <- BinomialMean(sampleSize[1], mySuccessProbability[1]) myStdDeviation <- BinomialStdDeviation2(myMean, mySuccessProbability[1]) # 至多 125 人(不含第 125 人),支持法案機率 mySampleSize <- 124.5 myProbability <- pnorm(mySampleSize[1], mean=myMean, sd=myStdDeviation) print(sprintf("母體支持機率=%.4f 樣本平均數=%.4f 當樣本數<=%.1f 時,支持機率=%.4f", mySuccessProbability[1], myMean, mySampleSize, myProbability)) # 至少 125 人(含第 125 人),支持法案機率 myProbability <- 1 - myProbability print(sprintf("母體支持機率=%.4f 樣本平均數=%.4f 當樣本數>=%.1f 時,支持機率=%.4f", mySuccessProbability[1], myMean, mySampleSize, myProbability)) myFavor <- sampleSize[2] * mySuccessProbability[2] myFavor <- myFavor + sampleSize[3] * mySuccessProbability[3] # 公聽會法案支持者人數 print(sprintf("公聽會支持法案人數=%d", round(myFavor)))