Data Study on NYC's Seven Major Felonies
The skills the author demoed here can be learned through taking Data Science with Machine Learning bootcamp with NYC Data Science Academy.
Illustration by Greg Groesch/The Washington Times
Even though people in New York City are street-smart, crime is always a possibility and certain areas are more dangerous than others. But where are these unsafe areas? What crimes are taking place and when are they happening? Using NYPD’s Historic Complaint data-set, I decided to look into these questions. The application can be found on my ShinyApps.io page. The code used to create and run the application can be found on my Github.
Note: Unfortunately due to ShinyApps.io limitations and the size of the dataset, I had to limit my data so that it could be hosted on its servers.
As I was envisioning the app, I thought of 6 questions that I wanted my app to answer:
- Where do crimes occur and what are they?
- How have crime rates, after controlling for population, changed from 2006 to 2016?
- Which months are crimes more likely to occur?
- Do certain crimes occur more frequently on weekends or weekdays?
- Is time of day a factor in the frequency of crimes?
- Do any of these factors differ between boroughs?
The Data Set
Where it Came From:
I used the NYPD Historic Complaint Data, which includes information on all felonies, misdemeanors, and violations that have been reported to the NYPD from the start of 2006 to the end of 2016. The data set included information about the crime, such as the date, time, a description of the crime committed, and the location of the incident (including latitude and longitude). I focused on seven major felonies that occur in NYC: Murder, Rape, Felony Assault, Grand Larceny, Grand Larceny of Motor Vehicle, Robbery, and Burglary.
I also knew, when looking at the crime rates for each borough, I would have to control for population. In order to do this, I found the NYC borough population for 2010 and its estimate for 2016. In order to estimate the population for the missing years, I used the logistic growth formula.
Cleaning the Data:
When I first downloaded the dataset, there were around 5.6 million observations. I initially filtered the rows to include just the seven offenses I was focusing on. After inspecting the data, I noticed that a number of the offenses had missing labels or were labeled inaccurately (e.g.: the row’s three digit code did not match the listed offense description). I went through the data and made sure what I was collecting was accurate and inclusive.
After making the appropriate edits to include and correct for these entries, I created helper columns to provide additional filtering for the mapping and statistics of these crimes. I also consolidated information together from certain columns to add information to the maps, and dropped the unnecessary variables that were no longer needed. Once my data was cleaned, having just over 1.2 million observations, I added in my estimated population to the cleaned file. Once I had my data, I began coding the shiny app.
Data Visualizations and Statistics:
The Cluster Map:
The cluster map allows the user to see the location and details of specific crimes by filtering based on month and year, type and by the borough. As you zoom into a location, the clusters move apart. If you zoom in enough, you are able to see individual pinpoints on where specific crimes occurred for that time frame.
The icons are color coordinated based on crime type, making it easier to see what types of crimes occur near them when they do not have a specific crime filter set. If you click on a crime pinpoint, information appears stating the type of crime that was committed, where the incident occurred, and when it happened.
In order to help a person find crime in a specific area, I add an address lookup feature. This allows users to quickly focus their search to specific areas, rather than have to zoom in and constantly having to orient themselves to find their area of interest.
The Heat Map:
In order to provide a more high-level overview on where crimes occur in the borough, I created a heat map. Although you are not able to see the specific details about each individual crime, it lets the user know generally where crimes occur and how the location changes as time passes. The map can be filtered with the same specifications as the cluster map.
Crime Trends Based on Crime Type and Borough
When I started the assignment, I wanted to accomplish two tasks in terms of statistics. I wanted to be able compare trends of specific crimes within each borough, as well as see if a specific crime differed between borough. In order to accomplish this, I created two statistics tabs, focusing on each question specifically. Both tabs provide information on the overall trend of crimes, per 10,000 residents, as well as the frequency that specific crimes occur within various months, day of the weeks, or time of day.
Comparing Crimes Within a Borough:
In this tab, you can pick a borough to focus on and see how the crime rates compare within each borough. The graphs measure the total amount of crimes that occurred within that time factor (year, month, day of the week, or time) and displays how the percentages changes. So for the example above, we can see that the number of felony assaults in Staten Island have been increasing, per 10,000 residents, while the number of grand larcenies have been staying the same, despite a dip for the years 2009 - 2011.
Grand larceny also appears to increase as the year goes on, while assaults are more frequent in the spring and early summer. We can also see that assaults are more likely to occur on the weekends, while grand larceny is more frequent during the week days. The final notable takeaway from this example is that felony assaults are more frequent in the early morning and late evening, while grand larceny generally occurs in the late morning to early evening.
Comparing Boroughs for a Specific Crime
In this tab, we can compare specific crimes and whether or not there are significant differences between the borough. So for this example, we can see the number of robberies have been going down for almost all the boroughs, with the exception being Staten Island. However, we can also see that the likelihood that robberies take place, controlling for months, days of the week and time of day, don't appear to differ very much between boroughs.
Viewing the Data
On the final tab, you can view the underlying data, filtering based on the types of crimes, the day of the week, the time of day, as well as for specific boroughs. Similar to cluster map, it provides you with the date the crime was committed, the time of day, the type of crime, and where it occurs. You can filter the data based on these categories as well.
As I continue to add onto this application, I would like to include information about the income distribution for each borough. I would also like to look into whether educational spending has an impact on crimes rates within each borough. I also would like to add weather as a factor that I could potentially control for, seeing its impact on crime rates. This app is only for trends and analysis, but I add more data to the application, I would like to run regressions, measuring the effects of income inequality, education spending, and gentrification on crime rates for each borough.