-
-
Notifications
You must be signed in to change notification settings - Fork 142
Open
Labels
Description
Similar to horseshoe prior #836, we could have the regularized version.
It could be something like this (needs to be double-checked)
def horseshoe_regularized(
name,
scale_global,
scale_slab,
nu_global=4, # nu_global in Stan
nu_local=1, # nu_local in Stan
slab_df=4, # slab_df in Stan
shape=None,
dims=None,
):
if dims is None and shape is not None:
dims = f"{name}_dim"
tau = pm.HalfStudentT(f"{name}_tau", nu=nu_global, sigma=scale_global)
lam = pm.HalfStudentT(f"{name}_lam", nu=nu_local, sigma=1.0, dims=dims)
caux = pm.InverseGamma(f"{name}_caux", alpha=slab_df / 2, beta=slab_df / 2)
c2 = pm.Deterministic(f"{name}_c2", scale_slab**2 * caux)
z = pm.Normal(f"{name}_z", 0.0, 1.0, dims=dims)
lam_tilde = pm.Deterministic(
f"{name}_lam_tilde",
pm.math.sqrt((c2 * lam**2) / (c2 + tau**2 * lam**2)),
dims=dims,
)
beta = pm.Deterministic(name, z * tau * lam_tilde, dims=dims)
return betaReactions are currently unavailable