diff options
Diffstat (limited to 'experiments/ml2.pyx')
| -rw-r--r-- | experiments/ml2.pyx | 24 |
1 files changed, 7 insertions, 17 deletions
diff --git a/experiments/ml2.pyx b/experiments/ml2.pyx index 95f6f34..fb2ec0d 100644 --- a/experiments/ml2.pyx +++ b/experiments/ml2.pyx @@ -6,20 +6,17 @@ from libc.math cimport log, exp DTYPE = np.float64 ctypedef np.float_t DTYPE_t -cdef DTYPE_t plogis(DTYPE_t weight, DTYPE_t delta): - return 1./(1. + exp(-weight/delta)) - cdef DTYPE_t weight_success(int dist, int dt, DTYPE_t alpha, DTYPE_t delta, DTYPE_t w1, DTYPE_t w2, DTYPE_t w3): """weight for successful infection, exponential time model""" cdef DTYPE_t structural, temporal, result - structural = dist * log(delta) - # structural = plogis(w1,delta) * plogis(w2,delta) * plogis(w3,delta) + # structural = delta ** dist + structural = delta/(1. + exp(-w1*lmbda) + exp(-w2*lmbda) + exp(-w3*lmbda)) temporal = log(exp(alpha)-1.) - alpha*dt # temporal = 1 - exp(-alpha*dt) # if exp(-alpha*dt)==0.: print 'UNDERFLOW ERROR' # temporal = 1. / (1. + (dt - 1.)/alpha)**0.01 - 1. / (1. + dt/alpha)**0.01 - result = structural + temporal + result = log(structural) + temporal # print 'st', structural, temporal return result @@ -27,8 +24,8 @@ cdef DTYPE_t weight_failure(int dist, int dt, DTYPE_t alpha, DTYPE_t delta, DTYPE_t w1, DTYPE_t w2, DTYPE_t w3): """weight for failed infection, exponential time model""" cdef DTYPE_t structural, temporal, result - structural = delta ** dist - # structural = plogis(w1,delta) * plogis(w2,delta) * plogis(w3,delta) + # structural = delta ** dist + structural = delta/(1. + exp(-w1/lmbda) + exp(-w2/lmbda) + exp(-w3/lmbda)) temporal = exp(-alpha * dt) # temporal = 1. - 1. / (1. + dt/alpha)**0.01 result = log(1. - structural + structural * temporal) @@ -40,7 +37,7 @@ def ml2(dict root_victims, dict victims, dict non_victims, DTYPE_t age, print 'ML2' cdef: int n_roots, n_victims, roots, i, dist, dt, t, l - DTYPE_t beta, ll + DTYPE_t ll list parents, failures, successes n_roots, n_victims = len(root_victims), len(victims) cdef: @@ -80,20 +77,13 @@ def ml2(dict root_victims, dict victims, dict non_victims, DTYPE_t age, for (dist, dt, w1, w2, w3) in parents] probs_nv[i] = sum(failures) - # print successes - # print failures - # print probs - # calculate log likelihood - # probs.sort(); probs = probs[::-1] # sort probs in descending order - # cdef: - # np.ndarray[DTYPE_t] cums = probs.cumsum() ll = probs_fail.sum() # add probability that all edges to victims fail ll += probs_nv.sum() # add probability that all edges to non_victims fail ll += probs.sum() # add probability for realized edges and subtract probability these edges fail roots = n_roots - beta = 0 + beta = float('nan') # print n_nodes, n_roots, n_victims, max_i, roots print parent_dists[1:100] print parent_dts[1:100] |
