How the rankings work
The Achievement ranking compares reported high school test proficiency. It can help you investigate academic results, but it does not tell you which school is the best fit for your child or how much a school improved its students' learning. Income, admissions, and instructional context matter when interpreting the results.
The complete methodology below explains the source years, scoring formula, eligibility, and missing-data rules. Read it alongside the source files and coverage notes.
- Data year
- 2025
- Ranked schools
- 270
Each subject's conservative proficiency index is calculated separately for each year before those yearly indices are combined. Suppressed bands are never reconstructed across years. Tested-student eligibility uses only the years contributing a scoreable index; the separately displayed full-window tested count can cover a broader set of reported years.
Ranking Methodology
This document is the authoritative source for how every ranking is computed. The values in ranking_config.yaml must match what is described here. If they diverge, the YAML is wrong unless this document has first been revised.
Design Principles
- Transparent. Every weight, threshold, and eligibility rule is published. No hidden adjustments.
- Configurable. Weights and thresholds live in YAML. Tuning the formula does not require code changes.
- Multi-lens, not monolithic. "Best high school" is not a single answerable question. The site starts with Achievement and can add Growth, Outcomes, Equity, and Composite later.
- Honest about limits. A pure-test-score lens correlates strongly with income and selectivity. The methodology page must say so plainly.
- Verified inputs only. V1 uses only data fields verified at school level in ADE or NCES files.
Data Scope
V1 uses the school-level ADE proficiency-band files available for fiscal years 2023, 2024, and 2025:
- ACT ELA Grade 11 from ADE math/ELA assessment workbooks
- ACT Math Grade 11 from ADE math/ELA assessment workbooks
- AzSCI Science Grade 11 from ADE science assessment workbooks
Rows are filtered to:
SchoolworksheetSubgroup = All StudentsFAY Status = AllTest Level = ELA Grade 11,Math Grade 11, orScience Grade 11
Excluded:
- ACT composite mean, ACT 30+, ACT 33+, and all-four-benchmark metrics. These were not present in the verified ADE assessment workbooks.
- ACT Aspire. No current grade 9 Aspire school-level file has been verified for the ranking inputs.
- AASA grades 3-8. These are not relevant to high school rankings.
- AP/IB/dual enrollment, by user decision.
- Graduation rate, dropout rate, and other outcomes. These may appear as context or future lenses, not Achievement inputs.
- AzMERIT and earlier assessment data. These are retired and not comparable to current ACT/AASA/AzSCI files.
The Achievement Ranking
Achievement is the primary v1 lens. It measures current standardized-test proficiency, not growth, selectivity, graduation outcomes, or college readiness beyond the state assessment bands.
Weight Structure
The formula has one component per subject family. Subject-family weights sum to 1.0.
| Family | Weight | Source rows |
|---|---|---|
| ACT ELA Grade 11 | 40% | Subject = English Language Arts, Test Level = ELA Grade 11 |
| ACT Math Grade 11 | 40% | Subject = Mathematics, Test Level = Math Grade 11 |
| AzSCI Science Grade 11 | 20% | Subject = Science, Test Level = Science Grade 11 |
Rationale: ELA and math are the core statewide high-school accountability subjects and receive equal weight. Science is included because it is a verified grade 11 statewide assessment, but at a lower weight because it is one subject rather than the ELA/math core pair.
Proficiency Index
Each subject is scored with a tier-weighted proficiency index:
index = level_4_points * pct_level_4 + level_3_points * pct_level_3 + level_2_points * pct_level_2 + level_1_points * pct_level_1
The configured points are:
| ADE band | Points |
|---|---|
| Level 4 | 1.50 |
| Level 3 | 1.00 |
| Level 2 | 0.40 |
| Level 1 | 0.00 |
The ordering is intentional and required: Level 4 must be worth more than Level 3, Level 3 more than Level 2, and Level 2 more than Level 1. This rewards stronger achievement, not merely crossing the passing threshold.
ADE sometimes suppresses the split between Level 3 and Level 4 while still publishing Percent Passing. When Level 1, Level 2, and Percent Passing are present but Level 3/4 are suppressed, the pipeline uses this conservative fallback:
index = level_1_points * pct_level_1 + level_2_points * pct_level_2 + level_3_points * pct_passing
No Level 4 bonus is awarded unless the Level 4 percentage is actually published. This avoids inventing a top-tier split from suppressed data.
ADE also sometimes suppresses Level 1 and Level 2 while publishing Level 3, Level 4, and Percent Passing. This often occurs for high-performing schools where very few students fall below proficient. In that case, the pipeline keeps the school rankable with this conservative fallback:
index = level_1_points * (100 - pct_passing) + level_3_points * pct_level_3 + level_4_points * pct_level_4
If rounding causes pct_level_3 + pct_level_4 to exceed pct_passing, the Level 3/4 split is scaled down to the published passing rate first. No Level 2 credit is awarded to the unpublished non-passing group.
If the available fields are insufficient even for that fallback, the subject index is null for that school and year.
Three-Year Rolling Values
For each school and subject, the pipeline computes a three-year rolling value from fiscal years 2023-2025 where available.
- Counts are summed across years for eligibility.
- Percentages are combined as tested-count-weighted averages when exact tested counts are available.
- If ADE publishes school-level percentages for a year but omits
Number Tested, the subject's tested count is keptnulland the published yearly percentages are averaged without weights. The pipeline does not invent tested counts or treat the missing count as zero. - FERPA-suppressed values remain
null; they are never treated as zero. - Pre-2022 assessment data is not used.
The suppression fallback is applied separately to each school, subject, and year before averaging indices. A year's published Level 4 share is never substituted for another year's suppressed share. The rolling subject index is the tested-count-weighted average of the non-null annual indices; if any of those scoreable years has an unknown tested count, it is the unweighted average of the scoreable annual indices. A year with no computable index contributes neither an index nor a tested count toward ranking eligibility. A reported zero tested count contributes no index.
For display, the full-window tested count is reported separately from the count for scoreable years. A rolling proficiency-band percentage is displayed only if that band is disclosed in every included source year. Consequently, all non-null displayed bands cover the same years; suppressed years cannot produce a fabricated complete distribution. The passing percentage can summarize the years where passing is published. The export retains each year's original nullable percentages, count, and computed index for independent verification.
The configured rolling window ends in the current assessment data year. Records outside the configured window, and all records before 2022, are excluded before aggregation. Duplicate school/year/subject records are rejected rather than counted twice.
Score Computation
For each school:
- Compute each annual subject index, then each subject's three-year index and scoreable-year count.
- Apply every eligibility condition, including subject coverage and the scoreable tested-count threshold, before computing subject z-scores. Only ranked-eligible schools contribute to normalization.
- Combine subject z-scores using the configured family weights.
- If one subject is missing, renormalize over the subjects with non-null z-scores.
- Convert the final Achievement score to percentile and rank for display.
Z-score normalization is used because subject indices are comparable but not identically distributed. Ranking components must decompose back to the final score after missing-subject renormalization.
Eligibility Rules
A school is ranked only if all of the following are true:
- At least 25 tested students cumulatively over the scoreable years of at least one subject in the three-year window, when the relevant tested counts are known. The school-level eligibility count is the maximum subject count, because ELA, math, and science may test the same students and must not be added together.
- At least two of the three subject indices are non-null.
- At least one non-null subject index is ACT ELA Grade 11 or ACT Math Grade 11.
- School type is
district,charter,magnet,online, oralternative.
If ADE omits Number Tested for a year with a computable index, that subject's scoreable tested count is unknown and the school-level threshold is not applied solely from that missing count. The school can still be ranked if it has enough non-null subject indices. An entirely unscoreable year's missing count does not erase the known count from scoreable years. Both the full-window display count and the scoreable eligibility count are exported separately; an unknown count remains null/—.
Online and alternative schools are ranked when they satisfy the same scored-subject thresholds as other schools, and the same tested-student threshold when a tested count is available. They must be visibly flagged anywhere rank is displayed because their instructional model or accountability context may differ from comprehensive district and charter high schools.
A school below thresholds is shown with an insufficient-data or not-ranked status and partial information where available.
Every open or new Arizona school accepted by the NCES high-school-grade filter remains in the public directory, including schools with no matched assessment rows. Career/technical and shared-time directory entries are retained under the same rule; they are not silently removed by name or assumed to be independent comprehensive campuses. Where the NCES characteristics file identifies shared-time enrollment, the export marks that context explicitly. Schools without any scoreable assessments have null score, rank, and percentile and an insufficient-data reason.
Schools below the tested-student threshold may still appear in the public list as "N/A" for rank, score, and percentile. They are excluded before z-score normalization, rank assignment, and percentile calculation.
Display Alongside Rank
These appear next to the rank but do not affect it:
- Percent economically disadvantaged, if a verified source is available
- Selective admissions flag
- Admissions context bucket: normal, selective admissions, online, or alternative
- Three-year tested-student count
Participation rate is not used in v1 because the verified ADE assessment workbooks inspected for this methodology do not publish a school-level participation-rate field.
Selective Admissions Classification
A school is grouped into the selective_admissions context bucket if manually reviewed public evidence shows any of:
- Application-based admission with academic criteria
- Lottery preference based on academic criteria
- Prerequisite or transcript review for placement/admission
- Magnet, specialty, or application-placement admission separate from ordinary open enrollment
Ordinary open-enrollment schools are grouped as normal, including open-enrollment charter networks that use lotteries when oversubscribed. Online and alternative schools use separate online and alternative buckets even if they also have application steps, because their instructional/accountability context is the more important public label.
This is a manually maintained display flag, sourced once and reviewed annually. It is not inferred from outcome data and does not affect ranking eligibility, score, rank, or percentile.
Future Lenses
- Growth: Student Growth Percentiles where ADE publishes them.
- Outcomes: Graduation rate, dropout rate, or college enrollment if a stable school-level source is verified.
- Equity: Gaps between verified subgroups, subject to suppression rules.
- Composite: A weighted mix of lenses after Achievement and at least one non-test lens are validated.
What Can Change Without Code Changes
- Subject-family weights in
ranking_config.yaml - Proficiency level points, as long as they remain strictly increasing from Level 1 to Level 4
- Eligibility thresholds
- Component inclusion/exclusion by config, if the component is already implemented
Configuration validation rejects nonfinite or negative weights, unsupported normalization methods and components, nonpositive windows, and impossible eligibility thresholds. Source percentages must be finite and between 0 and 100; tested counts must be nonnegative integers. Exports reject non-standard JSON numeric values such as NaN and infinity.
What Requires Code Changes
- Adding a new component metric
- Adding a new lens
- Changing the normalization method
- Changing suppression fallback behavior