--- title: "Reported, estimated and imputed crime" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Reported, estimated and imputed crime} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```r library(fbiCDE) ``` Three words describe where a crime count comes from, and this package uses each with one meaning. - **Reported**: the sum of what agencies submitted to the FBI, in either format (NIBRS, or the older summary format). It covers only the agencies that reported. `get_reported_crime()` returns it. - **Estimated**: the FBI's published figure. It adds a statistical model's prediction for everything outside NIBRS: agencies that did not report, and agencies that reported only in the older summary format. It comes with a 95% confidence interval. `get_nibrs_estimate()` returns it. - **Imputed**: a value filled in for a missing report. The FBI's estimate imputes, and so does `impute_reporting_gaps()`, which fills an agency's missing months from its own neighboring months. This package always says which one it means. ## Where the FBI publishes estimates The API publishes the FBI's NIBRS estimates for 2021 and 2022, for each state and the nation. It publishes none for counties, cities or metro areas. The FBI's older summary-format estimates, 1979 onward, are a bulk download that this package does not read. ## How much of the published figure was modeled `imputation_gap()` compares the estimate with reported crime. The FBI builds the estimate from NIBRS reports alone, so the gap is measured against crime reported in NIBRS. ```r ca <- imputation_gap("CA", year = 2021:2022) ca[, c("year", "reported", "reported_nibrs", "reported_other", "coverage", "coverage_nibrs", "published", "share_estimated")] #> year reported reported_nibrs reported_other coverage coverage_nibrs #> 1 2021 36439 36943 -504 0.2632175 0.2632175 #> 2 2022 193824 71625 122199 0.9878345 0.4658594 #> published share_estimated #> 1 217539 0.8301776 #> 2 207381 0.6546212 ``` In 2021 California's reports reached the FBI through NIBRS only: the two coverage figures are the same. Most California agencies had not switched to NIBRS, and agencies reporting in NIBRS covered 26% of the state's population. The FBI's model supplied 83% of its published figure of 217,539 violent crimes. In 2022 the FBI accepted both formats. Agencies reporting in either format covered 99% of the population, but those reporting in NIBRS covered 47%. The FBI's model treated the rest as missing, including the 122,199 violent crimes reported in the older format, and supplied 65% of the published figure. Those older-format reports are a check on the model. The model supplied 135,756 violent crimes for the agencies outside NIBRS, which reported 122,199 themselves. California's own count gives a second check for 2021. The California Department of Justice collected 2021 reports in both formats and published 183,546 violent crimes ([Crime in California 2021, Table 3](https://data-openjustice.doj.ca.gov/sites/default/files/2022-08/Crime%20In%20CA%202021_0.pdf)). That is below the lower bound of the FBI's 95% interval, 189,849. Not every state's 2021 reports were NIBRS. In New Jersey, for example, some agencies reported in the older format: ```r nj <- imputation_gap("NJ", year = 2021) nj[, c("reported", "reported_nibrs", "reported_other", "coverage", "coverage_nibrs")] #> reported reported_nibrs reported_other coverage coverage_nibrs #> 1 12972 7619 5353 0.7540175 0.4492799 ``` Agencies reporting in either format covered 75% of New Jersey's population, and those reporting in NIBRS 45%. Of the 12,972 violent crimes reported, 5,353 arrived in the older format, and the FBI's model treated them as missing. ```r imputation_gap(year = 2021:2022)[, c("year", "coverage_nibrs", "published", "share_estimated", "share_lower", "share_upper")] #> year coverage_nibrs published share_estimated share_lower share_upper #> 1 2021 0.7471695 1325991 0.3040435 0.2176449 0.3732574 #> 2 2022 0.8090670 1328033 0.2411695 0.1781031 0.2952472 ``` ## The counting difference The two formats count offenses differently; for example, the summary format counts only the most serious offense in an incident. Where every report arrived in NIBRS, the difference between `reported` and `reported_nibrs` is the counting difference alone. Texas in 2022 is such a case: its two coverage figures are the same for every offense. ```r codes <- c("V", "P", "ROB", "ASS", "BUR", "LAR", "MVT", "ARS", "HOM", "RPE") tx <- do.call(rbind, lapply(codes, function(code) { imputation_gap("TX", year = 2022, offense = code) })) tx$difference <- round(100 * tx$reported_other / tx$reported_nibrs, 1) tx[, c("offense", "coverage", "coverage_nibrs", "reported", "reported_nibrs", "difference", "share_estimated")] #> offense coverage coverage_nibrs reported reported_nibrs difference #> 1 V 0.9882089 0.9882089 131255 132433 -0.9 #> 2 P 0.9882089 0.9882089 694178 694614 -0.1 #> 3 ROB 0.9882089 0.9882089 21264 21371 -0.5 #> 4 ASS 0.9882089 0.9882089 91660 92400 -0.8 #> 5 BUR 0.9882089 0.9882089 100888 95444 5.7 #> 6 LAR 0.9882089 0.9882089 491113 500672 -1.9 #> 7 MVT 0.9882089 0.9882089 99234 98498 0.7 #> 8 ARS 0.9882089 0.9882089 2943 2943 0.0 #> 9 HOM 0.9882089 0.9882089 2100 2100 0.0 #> 10 RPE 0.9882089 0.9882089 16231 16562 -2.0 #> share_estimated #> 1 -0.0068423894 #> 2 0.0109581239 #> 3 -0.0009367243 #> 4 0.0033437601 #> 5 0.0078173729 #> 6 0.0079102135 #> 7 0.0290885075 #> 8 0.0107563025 #> 9 -0.0329562223 #> 10 -0.0728073585 ``` NIBRS counts slightly more violent crime than the summary rules do (-0.9%), and for every offense but burglary (5.7%) the two series are within about 2% of each other. A `reported_other` of that size, negative included, means nearly every report arrived in NIBRS. The gap needs no such allowance: it compares the estimate with NIBRS counts, which follow the same rules. It is still not exactly zero where the model had little to supply. In Texas in 2022 it runs from -7.3% to 2.9% of the estimate.