求算樣本數(Determine the Sample Size)

公式:

    • 已知

      • 母體標準差(Population Standard Deviation)

      • 誤差界限(Margin Error)

      • 信任區間(Confidence Interval)

    • 已知

      • 母體區間值 = 母體最大值 - 母體最小值

      • 母體標準差 = 母體區間值 / 4

GNU R:

# 已知母體標準差,求誤差界限 # 樣本標準差 SampleStdDeviation <- function(populationStdDeviation, sampleSize) { sampleStdDeviation <- (populationStdDeviation) / (sampleSize - 1) sampleStdDeviation } # 樣本誤差 SampleStdError <- function(sampleStdDeviation) { sampleStdError <- sampleStdDeviation sampleStdError } # 從機率反求 z 值 z <- function(probability) { myZ <- qnorm(probability) myZ } # 誤差界限 MarginError <- function(populationStdDeviation, sampleSize, confidenceInterval) { myZ <- z(confidenceInterval + (1-confidenceInterval)/2) marginError <- myZ * (populationStdDeviation / sqrt(sampleSize)) marginError } # 母體標準差預計值 PlanningValueOfPopulationStdDeviation <- function(rangeOfData) { planningValue <- rangeOfData / 4 planningValue } # 已知母體標準差,誤差界限,及信任區間,求樣本數 SampleSizeOfPupolationStdDeviationMarginErrorConfidenceInterval <- function(populationStdDeviation, marginError, confidenceInterval) { myZ <- z(confidenceInterval + (1-confidenceInterval)/2) mySampleSize <- (myZ * populationStdDeviation) / marginError sampleSize <- round(mySampleSize ^ 2, 0) sampleSize } PrintOut <- function(sampleSize, sampleStdError, confidenceInterval, marginError) { print(sprintf("樣本數=%4d 樣本標準誤差=%.4f 信任區間=%.4f 誤差界限=%.4f [%8.4f, %+8.4f]", sampleSize, sampleStdError, confidenceInterval, marginError, 0-marginError, marginError)) } ############################################################################################################# # 已知 populationStdDeviation <- 40 confidenceInterval <- 0.95 marginError <- 10 # 求算 sampleSize <- SampleSizeOfPupolationStdDeviationMarginErrorConfidenceInterval(populationStdDeviation, marginError, confidenceInterval) sampleStdDeviation <- SampleStdDeviation(populationStdDeviation, sampleSize) sampleStdError <- SampleStdError(sampleStdDeviation) PrintOut(sampleSize, sampleStdError, confidenceInterval, marginError) # 樣本數= 61 樣本標準誤差=0.6667 信任區間=0.9500 誤差界限=10.0000 [-10.0000, +10.0000] ############################################################################################################# # 已知 rangeOfData <- 36 # 求算 populationStdDeviation <- PlanningValueOfPopulationStdDeviation(rangeOfData) # 已知 confidenceInterval <- 0.95 marginError <- c(3, 2) # 求算 for (myMarginError in marginError) { sampleSize <- SampleSizeOfPupolationStdDeviationMarginErrorConfidenceInterval(populationStdDeviation, myMarginError, confidenceInterval) sampleStdDeviation <- SampleStdDeviation(populationStdDeviation, sampleSize) sampleStdError <- SampleStdError(sampleStdDeviation) PrintOut(sampleSize, sampleStdError, confidenceInterval, myMarginError) } # 樣本數= 34 樣本標準誤差=0.2727 信任區間=0.9500 誤差界限=3.0000 [ -3.0000, +3.0000] # 樣本數= 77 樣本標準誤差=0.1184 信任區間=0.9500 誤差界限=2.0000 [ -2.0000, +2.0000] #############################################################################################################

應用: