Currently: I lead the modelling team at Recast Labs Inc, where I work on problems related to efficient gaussian-process approximations inside HMC, causal inference, and validation methods for computationally expensive Bayesian models.
I'm broadly interested in computational statistics, probabilistic programming systems, procedural art, Julia, and cross-country skiing.
I may blog here occasionally on those or other topics!
Formerly: I completed my M.Sc. at McMaster under Prof. Ben Bolker in June 2023, specialising in inference for stochastic state-space models of historical plagues.
```
`-----.`
`-------:--` `.-
````````````````````` .---::::::::--::-
```````........-----...``````` `---::::::::::::::
..--::::::::::::::::-----..``..```` ``----::-:::::::::::
:::::::::::-:::::::-.-..` .------:-::::::::::::::::
:::::::::::::::::.``.`.:!:-.`` `..-:::::::::::::::::::::
:::::::::::::::::``.`.!=@MM@g%%g!-````.:::::::::::::::::
::::::--:::::::::.``::-:=!:---:@Mg-``.--::::::::::::::::
::::::--:::::::::.`.g!--:::----wMMw:.-:-::::::::::::::::
::::::::::::::::::..%=::=!!=w=!!MM@!-::::::-::::::::::::
::::::::::::::::::`!W!=g@w:g%w!-wMW--:::::::::::::!!===!
::::::::::::::::::-wM-.:!--:=:--=M%-::::::::::::!=wwgwww
:!::::::::::::::::.:%:-wgwg@W@g=%W=:::!=====wwwwgggggggw
!!!!!!!::::::::::::::ww%@gggg@MMMw::!=ww==wwgggggggggg%%
!!!!!!!!!!:::::::::!:-%MW!=gwWMM@-:!wwwwwwwgggggg%%%gg%%
!!!!!!!!!!:::::::::::.`=WMMMMMM%!!!wwwwwwgggg%%g%%gg%%%%
!!!!!!!!!!!!!:!!!!!!:--.:!=g%w=wgW%!!wgwwgggggg%%%%gg%%%
w=ww======!!!:!!!!:-`.g=:::!==wg@gw!---!wgg%ggg%%gggg%%%
gwwwwwww===!!!!:-:!::::gg=!=ww%@@%gww!:..-!wg%%%%ggg%%%g
wwwwwwww==ww=:--:=w!=:wMMW@%gg%WM%gww====:--:g%%%ggg%%gg
ggwwwwwwwwg!..-!gwg!wg%%@@@@@WWW%ggwww=ggwww!!%ggggg%ggg
ggwwwwwwwww-:!=w%%g!ww=wwwg%@%gggwwwwgwggg@gg!wgggggggg%
ggggggwwww!-=gwg@g=ww=w=wwggggggwwwwwwg%@@@%%w=g%ggggggg
gggggwww=w::=g%@g==w=ww=wg%ggggwwwgggg%%@WW@@gwg%ggggggg
gggggwwwww==wg%@=wgww==wwg%%%ggwwwwwgg%%%MWW%%gg%ggggggg
gggwwwwwwwwg=g%@===gw=wwg%@%%g@g%%@%%%gg%MW%@%ww%g%g%%w=
%%gwwwwwwg=g%w@@==g%%gg%@@W%g%@%%%%%WMMMMM%@@@%wg%%%%%%w
@%gg%gggg%!=@W@M@g%%@gg@@WM@%@WMW@@@WMMMMM@WWWWg%@WWWW%g
@model function ascii_model(D, n_cells, n_chars)
σ ~ Exponential(50.0)
inv2σ2 = 1.0 / (2.0 * σ^2)
log_norm = -0.5 * CELL_NPIX * log(2π * σ^2)
ll = 0.0
for i in 1:n_cells
d_row = @view D[i, :]
mx = -minimum(d_row) * inv2σ2
lse = mx + log(sum(
exp(-d * inv2σ2 - mx) for d in d_row
))
ll += lse + log_norm - log(n_chars)
end
Turing.@addlogprob! ll
end
chain = sample(
ascii_model(D, n_cells, N_CHARS),
NUTS(), 500,
)