Setup and Data

Datasets used: CDC WONDER Underlying Cause of Death 1999-2019 Request; Monthly Provisional Counts of Death by Select Causes, 2020-2021. Homicides used in both cases (names in datasets differed). Population (POPTHM), from FRED.

data$Date <- as.Date(data$Date, format = "%Y-%m-%d")
library(pacman); p_load(DT, ggplot2, rdd, ggthemes)

datatable(data, extensions = c("Buttons", "FixedColumns"), options = list(dom = 'Bfrtip', buttons = c('copy', 'csv', 'print'), scrollX = T, fixedColumns = list(leftColumns = 3)))

Analysis

bwF <- with(data, IKbandwidth(ï..ID, HomicideCount, cutpoint = 257)) #May
summary(RDestimate(HomicideCount ~ ï..ID, data = data, cutpoint = 257, bw = bwF))
## 
## Call:
## RDestimate(formula = HomicideCount ~ ï..ID, data = data, cutpoint = 257, 
##     bw = bwF)
## 
## Type:
## sharp 
## 
## Estimates:
##            Bandwidth  Observations  Estimate  Std. Error  z value  Pr(>|z|) 
## LATE        7.481     15            456.7     109.11      4.185    2.848e-05
## Half-BW     3.740      7            192.6      66.49      2.896    3.776e-03
## Double-BW  14.962     24            588.7     128.39      4.585    4.536e-06
##               
## LATE       ***
## Half-BW    ** 
## Double-BW  ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## F-statistics:
##            F      Num. DoF  Denom. DoF  p        
## LATE       28.23  3         11          3.651e-05
## Half-BW    30.12  3          3          1.937e-02
## Double-BW  38.42  3         20          3.441e-08
bwC <- with(data, IKbandwidth(ï..ID, HomicideCount, cutpoint = 252)) #January
summary(RDestimate(HomicideCount ~ ï..ID, data = data, cutpoint = 252, bw = bwC))
## 
## Call:
## RDestimate(formula = HomicideCount ~ ï..ID, data = data, cutpoint = 252, 
##     bw = bwC)
## 
## Type:
## sharp 
## 
## Estimates:
##            Bandwidth  Observations  Estimate  Std. Error  z value  Pr(>|z|)   
## LATE        9.832     19            -86.10    112.64      -0.7643  0.44466    
## Half-BW     4.916      9             75.27     41.10       1.8315  0.06703   .
## Double-BW  19.664     34             32.46     89.93       0.3610  0.71809    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## F-statistics:
##            F        Num. DoF  Denom. DoF  p        
## LATE       11.7241  3         15          6.493e-04
## Half-BW     0.2426  3          5          2.732e-01
## Double-BW  22.2754  3         30          1.756e-07
#Other Months Before

bwC <- with(data, IKbandwidth(ï..ID, HomicideCount, cutpoint = 253))
summary(RDestimate(HomicideCount ~ ï..ID, data = data, cutpoint = 253, bw = bwC))
## 
## Call:
## RDestimate(formula = HomicideCount ~ ï..ID, data = data, cutpoint = 253, 
##     bw = bwC)
## 
## Type:
## sharp 
## 
## Estimates:
##            Bandwidth  Observations  Estimate  Std. Error  z value   Pr(>|z|)   
## LATE        8.509     17            -121.387  137.9       -0.88021  0.3787     
## Half-BW     4.255      9            -116.763  127.2       -0.91806  0.3586     
## Double-BW  17.019     31               3.617  104.7        0.03454  0.9724     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## F-statistics:
##            F        Num. DoF  Denom. DoF  p        
## LATE       15.5057  3         13          2.777e-04
## Half-BW     0.2413  3          5          2.714e-01
## Double-BW  20.2837  3         27          8.710e-07
bwC <- with(data, IKbandwidth(ï..ID, HomicideCount, cutpoint = 254))
summary(RDestimate(HomicideCount ~ ï..ID, data = data, cutpoint = 254, bw = bwC))
## 
## Call:
## RDestimate(formula = HomicideCount ~ ï..ID, data = data, cutpoint = 254, 
##     bw = bwC)
## 
## Type:
## sharp 
## 
## Estimates:
##            Bandwidth  Observations  Estimate  Std. Error  z value   Pr(>|z|) 
## LATE        7.231     15            -230.227   36.33      -6.33642  2.352e-10
## Half-BW     3.616      7            -274.525   32.57      -8.42813  3.512e-17
## Double-BW  14.462     27               6.608  123.52       0.05349  9.573e-01
##               
## LATE       ***
## Half-BW    ***
## Double-BW     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## F-statistics:
##            F      Num. DoF  Denom. DoF  p        
## LATE       58.09  3         11          9.889e-07
## Half-BW    15.29  3          3          5.068e-02
## Double-BW  16.56  3         23          1.191e-05
bwC <- with(data, IKbandwidth(ï..ID, HomicideCount, cutpoint = 255))
summary(RDestimate(HomicideCount ~ ï..ID, data = data, cutpoint = 255, bw = bwC))
## 
## Call:
## RDestimate(formula = HomicideCount ~ ï..ID, data = data, cutpoint = 255, 
##     bw = bwC)
## 
## Type:
## sharp 
## 
## Estimates:
##            Bandwidth  Observations  Estimate  Std. Error  z value  Pr(>|z|)
## LATE        6.953     13            166.4     131.0       1.270    0.203966
## Half-BW     3.476      7            327.2      98.2       3.332    0.000862
## Double-BW  13.906     25            292.2     153.1       1.908    0.056344
##               
## LATE          
## Half-BW    ***
## Double-BW  .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## F-statistics:
##            F      Num. DoF  Denom. DoF  p        
## LATE       20.24  3          9          4.882e-04
## Half-BW    11.73  3          3          7.299e-02
## Double-BW  16.75  3         21          1.736e-05
bwC <- with(data, IKbandwidth(ï..ID, HomicideCount, cutpoint = 256))
summary(RDestimate(HomicideCount ~ ï..ID, data = data, cutpoint = 256, bw = bwC))
## 
## Call:
## RDestimate(formula = HomicideCount ~ ï..ID, data = data, cutpoint = 256, 
##     bw = bwC)
## 
## Type:
## sharp 
## 
## Estimates:
##            Bandwidth  Observations  Estimate  Std. Error  z value  Pr(>|z|)    
## LATE        6.655     13            266.76    152.8       1.7456   0.080882  . 
## Half-BW     3.328      7             27.65    153.8       0.1798   0.857306    
## Double-BW  13.310     24            438.67    169.4       2.5897   0.009606  **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## F-statistics:
##            F      Num. DoF  Denom. DoF  p        
## LATE       15.01  3          9          1.509e-03
## Half-BW    16.32  3          3          4.629e-02
## Double-BW  19.03  3         20          8.931e-06
#Other Months After

bwC <- with(data, IKbandwidth(ï..ID, HomicideCount, cutpoint = 258))
summary(RDestimate(HomicideCount ~ ï..ID, data = data, cutpoint = 258, bw = bwC))
## 
## Call:
## RDestimate(formula = HomicideCount ~ ï..ID, data = data, cutpoint = 258, 
##     bw = bwC)
## 
## Type:
## sharp 
## 
## Estimates:
##            Bandwidth  Observations  Estimate  Std. Error  z value  Pr(>|z|) 
## LATE        8.518     17            364.13    147.67      2.466    1.367e-02
## Half-BW     4.259      9             79.33     97.11      0.817    4.139e-01
## Double-BW  17.036     26            550.46    134.19      4.102    4.092e-05
##               
## LATE       *  
## Half-BW       
## Double-BW  ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## F-statistics:
##            F      Num. DoF  Denom. DoF  p        
## LATE       26.28  3         13          1.724e-05
## Half-BW    17.68  3          5          8.598e-03
## Double-BW  40.79  3         22          7.380e-09
bwC <- with(data, IKbandwidth(ï..ID, HomicideCount, cutpoint = 259))
summary(RDestimate(HomicideCount ~ ï..ID, data = data, cutpoint = 259, bw = bwC))
## 
## Call:
## RDestimate(formula = HomicideCount ~ ï..ID, data = data, cutpoint = 259, 
##     bw = bwC)
## 
## Type:
## sharp 
## 
## Estimates:
##            Bandwidth  Observations  Estimate  Std. Error  z value  Pr(>|z|)    
## LATE        9.425     17            181.5     119.56       1.518   0.128976    
## Half-BW     4.713      9            -77.7      48.06      -1.617   0.105913    
## Double-BW  18.850     26            432.1     137.41       3.145   0.001661  **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## F-statistics:
##            F      Num. DoF  Denom. DoF  p        
## LATE       20.61  3         13          6.411e-05
## Half-BW    17.85  3          5          8.411e-03
## Double-BW  28.52  3         22          1.829e-07
bwC <- with(data, IKbandwidth(ï..ID, HomicideCount, cutpoint = 260))
summary(RDestimate(HomicideCount ~ ï..ID, data = data, cutpoint = 260, bw = bwC))
## 
## Call:
## RDestimate(formula = HomicideCount ~ ï..ID, data = data, cutpoint = 260, 
##     bw = bwC)
## 
## Type:
## sharp 
## 
## Estimates:
##            Bandwidth  Observations  Estimate  Std. Error  z value  Pr(>|z|) 
## LATE        7.870     14            -237.9     76.75      -3.1000  1.935e-03
## Half-BW     3.935      7            -296.6     68.37      -4.3382  1.437e-05
## Double-BW  15.741     22             126.1    148.63       0.8486  3.961e-01
##               
## LATE       ** 
## Half-BW    ***
## Double-BW     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## F-statistics:
##            F       Num. DoF  Denom. DoF  p        
## LATE       21.029  3         10          2.443e-04
## Half-BW     1.831  3          3          6.316e-01
## Double-BW  14.690  3         18          8.786e-05
bwC <- with(data, IKbandwidth(ï..ID, HomicideCount, cutpoint = 261))
summary(RDestimate(HomicideCount ~ ï..ID, data = data, cutpoint = 261, bw = bwC))
## 
## Call:
## RDestimate(formula = HomicideCount ~ ï..ID, data = data, cutpoint = 261, 
##     bw = bwC)
## 
## Type:
## sharp 
## 
## Estimates:
##            Bandwidth  Observations  Estimate  Std. Error  z value  Pr(>|z|)   
## LATE        6.423     12            -278.4    165.24      -1.685   0.09202   .
## Half-BW     3.212      7            -118.6     99.99      -1.186   0.23549    
## Double-BW  12.846     18            -148.6    132.24      -1.123   0.26127    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## F-statistics:
##            F        Num. DoF  Denom. DoF  p        
## LATE        4.1699  3          8          0.0944011
## Half-BW     0.9503  3          3          0.9675349
## Double-BW  15.1274  3         14          0.0002266
ggplot(data, aes(Date, H100K, color = Floyd)) + scale_x_date(date_labels = "%Y", limit = c(as.Date("1999-01-01"), as.Date("2021-02-01"))) +
  geom_point(size = 3, alpha = 0.5) + stat_smooth(size = 1.5, alpha = 0.1, method = "loess", formula = "y ~ x") +
  geom_vline(xintercept = data$Date[257], linetype = "longdash", size = 1, alpha = 0.3) +
  xlab("") + ylab("Homicides per 100,000") + scale_color_discrete(name = "Floyd Status",
                                                          breaks = c("FALSE", "TRUE")) + theme_wsj() +
  labs(title = "Monthly Homicide Rates in the USA with Break in May 2020",
       caption = "Sources: CDC WONDER Underlying Cause of Death 1999-2019 Request; Monthly Provisional Counts of Death by Select Causes, 2020-2021") +
  theme(legend.position = "none",
        plot.caption = element_text(size = 12, face = "italic", vjust = -0.5), 
        axis.title.y = element_text(size = 15, family = "sans", hjust = 0.92),
        axis.text.y = element_text(vjust = -0.5, margin = margin(5, -20, 10, 5, "pt"))) + scale_y_continuous(expand = c(0, 0), limits = c(-0.0005, 0.85))

ggplot(data, aes(Date, H100K, color = Floyd)) + scale_x_date(date_labels = "%Y", limit = c(as.Date("2018-01-01"), as.Date("2021-02-01"))) +
  geom_point(size = 3, alpha = 0.5) + stat_smooth(size = 1.5, alpha = 0.1, method = "loess", formula = "y ~ x") +
  geom_vline(xintercept = data$Date[257], linetype = "longdash", size = 1, alpha = 0.3) +
  xlab("") + ylab("Homicides per 100,000") + scale_color_discrete(name = "Floyd Status",
                                                          breaks = c("FALSE", "TRUE")) + theme_wsj() +
  labs(title = "Monthly Homicide Rates in the USA with Break in May 2020",
       caption = "Sources: CDC WONDER Underlying Cause of Death 1999-2019 Request; Monthly Provisional Counts of Death by Select Causes, 2020-2021") +
  theme(legend.position = "none",
        plot.caption = element_text(size = 12, face = "italic", vjust = -0.5), 
        axis.title.y = element_text(size = 15, family = "sans", hjust = 0.92),
        axis.text.y = element_text(vjust = -0.5, margin = margin(5, -20, 10, 5, "pt"))) + scale_y_continuous(expand = c(0, 0), limits = c(-0.0005, 0.85))
## Warning: Removed 228 rows containing non-finite values (stat_smooth).
## Warning: Removed 228 rows containing missing values (geom_point).

Note: The break is not centered around COVID or COVID lockdowns in the US, nor does it replicate in other countries or in nonviolent crime categories.

August, 2022 Update

The BEA has updated their population figures based on the 2020 Census, and the number of Americans is inconsistent with the old data from April 2010 onwards. Per the BEA, there were ultimately a large number of Americans not counted at the time. When the discrepancy emerges, in the old data, April 2010 had a population of 309,279 (x1000), but now it has been updated to 309,289. For the last month in the old dataset, February 2021, the population was 331,004, and now it is 331,950, or 946,000 Americans gained. America had a 7.0244% increase in population between 2010 and 2021 in the old data, and a 7.3268% increase in the new data. Neat! The Monthly Provisional Counts of Deaths by Selected Causes have also been updated for post-2020 data (https://archive.ph/YBs29), and the numbers of homicides have generally increased by a little bit. I still got the population numbers from POPTHM and the homicide numbers are as they are on that archived page. I have provided the data below. Here are the updated analyses with new numbers and a longer timeframe, of some 11 months, in mind.

dataNew$Date <- as.character(dataNew$Date)
dataNew$Date <- as.Date(dataNew$Date, format = "%Y-%m-%d")

Data

datatable(dataNew, extensions = c("Buttons", "FixedColumns"), options = list(dom = 'Bfrtip', buttons = c('copy', 'csv', 'print'), scrollX = T, fixedColumns = list(leftColumns = 3)))

Analysis

bwF <- with(data, IKbandwidth(ï..ID, HomicideCount, cutpoint = 257)) #May
summary(RDestimate(HomicideCount ~ ï..ID, data = data, cutpoint = 257, bw = bwF))
## 
## Call:
## RDestimate(formula = HomicideCount ~ ï..ID, data = data, cutpoint = 257, 
##     bw = bwF)
## 
## Type:
## sharp 
## 
## Estimates:
##            Bandwidth  Observations  Estimate  Std. Error  z value  Pr(>|z|) 
## LATE        7.481     15            456.7     109.11      4.185    2.848e-05
## Half-BW     3.740      7            192.6      66.49      2.896    3.776e-03
## Double-BW  14.962     24            588.7     128.39      4.585    4.536e-06
##               
## LATE       ***
## Half-BW    ** 
## Double-BW  ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## F-statistics:
##            F      Num. DoF  Denom. DoF  p        
## LATE       28.23  3         11          3.651e-05
## Half-BW    30.12  3          3          1.937e-02
## Double-BW  38.42  3         20          3.441e-08
bwC <- with(data, IKbandwidth(ï..ID, HomicideCount, cutpoint = 252)) #January
summary(RDestimate(HomicideCount ~ ï..ID, data = data, cutpoint = 252, bw = bwC))
## 
## Call:
## RDestimate(formula = HomicideCount ~ ï..ID, data = data, cutpoint = 252, 
##     bw = bwC)
## 
## Type:
## sharp 
## 
## Estimates:
##            Bandwidth  Observations  Estimate  Std. Error  z value  Pr(>|z|)   
## LATE        9.832     19            -86.10    112.64      -0.7643  0.44466    
## Half-BW     4.916      9             75.27     41.10       1.8315  0.06703   .
## Double-BW  19.664     34             32.46     89.93       0.3610  0.71809    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## F-statistics:
##            F        Num. DoF  Denom. DoF  p        
## LATE       11.7241  3         15          6.493e-04
## Half-BW     0.2426  3          5          2.732e-01
## Double-BW  22.2754  3         30          1.756e-07
#Other Months Before

bwC <- with(data, IKbandwidth(ï..ID, HomicideCount, cutpoint = 253))
summary(RDestimate(HomicideCount ~ ï..ID, data = data, cutpoint = 253, bw = bwC))
## 
## Call:
## RDestimate(formula = HomicideCount ~ ï..ID, data = data, cutpoint = 253, 
##     bw = bwC)
## 
## Type:
## sharp 
## 
## Estimates:
##            Bandwidth  Observations  Estimate  Std. Error  z value   Pr(>|z|)   
## LATE        8.509     17            -121.387  137.9       -0.88021  0.3787     
## Half-BW     4.255      9            -116.763  127.2       -0.91806  0.3586     
## Double-BW  17.019     31               3.617  104.7        0.03454  0.9724     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## F-statistics:
##            F        Num. DoF  Denom. DoF  p        
## LATE       15.5057  3         13          2.777e-04
## Half-BW     0.2413  3          5          2.714e-01
## Double-BW  20.2837  3         27          8.710e-07
bwC <- with(data, IKbandwidth(ï..ID, HomicideCount, cutpoint = 254))
summary(RDestimate(HomicideCount ~ ï..ID, data = data, cutpoint = 254, bw = bwC))
## 
## Call:
## RDestimate(formula = HomicideCount ~ ï..ID, data = data, cutpoint = 254, 
##     bw = bwC)
## 
## Type:
## sharp 
## 
## Estimates:
##            Bandwidth  Observations  Estimate  Std. Error  z value   Pr(>|z|) 
## LATE        7.231     15            -230.227   36.33      -6.33642  2.352e-10
## Half-BW     3.616      7            -274.525   32.57      -8.42813  3.512e-17
## Double-BW  14.462     27               6.608  123.52       0.05349  9.573e-01
##               
## LATE       ***
## Half-BW    ***
## Double-BW     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## F-statistics:
##            F      Num. DoF  Denom. DoF  p        
## LATE       58.09  3         11          9.889e-07
## Half-BW    15.29  3          3          5.068e-02
## Double-BW  16.56  3         23          1.191e-05
bwC <- with(data, IKbandwidth(ï..ID, HomicideCount, cutpoint = 255))
summary(RDestimate(HomicideCount ~ ï..ID, data = data, cutpoint = 255, bw = bwC))
## 
## Call:
## RDestimate(formula = HomicideCount ~ ï..ID, data = data, cutpoint = 255, 
##     bw = bwC)
## 
## Type:
## sharp 
## 
## Estimates:
##            Bandwidth  Observations  Estimate  Std. Error  z value  Pr(>|z|)
## LATE        6.953     13            166.4     131.0       1.270    0.203966
## Half-BW     3.476      7            327.2      98.2       3.332    0.000862
## Double-BW  13.906     25            292.2     153.1       1.908    0.056344
##               
## LATE          
## Half-BW    ***
## Double-BW  .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## F-statistics:
##            F      Num. DoF  Denom. DoF  p        
## LATE       20.24  3          9          4.882e-04
## Half-BW    11.73  3          3          7.299e-02
## Double-BW  16.75  3         21          1.736e-05
bwC <- with(data, IKbandwidth(ï..ID, HomicideCount, cutpoint = 256))
summary(RDestimate(HomicideCount ~ ï..ID, data = data, cutpoint = 256, bw = bwC))
## 
## Call:
## RDestimate(formula = HomicideCount ~ ï..ID, data = data, cutpoint = 256, 
##     bw = bwC)
## 
## Type:
## sharp 
## 
## Estimates:
##            Bandwidth  Observations  Estimate  Std. Error  z value  Pr(>|z|)    
## LATE        6.655     13            266.76    152.8       1.7456   0.080882  . 
## Half-BW     3.328      7             27.65    153.8       0.1798   0.857306    
## Double-BW  13.310     24            438.67    169.4       2.5897   0.009606  **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## F-statistics:
##            F      Num. DoF  Denom. DoF  p        
## LATE       15.01  3          9          1.509e-03
## Half-BW    16.32  3          3          4.629e-02
## Double-BW  19.03  3         20          8.931e-06
#Other Months After

bwC <- with(data, IKbandwidth(ï..ID, HomicideCount, cutpoint = 258))
summary(RDestimate(HomicideCount ~ ï..ID, data = data, cutpoint = 258, bw = bwC))
## 
## Call:
## RDestimate(formula = HomicideCount ~ ï..ID, data = data, cutpoint = 258, 
##     bw = bwC)
## 
## Type:
## sharp 
## 
## Estimates:
##            Bandwidth  Observations  Estimate  Std. Error  z value  Pr(>|z|) 
## LATE        8.518     17            364.13    147.67      2.466    1.367e-02
## Half-BW     4.259      9             79.33     97.11      0.817    4.139e-01
## Double-BW  17.036     26            550.46    134.19      4.102    4.092e-05
##               
## LATE       *  
## Half-BW       
## Double-BW  ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## F-statistics:
##            F      Num. DoF  Denom. DoF  p        
## LATE       26.28  3         13          1.724e-05
## Half-BW    17.68  3          5          8.598e-03
## Double-BW  40.79  3         22          7.380e-09
bwC <- with(data, IKbandwidth(ï..ID, HomicideCount, cutpoint = 259))
summary(RDestimate(HomicideCount ~ ï..ID, data = data, cutpoint = 259, bw = bwC))
## 
## Call:
## RDestimate(formula = HomicideCount ~ ï..ID, data = data, cutpoint = 259, 
##     bw = bwC)
## 
## Type:
## sharp 
## 
## Estimates:
##            Bandwidth  Observations  Estimate  Std. Error  z value  Pr(>|z|)    
## LATE        9.425     17            181.5     119.56       1.518   0.128976    
## Half-BW     4.713      9            -77.7      48.06      -1.617   0.105913    
## Double-BW  18.850     26            432.1     137.41       3.145   0.001661  **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## F-statistics:
##            F      Num. DoF  Denom. DoF  p        
## LATE       20.61  3         13          6.411e-05
## Half-BW    17.85  3          5          8.411e-03
## Double-BW  28.52  3         22          1.829e-07
bwC <- with(data, IKbandwidth(ï..ID, HomicideCount, cutpoint = 260))
summary(RDestimate(HomicideCount ~ ï..ID, data = data, cutpoint = 260, bw = bwC))
## 
## Call:
## RDestimate(formula = HomicideCount ~ ï..ID, data = data, cutpoint = 260, 
##     bw = bwC)
## 
## Type:
## sharp 
## 
## Estimates:
##            Bandwidth  Observations  Estimate  Std. Error  z value  Pr(>|z|) 
## LATE        7.870     14            -237.9     76.75      -3.1000  1.935e-03
## Half-BW     3.935      7            -296.6     68.37      -4.3382  1.437e-05
## Double-BW  15.741     22             126.1    148.63       0.8486  3.961e-01
##               
## LATE       ** 
## Half-BW    ***
## Double-BW     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## F-statistics:
##            F       Num. DoF  Denom. DoF  p        
## LATE       21.029  3         10          2.443e-04
## Half-BW     1.831  3          3          6.316e-01
## Double-BW  14.690  3         18          8.786e-05
bwC <- with(data, IKbandwidth(ï..ID, HomicideCount, cutpoint = 261))
summary(RDestimate(HomicideCount ~ ï..ID, data = data, cutpoint = 261, bw = bwC))
## 
## Call:
## RDestimate(formula = HomicideCount ~ ï..ID, data = data, cutpoint = 261, 
##     bw = bwC)
## 
## Type:
## sharp 
## 
## Estimates:
##            Bandwidth  Observations  Estimate  Std. Error  z value  Pr(>|z|)   
## LATE        6.423     12            -278.4    165.24      -1.685   0.09202   .
## Half-BW     3.212      7            -118.6     99.99      -1.186   0.23549    
## Double-BW  12.846     18            -148.6    132.24      -1.123   0.26127    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## F-statistics:
##            F        Num. DoF  Denom. DoF  p        
## LATE        4.1699  3          8          0.0944011
## Half-BW     0.9503  3          3          0.9675349
## Double-BW  15.1274  3         14          0.0002266

Graphs

ggplot(dataNew, aes(Date, H100K, color = Floyd)) + scale_x_date(date_labels = "%Y", limit = c(as.Date("1999-01-01"), as.Date("2022-01-01"))) +
  geom_point(size = 3, alpha = 0.5) + stat_smooth(size = 1.5, alpha = 0.1, method = "loess", formula = "y ~ x") +
  geom_vline(xintercept = dataNew$Date[257], linetype = "longdash", size = 1, alpha = 0.3) +
  xlab("") + ylab("Homicides per 100,000") + scale_color_discrete(name = "Floyd Status",
                                                          breaks = c("FALSE", "TRUE")) + theme_wsj() +
  labs(title = "Monthly Homicide Rates in the USA with Break in May 2020",
       caption = "Sources: CDC WONDER Underlying Cause of Death 1999-2019 Request; Monthly Provisional Counts of Death by Select Causes, 2020-2022") +
  theme(legend.position = "none",
        plot.caption = element_text(size = 12, face = "italic", vjust = -0.5), 
        axis.title.y = element_text(size = 15, family = "sans", hjust = 0.92),
        axis.text.y = element_text(vjust = -0.5, margin = margin(5, -20, 10, 5, "pt"))) + scale_y_continuous(expand = c(0, 0), limits = c(-0.0005, 0.85))

ggplot(dataNew, aes(Date, H100K, color = Floyd)) + scale_x_date(date_labels = "%Y", limit = c(as.Date("2018-01-01"), as.Date("2022-01-01"))) +
  geom_point(size = 3, alpha = 0.5) + stat_smooth(size = 1.5, alpha = 0.1, method = "loess", formula = "y ~ x") +
  geom_vline(xintercept = dataNew$Date[257], linetype = "longdash", size = 1, alpha = 0.3) +
  xlab("") + ylab("Homicides per 100,000") + scale_color_discrete(name = "Floyd Status",
                                                          breaks = c("FALSE", "TRUE")) + theme_wsj() +
  labs(title = "Monthly Homicide Rates in the USA with Break in May 2020",
       caption = "Sources: CDC WONDER Underlying Cause of Death 1999-2019 Request; Monthly Provisional Counts of Death by Select Causes, 2020-2022") +
  theme(legend.position = "none",
        plot.caption = element_text(size = 12, face = "italic", vjust = -0.5), 
        axis.title.y = element_text(size = 15, family = "sans", hjust = 0.92),
        axis.text.y = element_text(vjust = -0.5, margin = margin(5, -20, 10, 5, "pt"))) + scale_y_continuous(expand = c(0, 0), limits = c(-0.0005, 0.85))
## Warning: Removed 228 rows containing non-finite values (stat_smooth).
## Warning: Removed 228 rows containing missing values (geom_point).

The new data raise an interesting possibility if they are accurate: was seasonality enhanced by the level increase? Is there no good evidence that we are converging back to pre-May 2020 homicide levels after all? RandomCriticalAnalysis has supplied a better graph than my earlier one about homicide changes outside of the U.S. and I have archived it: https://archive.ph/q1ARq. So again, there was no COVID lockdown-related trending in homicides, the spike was relegated to the U.S., and now, it might be returning to normal, but the evidence for that is scarcer than at least I, and I think others, were thinking in the middle of 2021.