Posts by Category

inference

Random Walks on Polls

A while ago, the Economist published an explanation of their model of the 2016 US presidential election. This post implements a simplified form of that model.

Converting Dataframes to Pytrees

Numpyro models expect data in the form of a pytrees: nested lists or dictionaries of multidimensional arrays. But datasets usually don’t start that way: we u...

Graph SLAM

Tracking a robot’s motion with maximum likelihood estimation.

Finite Particle Approximations

Say you have a discrete distribution $\pi$ that you want to approximate with a small number of weighted particles. Intuitively, it seems like the the best ch...

Finite Basis Gaussian Processes

If your GP kernel corresponds to an inner product in a low enough dimensional space, you can speed up inference by taking a weight space view.

Nearest Neighbor Gaussian Processes

In a k-Nearest Neighbor Gaussian Process, we assume that the input points $x$ are ordered in such a way that $f(x_i)$ is independent of $f(x_j)$ whenever…

Fast Slam

Instead of representing the joint distribution of an object and landmarks’ locations with a multivariate Gaussian, we can use a particle filter.

EKF Slam

A hands-on introduction to an old technique for simultaneous localization and mapping.

Conjugate Computation

This post is about a technique that allows us to use variational message passing on models where the likelihood doesn’t have a conjugate prior. There will be...

Sparse Variational Gaussian Processes

This notebook introduces Fully Independent Training Conditional (FITC) sparse variational Gaussian process model. You shouldn’t need any prior knowledge abou...

Likelihood Ratios

Say you’re trying to maximize a likelihood $p_{\theta}(x)$, but you only have an unnormalized version $\hat{p_{\theta}}$ for which…

Back to Top ↑

tools

Testing With Julia

The standard way of writing tests Julia is to write a test/runtests.jl file. Running Pkg.test() will when start a new Julia process that loads your package a...

Jupyter For Everything

Forget vim or emacs of VSCode. Jupyter is hands down the best editor out there. The literate programming support, complete with images and beautiful latex sn...

Blogging With Jekyll

This blog is written using Jekyll and Github Pages. Jekyll is a static website generator, which converts directories of markdown files into pretty, hyperlin...

Back to Top ↑

math

A Taste Of Qmc

Error with standard Monte Carlo methods decreases as $O(n^{-1/2})$. Quasi Monte carlo methods have error that decreases as $O(n^{-1})$, as we demonstrate wit...

Differential Equations

In my freshman year of college, I took an introductory differential equations class. That was nine years ago. I’ve forgotten pretty much everything, so I tho...

Back to Top ↑

systems

Back to Top ↑

algorithms

Hop Lists

Hop Lists are a novel retroactive set data-structure that allow for a branching timeline.

Back to Top ↑