Comparing Boxplots: Visual Analysis of Multiple Data Distributions

Comparing Boxplots: Visual Analysis of Multiple Data Distributions
Loading the math board and drawing, please wait…
2018-07-25 02:17
① This example demonstrates how to create and compare multiple boxplots side by side, revealing the distribution of different data groups including medians, interquartile ranges, and potential outliers. ② The core mathematical concepts involve descriptive statistics: the five-number summary (minimum, first quartile, median, third quartile, maximum), and the comparison of distributions to assess central tendency, spread, and skewness. ③ Construction highlights: using GeoGebra commands such as Sequence, Element, Max, Min, If, Segment, Mod, Text, Q1, Median, Q3, Length, and KeepIf, along with numerous objects (GrLv, GrRt, GrLf, K1–K12, DtA1, DtA2, etc.), the applet dynamically generates boxplots, often controlled by sliders or a random seed to explore variability. ④ This resource is ideal for high school or introductory college statistics courses, serving as an interactive teaching tool for comparing data distributions, understanding quartiles, and identifying outliers in real-time.

GeoGebra Commands & Parameters

  1. Sequence(Mod[5 + (17 * k), 48] + 60, k, 0, 47) → OpSq, {65, 82, 99, 68, 85, 102, 71, 88, 105, 74, 91, 60, 77, 94, 63, 80, 97, 66, 83, 100, 69, 86, 103, 72, 89, 106, 75, 92, 61, 78, 95, 64, 81, 98, 67, 84, 101, 70, 87, 104, 73, 90, 107, 76, 93, 62, 79, 96}
  2. Element(OpSq, Seed) → OpNm1
  3. Element(DtASq, Ch4) → DtA0
  4. Max(DtA0) → AMx
  5. Min(DtA0) → AMn
  6. Element(DtBSq, Ch4) → DtB0
  7. Min(DtB0) → BMn
  8. Max(DtB0) → BMx
  9. If((5 * LBScl) ≤ UBScl, (5 * LBScl), If[(2 * LBScl) ≤ UBScl, (2 * LBScl), LBScl]) → Scl
  10. Element(AcSq, Ch4) → Acc
  11. Segment(LfEP, RtEP) → nmbln
  12. Element(GrpASq, Ch4) → GrpA
  13. Element(GrpBSq, Ch4) → GrpB
  14. Element(DDSq, Ch4) → DD0
  15. Element(LblSq, Ch4) → DtLb
  16. Element(QsSqSq, Mod[Seed, 6] + 1) → QsNmSq
  17. Element(QsSq, Element[QsNmSq, 1]) → QA
  18. Element(QsSq, Element[QsNmSq, 2]) → QB
  19. Element(QsSq, Element[QsNmSq, 3]) → QC
  20. Element(QsSq, Element[QsNmSq, 4]) → QD
  21. Element(QsSq, Element[QsNmSq, 5]) → QE
  22. Element(QsSq, Element[QsNmSq, 6]) → QF
  23. Mod(OpNm1, 2) → Ch1
  24. Mod(OpNm2, 2) → Ch2
  25. Mod(OpNm3, 2) → Ch3
  26. Text(If[Ch1 ≟ 0, "smallest", "largest"]) → SmOrLg
  27. Text(If[Ch2 ≟ 0, "is more skewed", "has the largest median"]) → SkOrMd
  28. Text(If[Ch3 ≟ 0, "range", "interquartile range"]) → RngOrIQR
  29. Q1(DtA0) → AQ1
  30. Median(DtA0) → AMdn
  31. Q3(DtA0) → AQ3
  32. Length(DtA0) → DtASz
  33. Min(DtB0) → DtBMn
  34. Q1(DtB0) → BQ1
  35. Median(DtB0) → BMdn
  36. Q3(DtB0) → BQ3
  37. KeepIf(BLF ≤ x ≤ BUF, DtB0) → BGD
  38. KeepIf(BUF ≤ x, DtB0) → BROL
  39. KeepIf(x ≤ BLF, DtB0) → BLOL
  40. Length(BLOL) → BLOC
  41. Length(BROL) → BROC
  42. Max(BGD) → BNwMx
  43. Min(BGD) → BNwMn
  44. KeepIf(ALF ≤ x ≤ AUF, DtA0) → AGD
  45. KeepIf(x ≤ ALF, DtA0) → ALOL
  46. KeepIf(AUF ≤ x, DtA0) → AROL
  47. Max(AGD) → ANwMx
  48. Min(AGD) → ANwMn
  49. If(BRBL / BLBL < 1, BLBL / BRBL, BRBL / BLBL) → BBR
  50. If(ARBL / ALBL < 1, ALBL / ARBL, ARBL / ALBL) → ABR
  51. If(ARWL / ALWL < 1, ALWL / ARWL, ARWL / ALWL) → AWR
  52. If(BRWL / BLWL < 1, BLWL / BRWL, BRWL / BLWL) → BWR
  53. Sequence(Text[k, (adpt(k) - 1, GrLv - 0.075)], k, AxMn, AxMx, Scl) → HLb, {"55", "60", "65", "70", "75", "80", "85", "90", "95"}
  54. Segment(ANwMnBt, ANwMnTp) → amnsg
  55. Segment(AQ1Bt, AQ1Tp) → aq1sg
  56. Segment(AMdnBt, AMdnTp) → amdnsg
  57. Segment(AQ3Bt, AQ3Tp) → aq3sg
  58. Segment(ANwMxBt, ANwMxTp) → anwmxsg
  59. Segment(ANwMnPt, AQ1Pt) → alwsg
  60. Segment(ANwMxPt, AQ3Pt) → arwsg
  61. Segment(AQ1Tp, AQ3Tp) → abxtpsg
  62. Segment(AQ1Bt, AQ3Bt) → abxbtsg
  63. Segment(BNwMnTp, BNwMnBt) → bmnsg
  64. Segment(BNwMnPt, BQ1Pt) → blwsg
  65. Segment(BQ1Tp, BQ3Tp) → bbxtp
  66. Segment(BQ1Bt, BQ3Bt) → bbxbt
  67. Segment(BQ1Tp, BQ1Bt) → bq1sg
  68. Segment(BMdnBt, BMdnTp) → bmdnsg
  69. Segment(BQ3Bt, BQ3Tp) → bq3sg
  70. Segment(BQ3Pt, BNwMxPt) → brwsg
  71. Segment(BNwMxBt, BNwMxTp) → bmxpt
  72. Sequence(Segment[(adpt(k), GrLv), (adpt(k), GrTp)], k, AxMn, AxMx, Scl) → TcSq, {0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52}
  73. Length(ALOL) → ALOC
  74. Length(AROL) → AROC
  75. Sequence(Text["*", (adpt(Element[BROL, k]) - 0.4, BtLv - 0.04)], k, 1, BROC) → BROPt, {}
  76. Sequence(Text["*", (adpt(Element[AROL, k] - 0.4), TpLv - 0.04)], k, 1, AROC) → AROPt, {}
  77. Sequence(Text["*", (adpt(Element[ALOL, k] - 0.4), TpLv - 0.04)], k, 1, ALOC) → ALOPt, {}
  78. Sequence(Text["*", (adpt(Element[BLOL, k]) - 0.4, BtLv - 0.04)], k, 1, BLOC) → BLOPt, {}
  79. If(ARng > (1.05 * BRng), AnRng1, If[BRng > (1.05 * ARng), AnRng2, AnRng3]) → AnRng
  80. If(AWR > (BWR * 1.05), AnSkw1, If[BWR > (1.05 * AWR), AnSkw2, If[ABR > (BBR * 1.05), AnSkw1, If[BBR > (1.05 * ABR), AnSkw3, AnSkw3]]]) → AnSkw
  81. If(ANwMx > (1.01 * BNwMx), AnMax1, If[BNwMx > (1.01 * ANwMx), AnMax2, AnMax3]) → AnMax
  82. If(AMdn > (1.01 * BMdn), AnMed1, If[BMdn > (1.01 * AMdn), AnMed2, AnMed3]) → AnMed
  83. If(AMn < (0.99 * BMn), AnMin2, If[BMn < (0.99 * AMn), AnMin1, AnMin3]) → AnMin
  84. If(AIQR > (1.04 * BIQR), AnIQR1, If[BIQR > (1.04 * AIQR), AnIQR2, AnIQR3]) → AnIQR

AI Drawing Prompt Reference

Create a set of side-by-side boxplots to visualize the distribution of different data groups, including medians, interquartile ranges, and potential outliers. First, generate a data sequence, then use this data to create the boxplots, dynamically adjusting the data with sliders or a random seed to observe the central tendency, spread, and skewness of different data groups.
The prompt above was compiled from the original drawing commands and is for reference only.