import pymc as pm
import kabuki as kab
class KWeibSum(kab.Hierarchical): def create_knodes(self): # Population parameters: # Shape & scale for first Weibull distribution: t1shape = kab.Knode(pm.Uniform, 't1shape', lower=0, upper=20, depends=self.depends['foo']) t1scale = kab.Knode(pm.Uniform, 't1scale', lower=0, upper=20, depends=self.depends['foo']) # Shape & scale for second Weibull distribution: t2shape = kab.Knode(pm.Uniform, 't2shape', lower=0, upper=20, depends=self.depends['foo']) t2scale = kab.Knode(pm.Uniform, 't2scale', lower=0, upper=20, depends=self.depends['foo']) # Subject stochastics: tau_subj = kab.Knode(pm.Uninformative, 'tau_subj', col_name='data', observed=True, depends=('subj_idx','tumortype') ) #depends=self.depends['foo'] ? t1_subj = kab.Knode(pm.Uniform, 't1_subj', lower=0, upper=tau_subj, depends=('subj_idx',), subj=True) # Subject deterministics/potentials: t2_subj = kab.Knode(SubtractDeterministic, 't2_subj', a=tau_subj, b=t1_subj, depends=('subj_idx',), subj=False, hidden=True) t1dist = kab.Knode(WeibullPotential, 't1dist', value=t1_subj, alpha=t1shape, beta=t1scale, depends=('subj_idx',), subj=False, hidden=True) t2dist = kab.Knode(WeibullPotential, 't2dist', value=t2_subj, alpha=t2shape, beta=t2scale, depends=('subj_idx',), subj=False, hidden=True) return [t1shape, t1scale, t2shape, t2scale, tau_subj, t1_subj, t2_subj, t1dist, t2dist]
class WeibullPotential(pm.Potential): def __init__(self, name, value, alpha, beta): pm.Potential.__init__(self, logp=pm.weibull_like,\ name=name,\ parents={'x':value, 'alpha':alpha, 'beta':beta},\ doc='Weibull Potential',\ verbose=0,\ cache_depth=2)
class SubtractDeterministic(pm.Deterministic): def __init__(self, name, a, b): pm.Deterministic.__init__(self, eval = lambda a=a,b=b:a-b,\ name=name,\ parents={'a':a,'b':b},\ doc='Subtraction',\ trace=False,\ verbose=0,\ dtype=float,\ plot=False,\ cache_depth=2)--
You received this message because you are subscribed to the Google Groups "hddm-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to hddm-users+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.