#set document(title: "13.3 Ranking Data", 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")) == 13.3#h(0.6em)Ranking Data The last few sections in this chapter require one to rank a data set. To rank a data set, you first must arrange the data from smallest to largest. The smallest value gets a rank of 1, the next smallest gets a rank of 2, etc. If there are any values that tie, then each of the tied values gets the average of the corresponding ranks. \# rank() averages tied ranks by default - exactly the midrank rule above x \<- c(8, -4, 1, -3, 5, 2, -3, 0, 5, 3, 5) data.frame(sorted = sort(x), rank = rank(sort(x))) \# -\> 1, 2.5, 2.5, 4, 5, 6, 7, 9, 9, 9, 11 (both -3s share 2.5; the three 5s share 9) \# Second sample: what rank does 15 get? y \<- c(10, 25, 15, 8, 20, 15, 10, 9, 8, 22) rank(y)\[y == 15\] \# -\> 6.5 \# Change one value to break a tie and watch the whole rank column shift #examplebox("Example 1")[][ Rank the following random sample: #math.equation(block: false, alt: "8 , minus 4 , 1 , minus 3 , 5 , 2 , minus 3 , 0 , 5 , 3 , 5.")[$8 , − 4 , 1 , − 3 , 5 , 2 , − 3 , 0 , 5 , 3 , 5 .$] #solutionbox[ First, sort the data from smallest to largest: #math.equation(block: false, alt: "minus 4 , minus 3 , minus 3 , 0 , 1 , 2 , 3 , 5 , 5 , 5 , 8")[$− 4 , − 3 , − 3 , 0 , 1 , 2 , 3 , 5 , 5 , 5 , 8$] Next, rank the data. The #math.equation(block: false, alt: "minus 4")[$− 4$] gets a rank of 1. There is a tie between the next two values of #math.equation(block: false, alt: "minus 3")[$− 3$]. They would have received the ranks of 2 and 3, but we do not want one of the values to be ranked higher than the other so we give both #math.equation(block: false, alt: "minus 3")[$− 3$]’s a rank of #math.equation(block: false, alt: "the fraction 2 plus 3 over 2 equals 2.5")[$frac(2 + 3, 2) = 2.5$]. Then the next value of #math.equation(block: false, alt: "0")[$0$] gets a rank of 4 (we already used the 2nd and 3rd positions). The next set of ties for the three #math.equation(block: false, alt: "5")[$5$]’s occurs for the rank of 8th, 9th and 10th place. The average of these ranks is #math.equation(block: false, alt: "the fraction 8 plus 9 plus 10 over 3 equals 9")[$frac(8 + 9 + 10, 3) = 9$]. The following is a table of the sorted data with the corresponding ranks. Data #math.equation(block: false, alt: "minus 4")[$− 4$] #math.equation(block: false, alt: "minus 3")[$− 3$] #math.equation(block: false, alt: "minus 3")[$− 3$] #math.equation(block: false, alt: "0")[$0$] #math.equation(block: false, alt: "1")[$1$] #math.equation(block: false, alt: "2")[$2$] #math.equation(block: false, alt: "3")[$3$] #math.equation(block: false, alt: "5")[$5$] #math.equation(block: false, alt: "5")[$5$] #math.equation(block: false, alt: "5")[$5$] #math.equation(block: false, alt: "8")[$8$] Rank 1 2.5 2.5 4 5 6 7 9 9 9 11 If there is no tie for the last data point, then your last rank will be the same as your sample size. ] ] #examplebox("Example 2")[][ What is the rank for the number 15 in the following sample: #math.equation(block: false, alt: "10 , 25 , 15 , 8 , 20 , 15 , 10 , 9 , 8 , 22")[$10 , 25 , 15 , 8 , 20 , 15 , 10 , 9 , 8 , 22$]? #solutionbox[ Order the data from smallest to largest: #math.equation(block: false, alt: "8 , 8 , 9 , 10 , 10 , 15 , 15 , 20 , 22 , 25")[$8 , 8 , 9 , 10 , 10 , 15 , 15 , 20 , 22 , 25$]. Next, rank the data. The two #math.equation(block: false, alt: "8")[$8$]’s tie for first and second place, so each gets a rank of #math.equation(block: false, alt: "the fraction 1 plus 2 over 2 equals 1.5")[$frac(1 + 2, 2) = 1.5$]. The #math.equation(block: false, alt: "9")[$9$] is in the third spot so it gets a rank of 3. The two #math.equation(block: false, alt: "10")[$10$]’s tie for fourth and fifth place so each gets a rank of #math.equation(block: false, alt: "the fraction 4 plus 5 over 2 equals 4.5")[$frac(4 + 5, 2) = 4.5$]. The two #math.equation(block: false, alt: "15")[$15$]’s tie for sixth and seventh place so each gets a rank of #math.equation(block: false, alt: "the fraction 6 plus 7 over 2 equals 6.5")[$frac(6 + 7, 2) = 6.5$]. The next three numbers get the ranks of 8, 9 and 10. The answer, then, is 6.5, the rank of the number #math.equation(block: false, alt: "15")[$15$]. ] ] #examplebox("Example 3")[][ The Tevis Cup Ride is a 24-hour, 100-mile horse race over the Sierra Nevada mountains from Lake Tahoe to Auburn in a single day. The top 10 completion times for 2019 are shown below. Rank the completion times. Name Completion Time Sanoma Blakeley #math.equation(block: false, alt: "09 : 27 PM")[$09 ":" 27 " PM"$] Jeremy Reynolds #math.equation(block: false, alt: "09 : 27 PM")[$09 ":" 27 " PM"$] Haley Moquin #math.equation(block: false, alt: "09 : 36 PM")[$09 ":" 36 " PM"$] Richard George #math.equation(block: false, alt: "09 : 37 PM")[$09 ":" 37 " PM"$] Suzanne Huff #math.equation(block: false, alt: "09 : 54 PM")[$09 ":" 54 " PM"$] Karen Donley #math.equation(block: false, alt: "09 : 54 PM")[$09 ":" 54 " PM"$] Nicki Meuten #math.equation(block: false, alt: "10 : 06 PM")[$10 ":" 06 " PM"$] Gwen Hall #math.equation(block: false, alt: "10 : 20 PM")[$10 ":" 20 " PM"$] Lindsay Fisher #math.equation(block: false, alt: "10 : 28 PM")[$10 ":" 28 " PM"$] Suzanne Hayes #math.equation(block: false, alt: "10 : 29 PM")[$10 ":" 29 " PM"$] #solutionbox[ The data are already ordered. There are two ties at #math.equation(block: false, alt: "9 : 27")[$9 ":" 27$] and #math.equation(block: false, alt: "9 : 54")[$9 ":" 54$]. #figure(table( columns: 11, align: left, inset: 6pt, table.header([Time], [#math.equation(block: false, alt: "9 : 27")[$9 ":" 27$]], [#math.equation(block: false, alt: "9 : 27")[$9 ":" 27$]], [#math.equation(block: false, alt: "9 : 36")[$9 ":" 36$]], [#math.equation(block: false, alt: "9 : 37")[$9 ":" 37$]], [#math.equation(block: false, alt: "9 : 54")[$9 ":" 54$]], [#math.equation(block: false, alt: "9 : 54")[$9 ":" 54$]], [#math.equation(block: false, alt: "10 : 06")[$10 ":" 06$]], [#math.equation(block: false, alt: "10 : 20")[$10 ":" 20$]], [#math.equation(block: false, alt: "10 : 28")[$10 ":" 28$]], [#math.equation(block: false, alt: "10 : 29")[$10 ":" 29$]]), [Rank], [1.5], [1.5], [3], [4], [5.5], [5.5], [7], [8], [9], [10], )) ] ]