# Brazil helicopter accident rates, 2015–2024: method and reproduction

Revised 8 September 2026. This is Vanguard Attaché's synthesis of public CENIPA and ANAC data, not an official ANAC rate series or an operator ranking.

## Files

- [Engine rates and confidence intervals](helicopter-analysis/engine-rates.csv)
- [Model-family rates and confidence intervals](helicopter-analysis/model-rates.csv)
- [Numerator construction and family mappings](helicopter-analysis/numerator.py)
- [Flight-hour aggregation and Poisson interval code](helicopter-analysis/rates.py)
- [Engine-class aggregation](helicopter-analysis/architecture.py)
- [Original source checksums](helicopter-analysis/SOURCE_CHECKSUMS.txt)
- [Current aggregate dataset and corrections](helicopter-safety-brazil-rio-flight-hour-analysis.json)

## Source inputs and counting rules

The original analysis used the CENIPA DÉDALO occurrence and aircraft extracts downloaded in August 2026, with a stated source update of 18 May 2026. It joins aircraft to occurrences by the occurrence ID, selects helicopter records and keeps ACIDENTE in 2015–2024. Serious incidents and incidents are excluded. The numerator script checks for duplicate helicopter accidents within an occurrence. Public CENIPA files are at https://dedalo.sti.fab.mil.br/dadosabertos/ .

The denominator comes from ANAC Horas Voadas de Aeronave. Keep helicopter certification classes and the same 2015–2024 period, then sum reported hours. Model text is mapped to a shared family taxonomy before aggregation. Matching is by family, not individual aircraft. Original source URL: https://sistemas.anac.gov.br/dadosabertos/Voos%20e%20opera%C3%A7%C3%B5es%20a%C3%A9reas/Horas%20Voadas%20de%20Aeronave/horas_voadas.csv .

Engine-class totals use each source's own classification; family totals are not interchangeable with them. Occurrence 85030 is corrected to single-piston. The Bell 429 family mapping includes the 2024 fatal accident with model text 429 and a blank ICAO field. The JSON correction log records the effects.

## Calculation and limitations

Rate = accident count / flight hours * 100,000. Confidence intervals use the exact Garwood Poisson count interval divided by the same hours. They do not incorporate every source of denominator uncertainty, mission differences, operator clustering or other confounding. A zero observed count has a zero point estimate and a positive upper interval; it is not evidence of zero risk.

Estimated/interpolated hours account for 10.8% of the original exposure. Removing them while retaining all accidents moves R44 from 14.75 to 17.28 and R22 from 12.51 to 15.55. This is a denominator sensitivity, not a like-for-like cohort of accidents known to have occurred during measured hours.

Do not use these fleet comparisons to decide whether an individual flight should operate, infer that engine class matters more than weather, or compare city risk without compatible city flight-hour denominators.

## Reproduction status

On 8 September 2026, all four official input files were retrieved again and their SHA-256 hashes matched the original source snapshot exactly. Running numerator.py, rates.py and architecture.py reproduced 170 accidents, 51 fatal accidents, 121 fatalities and 2,983,749 rounded flight hours. All displayed engine-class cells and all 21 model-family rows matched at their published precision. The estimated-hour share and R44/R22 sensitivities also matched. See the [machine-readable reproduction record](helicopter-analysis/reproduction-result.json). This verifies the historical calculation; it does not make 2015–2024 a current observation period or remove the stated methodological limits.

To reproduce in a directory containing the input CSV files: name the CENIPA files cenipa_ocorrencia.csv, cenipa_aeronave.csv and cenipa_ocorrencia_tipo.csv, retain ANAC's horas_voadas.csv, then run numerator.py, rates.py and architecture.py in that order. Record input hashes, time period, unmatched records and output differences. Do not overwrite the historical comparison with a new vintage without a dated correction.
