#set document(title: "4.6 Restriction of Range Demo", author: "OpenStax") #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")) == 4.6#h(0.6em)Restriction of Range Demo This section is an interactive demonstration. The live simulation runs on the original site: #link("https://onlinestatbook.com/2/describing_bivariate_data/restriction_demo.html")[open the demonstration at onlinestatbook.com]. Learning Objectives + State how range restriction affects the correlation between two variables + State the effect of choosing the upper and lower extremes on the correlation #strong[Instructions] #linebreak() This demonstration illustrates the effect of restricting the range of scores on the the correlaton between variables. When the demonstration begins, the dataset "Strength" is displayed. The X-axis contains scores on a measure of grip strength; the Y-axis contains scores on a measure of arm strength. Notice that there is a strong relationship. Also note that the two scatterplots are identical and both show that for the entire dataset of 147 subjects, the correlaton is 0.63. The two vertical bars on the upper graph can be used to select a subset of scores to be plotted on the lower graph. If you click on the left-hand bar and drag it to the right, scores to the left of the bar will not be included on the lower graph. The correlaton shown for the lower graph shows only the correlation for the data in the subset. Similarly, if you drag the right-hand bar to the left, scores to the right of the bar will be excluded. If you click the "Data outside bars" button, the lower graph will, as you might expect, only include scores to the left of the left-hand bar and to the right of the right-hand bar. #strong[Illustrated Instructions] #linebreak() Video Demo #linebreak() The restriction of range simulation displays data from 1 of 4 datasets. You can change datasets by selecting one from the drop down menu at the top of the simulation. The top scatterplot displays all the data from the selected dataset. #linebreak() #linebreak() Notice the two vertical bars on either side of this graph. You can "drag" these bars and restrict the range of data from the dataset that is displayed in the bottom scatterplot. You can include data on the inside or outside of the bars by selecting one of the options right above the graph. #notebox("Note", rgb("#8a94a6"), rgb("#556666"), rgb("#f7f8fa"))[ For some browsers you will not see the bars move as you move them. They will move when you release the mouse button. ] #figure(figph[Screenshot of the restriction-of-range simulation on the Strength dataset. The upper scatterplot shows Arm Strength against Grip Strength for all 147 subjects, with a draggable black vertical bar at each edge of the plot; the panel beside it reads Stats for all data, N: 147, r: 0.63. Radio buttons offer Data inside bars or Data outside bars. Because the bars are still at the extremes, the lower scatterplot is identical and its Stats for Subset panel also reads N: 147, r: 0.63 — dragging the bars inward is what shrinks the subset and its correlation.], alt: "Screenshot of the restriction-of-range simulation on the Strength dataset. The upper scatterplot shows Arm Strength against Grip Strength for all 147 subjects, with a draggable black vertical bar at each edge of the plot; the panel beside it reads Stats for all data, N: 147, r: 0.63. Radio buttons offer Data inside bars or Data outside bars. Because the bars are still at the extremes, the lower scatterplot is identical and its Stats for Subset panel also reads N: 147, r: 0.63 — dragging the bars inward is what shrinks the subset and its correlation.", caption: none) The video below shows how to restrict the range by dragging both vertical bars inward and then changes which data should be included in the bottom scatterplot. Notice how the statistics change for the second scatterplot based on which data is included. #strong[Video Demo] Drag the black vertical bars on either side of the graph at the top to change the portion of data shown in the bottom graph. #notebox("Note", rgb("#8a94a6"), rgb("#556666"), rgb("#f7f8fa"))[ For some browsers you will not see the bars move as you move them. They will move when you release the mouse button. ] #link("https://onlinestatbook.com/movies/describing_bivariate_data/restriction_demo.mp4")[Watch the video demonstration (onlinestatbook.com)]