Understanding Crime Indexes

The data in this section is derived from surveys answered by website visitors, structured similarly to established scientific and governmental surveys. Individual responses are assigned a numerical value between -2 (indicating a strongly negative perception) and +2 (indicating a strongly positive perception).

To maintain data accuracy, we employ spam filtering algorithms that exclude inputs from users exhibiting suspicious behavior.

Survey results are then scaled from 0 to 100 for easier interpretation and comparison.

Our current index, updated continuously, is compiled from data within the past 5 years. We carefully select cities for inclusion in the index based on a minimum number of contributors to ensure statistical significance. Additionally, our semiannual index is calculated twice a year by incorporating the latest data into the historical view.

Crime Index estimates the overall level of crime in a city or country. It's categorized as follows:

Safety index is essentially the inverse of the Crime Index. A city with a high Safety Index is considered very safe.

The Crime Index takes into account survey responses about:

  1. General perception of crime levels
  2. Perceived safety during daylight and nighttime
  3. Concerns about specific crimes (mugging, robbery, car theft, physical attacks, public harassment, and bias-motivated incidents)
  4. Property crime severity (burglary, theft, vandalism)
  5. Violent crime severity (assault, homicide, sexual offenses)

It's important to note that the Numbeo's Crime Index is based user-contributed perceptions, which may differ from official government statistics. The index serves as a comparative tool for assessing the relative safety of different cities or countries, helping individuals make informed decisions and better understand crime levels in specific locations.

How Does This Compare to Government Crime Statistics?

In some countries, governments collect detailed crime statistics based on the number of reported crimes per capita. While these statistics are often reliable for comparing crime rates between cities within the same country, they may be less suitable for cross-country comparisons due to the following reasons:

The formulas used to calculate Numbeo's Crime Index are subject to change and are based on complex empirical models. The current formula, implemented in Java, is as follows:

    //assumes all input values range from -2 (very low) to 2 (very high)
    protected void calculateIndex() {
    index = new CrimeIndex();
    double overall = 0.0;

    overall += 3 * getIndexPartPreCalc(level_of_crime);
    overall += getIndexPartPreCalc(crime_increasing);
    overall += getIndexPartPreCalc(-safe_alone_daylight);
    overall += getIndexPartPreCalc(-safe_alone_night);
    overall += getIndexPartPreCalc(worried_home_broken);
    overall += getIndexPartPreCalc(worried_mugged_robbed);
    overall += getIndexPartPreCalc(worried_car_stolen);
    overall += getIndexPartPreCalc(worried_things_car_stolen);
    overall += getIndexPartPreCalc(worried_attacked);
    overall += getIndexPartPreCalc(worried_insulted);
    overall += getIndexPartPreCalc(worried_skin_ethnic_religion);
    overall += getIndexPartPreCalc(problem_drugs);
    overall += getIndexPartPreCalc(problem_property_crimes);
    overall += getIndexPartPreCalc(problem_violent_crimes);
    overall += getIndexPartPreCalc(problem_corruption_bribery);

    index.main = overall / 17;
    index.exp = index.main / 2 + ((index.main > 20) ? Math.pow(index.main - 20, 1.65) : 0.0);

    double safety = 0.0;
    safety += 3 * getIndexPartPreCalc(-level_of_crime);
    safety += getIndexPartPreCalc(-crime_increasing);
    safety += getIndexPartPreCalc(safe_alone_daylight);
    safety += getIndexPartPreCalc(safe_alone_night);
    safety += getIndexPartPreCalc(-worried_home_broken);
    safety += getIndexPartPreCalc(-worried_mugged_robbed);
    safety += getIndexPartPreCalc(-worried_car_stolen);
    safety += getIndexPartPreCalc(-worried_things_car_stolen);
    safety += getIndexPartPreCalc(-worried_attacked);
    safety += getIndexPartPreCalc(-worried_insulted);
    safety += getIndexPartPreCalc(-worried_skin_ethnic_religion);
    safety += getIndexPartPreCalc(-problem_drugs);
    safety += getIndexPartPreCalc(-problem_property_crimes);
    safety += getIndexPartPreCalc(-problem_violent_crimes);
    safety += getIndexPartPreCalc(-problem_corruption_bribery);

    index.safety = safety / 17;
  }

  protected double getIndexPartPreCalc(double internalValue) {
    return (internalValue + 2) * 25;
  }