#set document(title: "7.3 Sample Size Calculation for a Proportion", author: "Rachel Webb") #set page(width: 8.5in, height: auto, margin: 1in) #import "@preview/cetz:0.5.2" #set text(font: ("STIX Two Text", "Libertinus Serif", "New Computer Modern"), size: 10.5pt, lang: "en") #show math.equation: set text(font: ("STIX Two Math", "New Computer Modern Math")) #set par(justify: true, leading: 0.62em, spacing: 0.9em) #set enum(spacing: 1.1em) // room between list items so tall inline fractions don't collide #set list(spacing: 1.1em) #set table(stroke: 0.5pt + rgb("#c7ccd3")) #let BLUE = rgb("#183B6F") // brand navy — section bars + example/solution labels (white on navy 11.09:1) #let ORANGE = rgb("#A94509") // brand primary-700 — AA-safe deep orange for TEXT (5.93:1 on white; raw brand #F37021 is 2.94:1 and must never carry text) #let RED = rgb("#DC2626") // brand error-600 #let GREEN = rgb("#059669") // brand success-600 (decoration only; small green text uses green-text #007942) #show heading.where(level: 1): it => block(width: 100%, above: 0pt, below: 16pt, fill: gradient.linear(BLUE, rgb("#2C5AA0")), inset: (x: 14pt, y: 12pt), radius: 3pt, text(fill: white, weight: "bold", size: 19pt, it.body)) #show heading.where(level: 2): it => block(width: 100%, above: 18pt, below: 10pt, fill: BLUE, inset: (x: 10pt, y: 6pt), radius: 2pt, text(fill: white, weight: "bold", size: 12pt, it.body)) #show heading.where(level: 3): it => text(fill: ORANGE, weight: "bold", size: 12.5pt, it.body) #show heading.where(level: 4): it => text(fill: BLUE, weight: "bold", size: 10.5pt, it.body) #let examplebox(label, title, body) = block(width: 100%, breakable: true, fill: rgb("#EFF1F5"), stroke: 0.5pt + rgb("#CFDDF0"), radius: 4pt, inset: 10pt, above: 12pt, below: 12pt)[ #block(below: 6pt)[#box(fill: BLUE, inset: (x: 6pt, y: 2pt), radius: 2pt, text(fill: white, weight: "bold", size: 8.5pt, label)) #h(0.4em) #strong[#title]] #body] // rail = decorative left rule (raw brand token); labelcolor = AA-safe label text shade #let notebox(label, rail, labelcolor, tint, body) = block(width: 100%, breakable: true, fill: tint, stroke: (left: 3pt + rail), inset: (left: 10pt, rest: 8pt), radius: (right: 4pt), above: 11pt, below: 11pt)[ #text(fill: labelcolor, weight: "bold", size: 7.5pt, tracking: 0.5pt)[#upper(label)] #linebreak() #body] #let solutionbox(body) = block(above: 4pt, below: 8pt)[ #text(fill: BLUE, weight: "bold", size: 8.5pt)[Solution] #linebreak() #body] #let figph(msg) = block(width: 100%, height: 60pt, fill: rgb("#f6f7f9"), stroke: (paint: rgb("#c7ccd3"), dash: "dashed"), radius: 4pt, inset: 10pt)[ #align(center + horizon, text(fill: rgb("#889"), style: "italic", size: 9pt, msg))] // Standardize inlined figure sizes: measure the natural CeTZ canvas, then scale to a // consistent envelope (aspect-aware; see build_typst.py FIG_* constants). Unlike the // print preamble, dimensions are FLOORED: in an editor a user can trim a figure to a // degenerate 1-D shape (a bare line), and w/h or tw/w would then divide by zero. #let _STD_W = 3.5 #let _WIDE_W = 5.6 #let _MAX_H = 3.4 #let _ASPECT_WIDE = 2.2 #let _UPSCALE_MAX = 1.15 #let stdfig(body) = context { let m = measure(body) let w = calc.max(m.width / 1in, 0.01) let h = calc.max(m.height / 1in, 0.01) let tw = if w / h > _ASPECT_WIDE { _WIDE_W } else { _STD_W } let s = calc.min(tw / w, _MAX_H / h, _UPSCALE_MAX) align(center, box(scale(x: s * 100%, y: s * 100%, reflow: true, body))) } #show figure: set block(breakable: false) #set figure(gap: 8pt) #show figure.caption: set text(size: 8.5pt, fill: rgb("#555")) == 7.3#h(0.6em)Sample Size Calculation for a Proportion A confidence interval for a population proportion p and q = 1 – p, with specific margin of error E is given by: #notebox("Note", rgb("#8a94a6"), rgb("#556666"), rgb("#f7f8fa"))[ #math.equation(block: false, alt: "n equals p to the power * times q to the power * open parenthesis the fraction z sub α / 2 over E close parenthesis squared")[$n = p^(*) · q^(*) attach(( frac(z_(α / 2), E) ), t: 2)$] Always round up to the next whole number. ] Note: If the sample size is determined before the sample is selected, the p\* and q\* in the above equation are our best guesses. Often times statisticians will use p\* = q\* = 0.5; this takes the guesswork out of determining p\* and provides the “worst case scenario” for n. In other words, if p\* = 0.5 is used, then you are guaranteed that the margin of error will not exceed E but you also will have to sample the largest possible sample size. Some texts will use p or π instead of p\*. #examplebox("Example 1")[][ A study found that 73% of prekindergarten children ages 3 to 5 whose mothers had a bachelor’s degree or higher were enrolled in early childhood care and education programs. #notebox("Note", rgb("#8a94a6"), rgb("#556666"), rgb("#f7f8fa"))[ #emph[The only lookup in the sample-size formula] Opens the inverse-normal mode on area 0.975 and returns the 1.96 in n = p\*q\*(z/E)^2, so 0.73 x 0.27 x (1.96/0.03)^2 = 841.3104 rounds UP to n = 842, and the worst case p\* = 0.5 gives 1067.1111, so n = 1,068. Change the area to price out a different confidence level. - z for 95%: invNorm(0.975) = 1.96 ] + How large a sample is needed to estimate the true proportion within 3% with 95% confidence? + How large a sample is needed if you had no prior knowledge of the proportion? #solutionbox[ a) Use #math.equation(block: false, alt: "n equals p to the power * times q to the power * open parenthesis the fraction z sub α / 2 over E close parenthesis squared equals 0.73 times 0.27 open parenthesis the fraction 1.96 over 0.03 close parenthesis squared equals 841.3104")[$n = p^(*) · q^(*) attach(( frac(z_(α / 2), E) ), t: 2) = 0.73 · 0.27 attach(( frac(1.96, 0.03) ), t: 2) = 841.3104$]. Since we cannot have 0.3104 of a person, we need to round up to the next whole person and use n = 842. Don’t round down since we may not get within our margin of error for a smaller sample size. b) Since no proportion is given, use the planning value of p\* = 0.5. #math.equation(block: true, alt: "n equals 0.5 times 0.5 open parenthesis the fraction 1.96 over 0.03 close parenthesis squared equals 1067.1111")[$n = 0.5 · 0.5 attach(( frac(1.96, 0.03) ), t: 2) = 1067.1111$] Round up and use #math.equation(block: false, alt: "n equals 1 , 068")[$n = 1 , 068$]. ] ] Note the sample sizes of 842 and 1,068. If you have a prior knowledge about the sample proportion then you may not have to sample as many people to get the same margin of error. The larger the sample size, the smaller the confidence interval.