summaryrefslogtreecommitdiffstats
path: root/R Scripts/find-parents.R
blob: 023d7ba50e2ba899e51353a90682b608a07ad5cc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# library(igraph)
# setwd("~/Documents/Cascade Project/")
# load('Results/hyper-lcc.RData')
# load('Results/dag_dat_vics.RData')
# source('criminal_cascades/R Scripts/temporal.R')
# source('criminal_cascades/R Scripts/structural.R')

##### Initialize parameters based on what ml2 found
alpha = 0.18
delta = 0.09

##### Get weights
edges = dag_dat_test[!is.na(dag_dat_test$t2),]

dt = edges$t2 - edges$t1
p_t = exp(-alpha*dt) * (exp(alpha)-1)
p_s = structural(delta, edges$dist)
p = p_s * p_t
p_tilde = 1 - p_s + p_s * exp(-alpha*dt)
weights = p/p_tilde
edges$weight = weights

##### Find most likely parents
parents = data.frame(vic=0,Npars=0,par_rank=0,rand_rank=0)
vics = setdiff(vic_ids,seeds)
print(length(vics))
for (u in vics){
  if(which(vics==u) %% 500 == 0) print(which(vics==u))
  u_parents = edges[edges$to==u,]
  u_parents = u_parents[order(u_parents$weight,decreasing=T),]
  Nparents = dim(u_parents)[1]
  infector = V(g)$infector[u]
  infectorID = which(u_parents$from==infector)
  randID = sample(1:Nparents,1)
  parents[which(vics==u),] = c(u, Nparents, infectorID, randID)
}

##### Get some summary statistics on how well 
mean(parents$par_rank==1)
median(parents$par_rank[parents$Npars>9])
median(parents$par_rank[parents$Npars>99])

edges[edges$to==2847,]

## baseline alg
# for each vic, find potential parents, pick one at random