Willis Danielson

I'm a quantitative sociologist with interests in demography, urbanization, environmental inequalities, data visualization, and deep learning.



Below are some things I have done.




2025–2026 Brighton Snow Water Equivalent Prediction

Click below for Fullscreen GIF
Brighton SWE predictions gif

The 2025 to 2026 winter season was among the worst ever recorded for snow accumulation along the Wasatch Front. I wanted to see if I could predict a reasonable SWE given how unxonventional/historic a season it was. The model I used was simple. It used rolling 60-day windows of SWE observations as features along with sine and cosine features to encode where each date sits in the hydrological year. The network itself was a multilayer perceptron with only two hidden layers (128 and 64 neurons). These layers used ReLU activations and a 15% dropout layer sat between them. Training data included SWE observations from the Brigthon SNOTEL site going back to the start of the 1988 hydrologic year. Leap days were removed so that each hydrologic year had the same length and a consistent day-of-season.

I am a strong believer in ensembles. No one model is going to understand the function. Normally, I would stack and average the results of multiple methodologies: GLMs, GBMs, ANNs, etc., but MLPs are so easy. Normally, a trained network would produce the same outputs for every run, but to introduce uncertainty, I used Monte Carlo dropout in inference: the dropout layer remained active across 300 forward passes, producing a distribution of possible futures for each forecast step. I condensed these prediction runs into three main metrics: the median, 10th percentile, and 90th percentile values. Forecasting was recursive and each date’s median prediction was fed back into the model. This way every prediction step can use the next day’s complete window.

The first forecast run was completed on December 22, 2025, and the process was repeated weekly through the 5th of April, 2026. The full sequence was rerun on June 23, 2026 so that each forecast round could be evaluated against a large set of observed outcomes.

Preliminary results were encouraging. Early in the season, the model tracked accumulation surprisingly well and produced reasonable uncertainty bands. It appeared to react reasonably well to storm days and respected quiet periods. Its weakness appeared when the snowpack entered into an extremely early melt phase. The model lagged behind for roughly two weeks before adjusting to the new downward trajectory. Even so, that behavior was interesting. The model required no retraining to adapt, suggesting that it had learned the broad seasonal structure of the hydrologic cycle and could use both recent observations and seasonal timing to reorient once the melt rate became clear.

Beyond the lagging adaptation, the limits of a site-specific, minimally featured MLP became clear to me when I attmepted to use this model for other SNOTEL sites. The model performed well at Brighton, but this did not transfer to other sites along the Wasatch Front. When focusing the model on Snowbird substantial retunings of hyperparameters and architecture were needed for the model to perform at all sensibly. Improving generalizability is what I want to use as a north-star when refining this project. For next season I will incorporate additional meteorological features like temperature, cloud cover, and elevation. I also want to train the network using data from multiple sites, and I want to use a broader forecasting ensemble that includes MLPs, GBMs, ARIMA-style models, and even newer transformer based time series setups. Hopefully, these additions and refinements will improve performance and generalizability.

Interactive Visualizations

01. 2025-12-22 02. 2026-01-04 03. 2026-01-11
04. 2026-01-18 05. 2026-01-25 06. 2026-02-01
07. 2026-02-08 08. 2026-02-15 09. 2026-02-22
10. 2026-03-01 11. 2026-03-08 12. 2026-03-15
13. 2026-03-22 14. 2026-03-29 15. 2026-04-05

Green Space and Income in NYC

Using data from the 2015 NYC Tree Census and the services of geocod.io, I was able to plot the number of living street trees in a census tract by the tract's median income.

When using OLS, the bivariate relationship between a tract's median income and the number of living street trees present has a clear postive trend. Yet, there are glaring signs of heteroskedasticity in the data and the dependent variable is a count. As such, a simple OLS regression is not the correct choice for modeling this scenario. I added a group of sociodemographic predictors as controls, modeled the dependent variable using a negative binomial regression, used robust standard errors to account for the heteroskedascticity, and exlcuded an exposure/offset variable as they are not applicable here. It is far from academically rigorous, but it is still better than a basic linear bivariate model. Results from this restricted model show that percent white and percent owner-occupied emerge as significant predictors while the effect of income category shrinks below significance. This, possibly, reveals deeper socioeconomic disparities than simply income inequality. That said, I think it is important to keep in mind the lingering effects of the the Federal Housing Authority and its practice of redlining, the fact that whites still have an outsized effect on the political economies they inhabit, and the benefits of generational wealth. I checked the variance inflation factors, but none of my variables were worrisome (VIFs were all < 5). Regardless, it seems that percent white and home ownership may still be somewhat collinear considering that more than 73% of homeowners in the United States are Non-Hispanic Whites.

The results of the model I specified are summarized below.

Count of Street Trees Negative Binomial Regression

Dep. Variable: num_tree No. Observations: 2027
Model: GLM Df Residuals: 2018
Model Family: NegativeBinomial Df Model: 8
Link Function: Log Scale: 1.0000
Method: IRLS Log-Likelihood: -13375.
Date: Wed, 30 Jul 2025 Deviance: 623.18
Time: 14:39:35 Pearson chi2: 464.
No. Iterations: 30 Pseudo R-squ. (CS): 0.2132
Covariance Type: HC0
coef std err z P>|z| [0.025 0.975]
Intercept 4.8999 0.054 90.698 0.000 4.794 5.006
C(medIncCat)[T.1.0] -0.0093 0.028 -0.327 0.744 -0.065 0.047
C(medIncCat)[T.2.0] 0.0416 0.035 1.196 0.232 -0.027 0.110
C(edu)[T.1.0] 0.0694 0.045 1.542 0.123 -0.019 0.158
C(edu)[T.2.0] 0.0793 0.049 1.621 0.105 -0.017 0.175
pctWhite 0.0015 0.000 3.957 0.000 0.001 0.002
tract_pop 1.833e-05 1.93e-05 0.951 0.342 -1.95e-05 5.61e-05
shape_area 8.152e-08 1.12e-08 7.258 0.000 5.95e-08 1.04e-07
pct_own_occ 0.0060 0.001 8.451 0.000 0.005 0.007




SOGIE Symbol Set for AAC Users

Using a list of LGBTQIA related vocabularies collected from several advocacy groups, researchers from the Rocky Mountain university of Health Professions and myself are working to understand the vernacular of the LGBTQIA community. We are hoping to isolate a core vocabulary which might be easily incorporated into AAC systems and make it possible for interested users to engage with social discourse on SOGIE issues more easily.

We used data gathered from calls to the APIs of Wikipedia and Twitter to validate the current importance of these terms as well as identify novel terms that might be added.

Below is a node and edge graph that summarizes the hyperlink connections between terms on Wikipedia. Edges are bidirectional with an edge representing a link to or a link out of a term's wikipedia article.

Click for fullscreen
node and edges




US Housing Starts

Using data from the U.S. Census's Building Permits Survey and linearly interpolated population estimates, I was able to plot new residential building permits across a span of 16 years for all 50 states and the District of Columbia. I am always amazed that permitting appears to begin declining, almost across the board, years before the housing crisis came to a head in 2008. What is more, it is striking how similar the trend in housing starts for North Dakota matches with the growth of fracking and oil drilling in the United States.