Skip to content

Instantly share code, notes, and snippets.

View mschauer's full-sized avatar

Moritz Schauer mschauer

View GitHub Profile
@mschauer
mschauer / Project.toml
Last active June 16, 2022 14:17
Logistic SOSS&Pathfinder&BPS
[deps]
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
MCMCChains = "c7f686f2-ff18-58e9-bc7b-31028e88f75d"
MappedArrays = "dbb5928d-eab1-5f90-85c2-b9b0edb7c900"
Pathfinder = "b1d3bc72-d0e7-4279-b92f-7fa5d6d2d454"
ProgressMeter = "92933f4c-e287-5a05-a399-4b506db050ca"
Revise = "295af30f-e4ad-537b-8983-00126c2a3abe"
SampleChainsDynamicHMC = "6d9fd711-e8b2-4778-9c70-c1dfb499d4c4"
Soss = "8ce77f84-9b61-11e8-39ff-d17a774bf41c"
TupleVectors = "615932cf-77b6-4358-adcd-5b7eba981d7e"
@mschauer
mschauer / Adamopt.jl
Created February 16, 2022 20:02 — forked from vankesteren/Adamopt.jl
Julia implementation of Adam optimizer
module Adamopt
# This is a module implementing vanilla Adam (https://arxiv.org/abs/1412.6980).
export Adam, step!
# Struct containing all necessary info
mutable struct Adam
theta::AbstractArray{Float64} # Parameter array
loss::Function # Loss function
grad::Function # Gradient function
@mschauer
mschauer / comparison.jl
Last active October 14, 2021 16:11
Clement's conjecture
using Distributions
# Search counter examples in exact arithmetic
xpdf(d::Binomial,k) = binomial(d.n, k)*d.p^k*(1 - d.p)^(d.n - k)
f(x,y) = x*y + (1-x)*(1-y)
while true
@mschauer
mschauer / markov.jl
Created September 15, 2021 12:13
Markov chain examples
using Random, LinearAlgebra, Distributions, StatsBase
# Linear Algebra of Markov chain
# Example: Weather Markov chain of Oz
S = [:R, :S, :C]
P = [0.5 0.25 0.25
0.5 0 0.5
0.25 0.25 0.5]
sum(P[2, :])
@mschauer
mschauer / shallow.jl
Last active September 9, 2021 19:18
Static observables
using Observables, BenchmarkTools, Test
struct StaticObservable{T, Listeners} <: Observables.AbstractObservable{T}
listeners::Listeners
val::Base.RefValue{T}
end
StaticObservable(obs::Observable) = StaticObservable(tuple(obs.listeners...), Ref(obs[]))
function StaticObservable(val::Ref, listeners...)
_notify(val, listeners)
@mschauer
mschauer / nonparabayes.jl
Last active October 13, 2021 13:07
Non-parametric Bayesian regression in Fourier domain
n = 1000
x = range(0, 1, length=n)
ς = 1.5 # noise level
μ = 3*x.*sin.(2pi*x) # periodic signal in time domain
#μ = 6*sqrt.(abs.(x .- 0.5)) # this one is difficult to estimate
# Model: Signal distorted by white noise
y = μ + ς*randn(n)
using Mitosis
using MitosisStochasticDiffEq
import MitosisStochasticDiffEq as MSDE
using StaticArrays, LinearAlgebra
using OrdinaryDiffEq
# Match with B and sigma
B(θ) = [-0.1 0.2θ; -0.2θ -0.1]
beta(θ) = [0.,0.]
Σ(θ) = 0.15*I(2)
@mschauer
mschauer / sde.jl
Last active May 12, 2021 15:32
Elementary sample SDE using forward simulation and random walk on Wiener process ("Crank-Nicolson" scheme).
using AdvancedMH
using Distributions
using Random
using MCMCChains
using StructArrays
struct MvWiener{Tu0,Ttrange} <: ContinuousMatrixDistribution
u0::Tu0
trange::Ttrange
end
@mschauer
mschauer / lingauss.jl
Created May 9, 2021 09:24
Bayesian linear Gaussian models
using LinearAlgebra, Test, Random, Statistics
outer(x) = x*x'
lchol(x) = cholesky(Symmetric(x)).L
Random.seed!(1)
# dimensions
n = 10 # observed
p = 5 # latent
# parameters
@mschauer
mschauer / solver.jl
Created May 4, 2021 15:36
Zero cost abstraction Maruyama solver
using StaticArrays
struct EulerMaruyama!
end
"""
tangent!(du, u, dz, P)
"""