Skip to content

Instantly share code, notes, and snippets.

(defmacro defn-memoise [name args & body]
(with-syms [$cache $fun]
~(def ,name (let [,$cache @{}
,$fun (fn ,name ,args ,;body)]
(fn [& lst]
(if (nil? (,$cache lst))
(set (,$cache lst) (,$fun ;lst))
(,$cache lst)))))))
@jsks
jsks / poisson.jl
Last active November 2, 2024 20:39
Metropolis within gibbs sampling for poisson regression
#!/usr/bin/env -S julia -t auto
#
# Metropolis-within-Gibbs sampler for a poisson regression
#
# y_i ~ poisson(λ_i)
# λ_i = exp(X_i' β)
# β_j ~ normal(0, 5)
#
###
@jsks
jsks / histogram.jl
Created September 9, 2024 13:59
Bayesian parametric histogram
# Analytical dirichlet model with flat priors --- see BDA3 ch23.
###
using Distributions, Plots, StatsBase
"""
bayes_hist(x)
Bayesian parametric histogram using the Freedman-Diaconis rule for
number of bins.
@jsks
jsks / gmm_em.jl
Created February 18, 2024 21:19
Gaussian mixture model
using Distributions, LinearAlgebra, LogExpFunctions
function gaussians(μ, Σ)
@views [MvNormal(μ[:, i], Σ[:, :, i]) for i in 1:size(μ, 2)]
end
function E_step!(Y, γ, π, μ, Σ)
dists = gaussians(μ, Σ)
lpi = log.(π)
@jsks
jsks / gmm_em.R
Last active June 20, 2023 13:54
Expectation maximization in R
#!/usr/bin/env Rscript
#
# Gaussian mixture model fit with the expectation-maximization algorithm
###
library(mclust)
library(mvtnorm)
set.seed(4323)
@jsks
jsks / fit.R
Created July 26, 2022 21:36
SRM in Stan
#!/usr/bin/env Rscript
library(cmdstanr)
library(dplyr)
options(mc.cores = parallel::detectCores() - 1)
load("./day5.rda")
# Actor list
@jsks
jsks / .gitignore
Last active November 29, 2021 16:27
Default gitignore for new Rmarkdown projects
data/
stan/*
!stan/*.stan
.DS_Store
.Rhistory
.Rprof.user
\#*\#
.\#*
@jsks
jsks / Makefile
Last active May 6, 2021 14:50
Makefile template for Rmarkdown projects
# Makefile template for Rmarkdown projects
#
# Includes implicit rules to generate pdf and html versions of Rmd
# files as well as several commands for development workflows.
#
# Invoke `make help` to get started.
#
# By default, Make will compile the pdf versions of all Rmd files
# found in the current working directory.
#
@jsks
jsks / bf.c
Created August 15, 2020 20:17
Brainfuck interpreter in C
/*
* Copyright (c) 2020, Joshua Krusell
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
@jsks
jsks / 0001-Python-3.8-support-10777.patch
Created November 21, 2019 19:05
azure-cli python3.8 archlinux
From b7b0801c8b9a97a67b1e329d25fe090fe61a818d Mon Sep 17 00:00:00 2001
From: Jamie Magee <[email protected]>
Date: Thu, 31 Oct 2019 09:57:34 +0100
Subject: [PATCH] Python 3.8 support (#10777)
* Python 3.8 support
time.clock() was deprecated in Python 3.3, and removed in Python 3.8. Python 3.8 will be released on 14th October. See [PEP 596](https://www.python.org/dev/peps/pep-0569/) for more info.
Tested locally against Python 3.8.0rc1.