Reference · Finite types, distributions and Markov chains
rainbow.math.finite.markov-metropolis-hastings
A fully checked finite Metropolis--Hastings independence sampler. The worked target on states {0,1} is (1/3,2/3). Its independence proposal equals the target, so the Hastings ratio is one and every proposal is accepted. The resulting kernel is the target row at every source. We prove exact row normalization, detailed balance, stationarity, and one-step mixing from every normalized initial mass. Native, kernel-checked, and axiom-free on D63.
mcmc/mh-two-state-space
mcmc/mh-two-state-space : → Finset ℕ
Finset = finset-data/Finsetℕ = data/Nat
mcmc/mh-target-mass
mcmc/mh-target-mass : (x₁ : ℕ) → ℚ≥0
ℕ = data/Natℚ≥0 = nnrat/NonnegativeRational
mcmc/mh-independence-proposal
mcmc/mh-independence-proposal : (x₁ x₂ : ℕ) → ℚ≥0
ℕ = data/Natℚ≥0 = nnrat/NonnegativeRational
mcmc/mh-acceptance
mcmc/mh-acceptance : (x₁ x₂ : ℕ) → ℚ≥0
ℕ = data/Natℚ≥0 = nnrat/NonnegativeRational
mcmc/mh-kernel
mcmc/mh-kernel : (x₁ x₂ : ℕ) → ℚ≥0
ℕ = data/Natℚ≥0 = nnrat/NonnegativeRational
mcmc/mh-target-normalized
mcmc/mh-target-normalized : → probability/nnrat-total-mass ℕ ahof-d2/grid mcmc/mh-target-mass = 1
1 = nnrat/one= = nnrat/equivalent: equality of rational valuesℕ = data/Nat
mcmc/mh-proposal-normalized
mcmc/mh-proposal-normalized : (source : ℕ) → probability/nnrat-total-mass ℕ ahof-d2/grid (mcmc/mh-independence-proposal source) = 1
1 = nnrat/one= = nnrat/equivalent: equality of rational valuesℕ = data/Nat
mcmc/mh-all-proposals-accepted
mcmc/mh-all-proposals-accepted : (source target : ℕ) → mcmc/mh-acceptance source target = 1
1 = nnrat/one= = nnrat/equivalent: equality of rational valuesℕ = data/Nat
mcmc/mh-kernel-equals-proposal
mcmc/mh-kernel-equals-proposal : (source target : ℕ) → mcmc/mh-kernel source target = mcmc/mh-independence-proposal source target
= = nnrat/equivalent: equality of rational valuesℕ = data/Nat
mcmc/mh-kernel-rows-normalized
mcmc/mh-kernel-rows-normalized : → markov/nnrat-kernel-rows-normalized ℕ ahof-d2/grid mcmc/mh-kernel
ℕ = data/Nat
mcmc/mh-detailed-balance
mcmc/mh-detailed-balance : → markov/nnrat-detailed-balance ℕ mcmc/mh-target-mass mcmc/mh-kernel
ℕ = data/Nat
mcmc/mh-target-stationary
mcmc/mh-target-stationary : → markov/nnrat-stationary ℕ ahof-d2/grid mcmc/mh-kernel mcmc/mh-target-mass
ℕ = data/Nat
mcmc/mh-mixes-in-one-step
mcmc/mh-mixes-in-one-step : (initial : ℕ → ℚ≥0) (initial-normalized : probability/nnrat-total-mass ℕ ahof-d2/grid initial = 1) (target : ℕ) → markov/nnrat-kernel-step ℕ ahof-d2/grid mcmc/mh-kernel initial target = mcmc/mh-target-mass target
1 = nnrat/one= = nnrat/equivalent: equality of rational valuesℕ = data/Natℚ≥0 = nnrat/NonnegativeRational