4/12/2026

Initial Belief of Relationship Between Temperature and Aggravated Assaults

For the purpose of this small data review, the idea that we are testing is that as temperature increases, so does violent crime. Specifically, for this review we will look at Aggravated Assaults. We know that the baseline for comfortable weather for someone who has resided in Phoenix for 5 years compared to someone who just moved from Seattle, WA to Tucson, AZ is going to be different. To work around that limitation, we will consider the entire State average and not focus just on a county.

In an article titled The Link Between Anger and Stress written by Buck Black, it notes that “[s]tress compromises our ability to regulate emotions […]” and continues on by stating “[w]hen stressed, individuals are more likely to have difficulty managing their emotion, leading to an increased chance of expressing anger” (Black, 2025)

For the purpose of this review, we will consider an increase in temperature as a stressor.

Data about Aggravated Assaults in 2025

The information from this data was derived from the Arizona DPS Website for Arizona Crime Statistics and includes the whole State of Arizona https://azcrimestatistics.azdps.gov/public/View/dispview.aspx. The data was then filed down using the toggles provided to only consider the year 2025, All Summary Months, and only Aggravated Assault Total (but include all types- i.e., ‘Firearm’, ‘Knife or Cutting Instrument’, ‘Other Dangerous Weapon’, and ‘Hands, Fists, Feet, Etc,- Aggravated Injury’)

data <- read.csv("azdpsdata.csv", skip = 6)
assault_data <- data %>%
  select(Summary.Month, X.9)
colnames(assault_data) <- c("month", "assaults")
assault_data <- assault_data %>%
  filter(grepl("2025", month)) %>%
  filter(!grepl("Q", month))
assault_data$month <- sub(" 2025", "", assault_data$month)
assault_data$month <- factor(
  assault_data$month,
  levels = c("Jan","Feb","Mar","Apr","May","Jun",
             "Jul","Aug","Sep","Oct","Nov","Dec")
)
azdata <- ggplot(assault_data, aes(x = month, y = assaults, fill = month)) +
  geom_bar(
    data = subset(assault_data, !is.na(assaults) & !is.na(month)),
    stat = "identity",
  ) +
  geom_text(
    data = subset(assault_data, !is.na(assaults) & !is.na(month)),
    aes(label = assaults),
    vjust = -0.3,
    size = 3
  ) +
  scale_fill_brewer(palette = "Set3") +
  labs(
    title = "Aggravated Assaults by Month (Arizona 2025)",
    x = "Month",
    y = "Number of Incidents"
  ) +
  theme_bw()

Aggravated Assaults in 2025 Graphs

The previously indicated code yields the following bar graph:

Data about Temperature Trends in 2025

Combining the Data between Temperature, Number of Aggravated Assaults, and Month

The below graph is a plotly graph the contains the following data: Temperature in Fahrenheit, Number of Aggravated Assault, and Month (starting with January (as 1) through December (as 12)). I invite the user to hover over the data points to see how all three data points intersect

library(plotly)

plot_ly(
  data = merged,
  x = ~temp,
  y = ~assaults,
  z = ~month_index,
  type = "scatter3d",
  mode = "markers",
  width = 775,
  height = 420,
  marker = list(
    size = 6,
    color = ~month_index,
    colorscale = "Viridis"
  ),
  text = ~paste("Month:", month,
                "<br>Temp:", temp,
                "<br>Assaults:", assaults),
  hovertemplate = "%{text}<extra></extra>"
) %>%
  layout(
    title = "Temperature vs Aggravated Assaults (Arizona 2025)",
    scene = list(
      xaxis = list(title = "Temperature (°F)"),
      yaxis = list(title = "Aggravated Assaults"),
      zaxis = list(title = "Month (Time Order)")
    )
  )

Linear Regression Model on Temperature versus Aggravated Assaults by Month

When applying the linear regression model to our data that contains Aggravated Assaults by Month get the following information

\[ \text{Assaults}_i = \beta_0 + \beta_1(\text{Temp}_i) + \beta_2(\text{MonthIndex}_i) + \epsilon_i \] \[ \text{Assaults}_i = -6419.46 + 130.70(\text{Temp}_i) - 20.62(\text{MonthIndex}_i) + \epsilon_i \] \[ R^2 = 0.579, \quad \text{Adjusted } R^2 = 0.486 \]

model <- lm(assaults ~ temp + month_index, data = merged)
summary(model)
Call:
lm(formula = assaults ~ temp + month_index, data = merged)

Residuals:
    Min      1Q  Median      3Q     Max 
-91.849 -47.356  -9.089  36.249 165.390 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)  
(Intercept) -6419.457   5686.714  -1.129    0.288  
temp          130.700     90.582   1.443    0.183  
month_index   -20.620      6.786  -3.039    0.014 *
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 80.68 on 9 degrees of freedom
Multiple R-squared:  0.5794,    Adjusted R-squared:  0.486 
F-statistic:   6.2 on 2 and 9 DF,  p-value: 0.02029

Further Discussion Linear Regression

The following p-values were also shown in our linear regression model

\[ \beta_1 \ (Temp): \quad p = 0.183 \]

\[ \beta_2 \ (MonthIndex): \quad p = 0.014 \]

Now, it does appear that there is a significance between Assaults and Months due to the p-value, that is not the scope of this review and time will not be spent on what that could possibly mean. However, the p-value for temperature being \(p = 0.183\) indicates that there is not a strong statistical relationship between Aggravated Assaults and Temperature.

A possible consideration is that in the months of extreme heat, people may begin to head to locations that provide cooler, more agreeable, temperatures. This could be something to consider in places where there may be limited places to seek refuge from the heat- such as prison settings.

Citation