Introduction

Data source: Crime Statistics Agency Victoria (CSA), 2025.

Pulling data, from Victoria’s Crime Statistics Agency this study digs into the headline crime trends that have left their mark on the state between 2015 and 2025.It examines how crime rates differ from one Local Government Area (LGA), to another maps how those figures have shifted over time and spotlights the offences that make up the bulk of Victoria’s crime.Through a storytelling lens the report charts these trends. Reveals how population density, local conditions and community factors intertwine with the spread of crime, across the state, over the last decade.

# Load the Crime Statistics Agency (CSA) dataset

crime_data <- read_excel("data/Data_Tables_LGA_Recorded_Offences_Year_Ending_June_2025.xlsx")

head(crime_data)
## # A tibble: 6 × 2
##   Contents ...2                                                                 
##   <chr>    <chr>                                                                
## 1 Table 01 Offences recorded and rate per 100,000 population by police region a…
## 2 Table 02 Offences recorded and rate per 100,000 population by offence type, l…
## 3 Table 03 Offences recorded by offence type, local government area and postcod…
## 4 Table 04 Offences recorded by location type and local government area - July …
## 5 Table 05 Offences recorded by investigation status and local government area …
## 6 Table 06 Select drug offences by drug type and local government area - July 2…
excel_sheets("data/Data_Tables_LGA_Recorded_Offences_Year_Ending_June_2025.xlsx")
## [1] "Contents"  "Footnotes" "Table 01"  "Table 02"  "Table 03"  "Table 04" 
## [7] "Table 05"  "Table 06"
# Load "Table 01" from the Excel file
crime_lga <- read_excel("data/Data_Tables_LGA_Recorded_Offences_Year_Ending_June_2025.xlsx",
                        sheet = "Table 01")
head(crime_lga)
## # A tibble: 6 × 6
##    Year `Year ending` `Police Region`    `Local Government Area` `Offence Count`
##   <dbl> <chr>         <chr>              <chr>                             <dbl>
## 1  2025 June          1 North West Metro Banyule                           11203
## 2  2025 June          1 North West Metro Brimbank                          18876
## 3  2025 June          1 North West Metro Darebin                           19077
## 4  2025 June          1 North West Metro Hobsons Bay                        7927
## 5  2025 June          1 North West Metro Hume                              23194
## 6  2025 June          1 North West Metro Maribyrnong                       12352
## # ℹ 1 more variable: `Rate per 100,000 population` <dbl>
# Focus on 2025 data only
crime_2025 <- crime_lga %>%
  filter(Year == 2025)

# Select top 10 LGAs by offence rate
top_lgas <- crime_2025 %>%
  arrange(desc(`Rate per 100,000 population`)) %>%
  slice_head(n = 10)

top_lgas %>%
  select(`Local Government Area`, `Rate per 100,000 population`, `Offence Count`)
## # A tibble: 10 × 3
##    `Local Government Area` `Rate per 100,000 population` `Offence Count`
##    <chr>                                           <dbl>           <dbl>
##  1 Melbourne                                      23520.           45765
##  2 Latrobe                                        17636.           14010
##  3 Yarra                                          15524.           15853
##  4 Greater Shepparton                             15492.           10927
##  5 Mildura                                        14758.            8552
##  6 Ararat                                         14537.            1700
##  7 Port Phillip                                   13611.           15615
##  8 Greater Dandenong                              13343.           22529
##  9 Maribyrnong                                    12958.           12352
## 10 Benalla                                        12613.            1859
ggplot(top_lgas, aes(x = reorder(`Local Government Area`, `Rate per 100,000 population`),
                     y = `Rate per 100,000 population`)) +
  geom_col(fill = "#e63946") +
  coord_flip() +
  labs(title = "Top 10 LGAs by Crime Rate in Victoria (2025)",
       x = "Local Government Area",
       y = "Rate per 100,000 population") +
  theme_minimal(base_size = 12)

## Storytelling Insight

The chart is showing the areas in Victoria with the highest crime rates in 2025. Melbourne has the highest rate, with more than 23,000 crimes for every 100,000 people, making it much higher than anywhere else. The reason behind it could be because it’s a big city with lots of people, nightlife, and visitors. Latrobe and Yarra comes next, having both rates over 15,000. These places may face issues like lower income or fewer local services. Benalla and Maribyrnong are also in the top ten, even when they have fewer total crimes. This goes to show that smaller areas can still have high rates when the population is smaller. overall, the results raises questions about how the police and prevention programs are shared between big cities and smaller towns

# Trend over time: overall crime rate across Victoria
trend_data <- crime_lga %>%
  group_by(Year) %>%
  summarise(avg_rate = mean(`Rate per 100,000 population`, na.rm = TRUE))

ggplot(trend_data, aes(x = Year, y = avg_rate)) +
  geom_line(color = "#1d3557", size = 1.2) +
  geom_point(color = "#e63946", size = 3) +
  labs(title = "Average Crime Rate in Victoria (2015–2025)",
       x = "Year",
       y = "Average Rate per 100,000 population") +
  theme_minimal(base_size = 12)

Long-Term Trend

the chart shows the average crime rate in Victoria from 2015-2025. Crime dropped significantly around 2021-2022, that is when the COVID-19 virus started and most places are in lockdown which means people stayed home and movement was limited. After that, crime went up again in 2025 as life returned to normal. This rise could be because since the pandemic is over, there are more public activity, money pressures, and population growth. This also means that areas like Melbourne and Latrobe are not alone, their high crime rates are part of a bigger pattern across Victoria.

# Load Table 02 from the Excel file (offence type by LGA and police service area)
crime_types <- read_excel(
  "data/Data_Tables_LGA_Recorded_Offences_Year_Ending_June_2025.xlsx",
  sheet = "Table 02"
)

# Preview the first few rows
head(crime_types)
## # A tibble: 6 × 10
##    Year `Year ending` `Police Service Area` `Local Government Area`
##   <dbl> <chr>         <chr>                 <chr>                  
## 1  2025 June          Ballarat              Ballarat               
## 2  2025 June          Ballarat              Ballarat               
## 3  2025 June          Ballarat              Ballarat               
## 4  2025 June          Ballarat              Ballarat               
## 5  2025 June          Ballarat              Ballarat               
## 6  2025 June          Ballarat              Ballarat               
## # ℹ 6 more variables: `Offence Division` <chr>, `Offence Subdivision` <chr>,
## #   `Offence Subgroup` <chr>, `Offence Count` <dbl>,
## #   `PSA Rate per 100,000 population` <dbl>,
## #   `LGA Rate per 100,000 population` <dbl>
# Focus on 2025 data only
crime_types_2025 <- crime_types %>%
  filter(Year == 2025)

# Summarise by Offence Division
crime_division_summary <- crime_types_2025 %>%
  group_by(`Offence Division`) %>%
  summarise(total_offences = sum(`Offence Count`, na.rm = TRUE)) %>%
  arrange(desc(total_offences))

crime_division_summary
## # A tibble: 6 × 2
##   `Offence Division`                   total_offences
##   <chr>                                         <dbl>
## 1 B Property and deception offences            377000
## 2 E Justice procedures offences                 97418
## 3 A Crimes against the person                   96758
## 4 C Drug offences                               32390
## 5 D Public order and security offences          29634
## 6 F Other offences                               1552
ggplot(crime_division_summary,
       aes(x = reorder(`Offence Division`, total_offences),
           y = total_offences)) +
  geom_col(fill = "#457b9d") +
  coord_flip() +
  labs(title = "Total Recorded Offences by Crime Type in Victoria (2025)",
       x = "Offence Division",
       y = "Total Offence Count") +
  theme_minimal(base_size = 12)

Crime Type Breakdown

The chart shows which types of crimes were the most common in Victoria in 2025. The biggest are crimes of theft and deception, that includes stealing, break-ins, and fraud. These happens more often in cities and suburbs.

Next are crimes against people, like fights or assaults.

Drug offences come after that, and most of the time it depends on how much the police actually focuses on the drug activity. Overall, most of the crimes in Victoria are non-violent and happen because of opportunity, especially in packed/busy places like Melbourne and greater Dandenong.

Conclusion

There has been a kaleidoscope of change in crime in Victoria; from falling to rising, then shifting from 2015 to 2025. Crime rates had dropped during the years of the pandemic as a result of the enforced lockdowns and reduced mobility of people but increased again in 2025 as things went back to normal.

City size and social factors play an immense role, as evidenced by some of the highest crime rates still being in areas like Melbourne, Latrobe, and Yarra.Most of Victoria’s crime comes from theft and fraud, so it is not surprising that property and deception offenses are still the most typical offenses.

This project has demonstrated how open data can narrate real stories to allow people to comprehend trends, support better decisions, and plan ways to make communities safer.

Contextual Reflection

Crime statistics gain more meaning when combined with other social and economic data.Places with high unemployment and low SEIFA scores tend to have higher crime rates because of economic hardship and lack of resources.

Conversely, regions with adequate youth programs and other public facilities tend to have low crime in the long run.Social factors like these matter when we look at how crime patterns change over time.And this is what makes the open data storytelling platform so helpful in grasping some of the core issues affecting various communities.

References

Crime Statistics Agency Victoria. (2025). Recorded offences by local government area, year ending June 2025 [Data set]. Crime Statistics Agency.
https://www.crimestatistics.vic.gov.au/crime-statistics/latest-crime-data