diff options
Diffstat (limited to 'hawkes/main.py')
| -rw-r--r-- | hawkes/main.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/hawkes/main.py b/hawkes/main.py new file mode 100644 index 0000000..65586ad --- /dev/null +++ b/hawkes/main.py @@ -0,0 +1,43 @@ +from cPickle import load +from math import log, exp +#import numpy as np +#from scipy.optimize import basinhopping +from itertools import product + + +def iter_events(events): + for n, s in events.iteritems(): + for t in s: + yield (n, t) + + +def ll(a): + lamb, alpha, mu = a + + r1 = sum(log(lamb + sum(alpha * w * mu * exp(-mu * (t1 - t2)) + for (n2, t2, w) in s)) + for ((n1, t1), s) in event_edges.iteritems()) + r2 = sum(sum(alpha * w * (1 - exp(-mu * (nodes[n2] - t1))) + for n2, w in edges[n1].iteritems() if nodes[n2] > t1) + for (n1, t1) in iter_events(events)) + r3 = lamb * sum(nodes.itervalues()) + return -(r1 - r2 - r3) + + +if __name__ == "__main__": + nodes, edges, events, event_edges = load(open("data.pickle", "rb")) + d = {} + for line in open("values.txt"): + v = map(float, line.strip().split()) + d[tuple(v[:3])] = v[3] + + # lamb = [20. ** i for i in range(-15, 15)] + # alpha = [20. ** i for i in range(-15, 15)] + # mu = [20. ** i for i in range(-15, 15)] + # for l, a, m in product(lamb, alpha, mu): + # if (l, a, m) in d: + # continue + # print l, a, m, ll((l, a, m)) + print ll((2, 10000000000., 0.000000000000000000001)) + #r = basinhopping(ll, init, disp=True, stepsize=0.1, T=10000., niter=500) + #print r.x |
