We load the cleaned data on DOLI complaints, as well as the relevant packages:
library(tidyverse)
library(knitr)
library(janitor)
wagetheft <- read_csv("DOLIcomplaints.csv")
Claims were found to either be valid, invalid, or undetermined. Undetermined claims might be valid or invalid, but for one reason or another DOLI chose not to investigate the claim or enforce a return of wages. By far, undetermined is the most common result:
tab <- tabyl(wagetheft$determination, sort = TRUE)
tab[,3] <- round(100*tab[,3], 2)
colnames(tab) <- c("Determination", "Count", "Percent")
kable(tab)
| Determination | Count | Percent |
|---|---|---|
| Invalid | 1038 | 26.29 |
| Undetermined | 2737 | 69.33 |
| Valid | 173 | 4.38 |
While there are 173 complaints that were determined to be valid, still only 9 complaints resulted in wages returned:
tab <- table(wagetheft$determination, wagetheft$wage_rec!=0)
colnames(tab) <- c("No wages returned", "Wages returned")
kable(tab)
| No wages returned | Wages returned | |
|---|---|---|
| Invalid | 1038 | 0 |
| Undetermined | 2737 | 0 |
| Valid | 164 | 9 |
Here are reasons cited by DOLI for determining a claim to be invalid:
wagetheft_invalid_bar <- filter(wagetheft, determination == "Invalid") %>%
group_by(recoded_reason_lajc) %>%
summarize(count = n()) %>%
na.omit()
g <- ggplot(wagetheft_invalid_bar, aes(x = reorder(recoded_reason_lajc, count), y=count)) +
geom_bar(stat="identity", fill="blue") +
geom_text(aes(label=count), hjust=0) +
coord_flip() +
xlab("Reason") +
ylab("Number of complaints marked invalid for this reason") +
theme(text=element_text(family="serif"))
g
Here are reasons cited by DOLI for determining a claim to be undetermined:
wagetheft_undetermined_bar <- filter(wagetheft, determination == "Undetermined") %>%
group_by(recoded_reason_lajc) %>%
summarize(count = n()) %>%
na.omit()
g <- ggplot(wagetheft_undetermined_bar, aes(x = reorder(recoded_reason_lajc, count), y=count)) +
geom_bar(stat="identity", fill="blue") +
geom_text(aes(label=count), hjust=0) +
coord_flip() +
xlab("Reason") +
ylab("Number of complaints marked undetermined for this reason") +
theme(text=element_text(family="serif"))
g
Every complaint that DOLI marked as valid was also given a reason of “informal resolution”. What distinguishes the 9 cases that got wages returned from the other 164 is a mystery as this point:
wagetheft_valid <- filter(wagetheft, determination == "Valid")
kable(table(wagetheft_valid$recoded_reason_lajc))
| Var1 | Freq |
|---|---|
| Informal resolution | 173 |