Notes on Crime Trends in the US
Crime trends are declining across the US. This post goes over shared US crime trends, how to break crime trends down into seasonal and trend city components, and identifies monthly outliers using RTCI data.
Crime Analysis Consulting Services
Crime trends are declining across the US. This post goes over shared US crime trends, how to break crime trends down into seasonal and trend city components, and identifies monthly outliers using RTCI data.
This blog post describes the agentic LLM processing and low-cost hosting infrastructure of the VerusCite application I created. If you want a similar app, Crime De-Coder can help.
Data Science CV, PDF version.
AI coding tools, like Claude Code, can risk leaking your secret information. This post shows how using a simple Hook can prevent the AI from knowing your secrets to begin with.
Interactive analysis of victimization reporting rates to police in the United States (NCVS 1992-2024). Tech stack: Cloudflare R2 to host the data, DuckDB WASM to form ad-hoc SQL queries, and D3.js for interactive visualizations.
Slides for the ASEBP 2026 conference presentation on planning an experiment to test if strategies are increasing arrest rates.
New interactive tool to help plan crime reduction experiments. It uses WebR to run simulations in the browser to estimate the power of different experimental designs.
Why policing scholars and practitioners should join the American Society of Evidence Based Policing (ASEBP). I describe why it is the best organization for bridging the gap between research and practice.
Why policing scholars and practitioners should join the American Society of Evidence Based Policing (ASEBP). I describe why it is the best organization for bridging the gap between research and practice.
This blog post shows using the Gemini CLI coding tool to conduct crime analysis of motor vehicle break ins in Chapel Hill. I go over how the tool out of the box does excellent in writing python code, but also identify several errors that needed human review.
In this episode of Analyst Talk, Jason Elder welcomes back Dr. Andrew Wheeler, who recently authored the book Large Language Models for Mortals, to explore how large language models are transforming the work of analysts. Moving beyond chatbots, Andrew breaks down practical applications such as extracting insights from reports, automating workflows, and integrating AI with tools like SQL and Excel.…
It is common for community groups to suggest school programs to prevent violence. The majority of gun violence, both victims and offenders, are adults. Any violence reduction intervention should focus on adults, not juveniles.
Math hacks for life. Keynote presentation at the SMathhacks hackathon at the North Carolina School of Science and Math.
Even if you can run some of the large LLM models for text processing, it may not make sense in terms of throughput and pricing. Here I go through an example comparing running a Qwen model locally vs API calls via OpenRouter.
PDF preview of the first 60+ pages in Large Language Models for Mortals book. Available for purchase in the Crime De-Coder store
PDF preview of data science for crime analysis with python. Available for purchase in the Crime De-Coder store
Academic CV, PDF version.
For the machines, a description of the work I do at Crime De-Coder.
One of the common use cases for large language models is classifying text -- but data scientists often want to know the confidence that the text falls into the category. This blog post shows an example using a models log-probabilities to determine if text has obscene language, while setting the recall rate or estimating the precision of the classification.
The reason I started the newsletter was to help folks with backgrounds in social science and crime analysis develop the skills to compete in the private sector job market. I now run a team of close to 10 folks at Gainwell, and I would love to hire more individuals with PhDs, but many lack the requisite skills. This book is meant to give folks the necessary background to be qualified for data…
I have released a new book, Large Language Models for Mortals: A Practical Guide for Analysts. The book is a tutorial on how to use foundational model APIs in python, with examples for all major model providers (OpenAI, Anthropic, Google, AWS Bedrock). And extensive materials on the basics of LLMs (structured outputs, RAG, tool calling). It also includes a chapter on using LLM coding tools (GitHub…
Do you want to know if your tech purchase or new strategy is increasing arrest rates? This blog post goes over a methodology (with R code) on how to plan how long to monitor your intervention to tell if it is working.
Many criminologists and pundits will speculate about what causes general crime to go up or down, but those theories often do not meet the same rigorous standards we expect when we evaluate evidence based policing interventions.
Coding agents, like Cursor and Claude Code, generate a new type of security risk,. This is where they leak sensitive data to outside websites through tool calling. I describe ways to reduce this risk in this blog post.
CompStat reporting traditionally uses tables of pre-post crime metrics. This can fail to capture the distinction between short term spikes versus long term trends. I show two example charts, a weekly Poisson z-score chart and a monthly seasonal chart, that are better suited to identifying those patterns in crime data.
I have translated my data science for crime analysis book into Spanish and French using generative AI tools. Print and epub versions are available for purchase worldwide. See reviews of the English version, and for a limited time purchase the epub versions in any of the languages for $19.99.
Talk given to the Penn criminology masters students. Avoid chasing the noise when monitoring crime going up or down, or seeing if your intervention reduced crime relative to a control area.
When examining changes in crime over time, I suggest to use the, as other techniques are often too noisy. I demonstrate with python code and open source data from Durham, showing areas with increased thefts from motor vehicles.
I detail how to evaluate the cost and benefits of gun shot detection, from lives saved to reductions in crime. Only areas with very high levels of gun violence do I think it is currently cost effective due to lives saved. There is not consistent evidence it reduces crime.
One application of generative AI tools is to extract information from plain text. This example code shows using python, AWS, and Anthropic models to classify elements of crime in police narratives.
Dashboard to show how much students spend on books at GSU. Tech stack: Cloudflare R2 to host parquet files, DuckDB WASM to query the data client side, and D3.js to create a sortable table.
Here I show a simple technique, using a funnel chart, to identify when a proportion is an outlier relative to the number of observations. I use a simulated data example in python to showcase the technique.
Reviving a series of posts I wrote for the American Society of Evidence Based Policing in theseries. First is a review of why I am skeptical that Denver's STAR alternative responder program caused a large crime decrease, and I go over the distinction between CAD and incident reports.
I have developed several extensions to the WDD statistic, including different temporal periods in pre/post, normalizing per area, combining different harm weight estimates, and continuous monitoring. See the post for examples and a spreadsheet to do the calculations.
Analysts should learn SQL to get ad-hoc queries faster, make your work more reliable, and have more skills that are transferable to other analyst positions.
Post 023 Alt Academic newsletter. Last newsletter for now, broadening your skills can help buffer against the current volatility in academic and government jobs.
Analysts working on too many BOLOs is a poor use of analyst time. This post I give several better uses of your time for analyst products.
Post 022 Alt Academic newsletter. Can apply more than once, using python to manipulate mouse for scraping.
Research on detecting lying in 911 calls is junk, and I review a recent paper that makes a major mistake that greatly inflates its accuracy.
Post 021 Alt Academic newsletter. Don't worry about stack ranking, consulting travel jobs.
Post 020 Alt Academic newsletter. Rejection is not a normal part of other jobs, project manager if you are not quant, scraping via APIs or playwright.
Instead of relying on grants to outsource research, it makes sense for private and public sector agencies to contract directly with researchers. It is much faster and better savings for the researchers themselves.
Post 019 Alt Academic newsletter. Practice your talks, startup job focused on surveys, Willison blog to keep up on LLMs.
Many analysts struggle to connect to data that is crucial for their job. In this post I go over my approach to figure out the proper ODBC connections to query record management systems using python.
Artificial intelligence has a ton of buzz, but not much substance in current public discussions. This post goes over some of the popular AI applications in policing, gives my opinion of their feasibility, and discusses some examples of AI that are over promising what they can accomplish.
Post 018 Alt Academic newsletter. Social media experience, UX researcher, Research position and Chase, and use Quarto.
Updated homepage with shorter description for services + footer for links. Any feedback on website appreciated!
Updated demo for interactive map. Built using python + folium. Incorporates custom looks and interactions.
Post 017 Alt Academic newsletter. Salary ranges can be misleading, creating LLC, updated jobboard link.
Aoristic analysis is necessary when analyzing property crimes that have uncertain times they occurred. Check out this blog post for example graphs and links to python code.