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)))
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.
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")
datatable(dataNew, extensions = c("Buttons", "FixedColumns"), options = list(dom = 'Bfrtip', buttons = c('copy', 'csv', 'print'), scrollX = T, fixedColumns = list(leftColumns = 3)))
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(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.