summaryrefslogtreecommitdiffstats
path: root/experiments/ml2.pyx
diff options
context:
space:
mode:
authorBen Green <ben@SEASITs-MacBook-Pro.local>2015-06-23 11:55:17 -0400
committerBen Green <ben@SEASITs-MacBook-Pro.local>2015-06-23 11:55:17 -0400
commitaa081ff0ddadfcfdcfc4b61af9845760a463e4cc (patch)
treef1005aaa3e62d2b01d5c042b9342576b952e5f81 /experiments/ml2.pyx
parentd99879dc3d6839b00f4b325320fe2b992391b915 (diff)
downloadcriminal_cascades-aa081ff0ddadfcfdcfc4b61af9845760a463e4cc.tar.gz
updated calculation of structural component with edge weights, and to
penalize less for longer distances
Diffstat (limited to 'experiments/ml2.pyx')
-rw-r--r--experiments/ml2.pyx24
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]