diff options
| author | Thibaut Horel <thibaut.horel@gmail.com> | 2015-07-02 22:37:45 -0700 |
|---|---|---|
| committer | Thibaut Horel <thibaut.horel@gmail.com> | 2015-07-02 22:37:45 -0700 |
| commit | 58ed50d980a1ba240bb50b27c42db0a679f00b43 (patch) | |
| tree | e7f410984ead0c8b2163edbae9d95dae66a7134b /R Scripts/generate-network.R | |
| parent | 5a76e2393e4f2d89f885ea99c473da840d0cd7db (diff) | |
| parent | 110069d77815a3d62e3526f18b2a34fb79beff1e (diff) | |
| download | criminal_cascades-58ed50d980a1ba240bb50b27c42db0a679f00b43.tar.gz | |
Merge branch 'master' of github.com:Thibauth/criminal_cascades
Diffstat (limited to 'R Scripts/generate-network.R')
| -rw-r--r-- | R Scripts/generate-network.R | 44 |
1 files changed, 24 insertions, 20 deletions
diff --git a/R Scripts/generate-network.R b/R Scripts/generate-network.R index 3b40969..db7012d 100644 --- a/R Scripts/generate-network.R +++ b/R Scripts/generate-network.R @@ -3,20 +3,20 @@ setwd("~/Documents/Cascade Project/") source('criminal_cascades/R Scripts/temporal.R') source('criminal_cascades/R Scripts/structural.R') -alpha = 1/100 -beta = 0.02 -delta = 0.15 +alpha = 0.1 +beta = 0.25 +delta = 0.1 # lmbda = 1/10 t_max = 1000 N = 5000 g = forest.fire.game(nodes=N, fw.prob=0.3, ambs=1, directed=F) -plot(g, vertex.size=5, vertex.label=NA) +plot(g, vertex.size=3, vertex.label=NA) V(g)$seed = runif(vcount(g))<beta seeds = which(V(g)$seed) V(g)$vic = V(g)$seed -V(g)$vic.day[V(g)$seed] = sample(1:t_max, sum(V(g)$seed)) +V(g)$vic.day[V(g)$seed] = sample(1:t_max, sum(V(g)$seed), replace=T) #1 if testing ml2 V(g)$spawn.date = 0 V(g)$infector = NA @@ -28,17 +28,21 @@ for (day in 1:t_max){ dists = as.numeric(shortest.paths(g,vic,neighbors)) infected = neighbors[which(runif(length(neighbors))<structural(delta, dists))] infected = setdiff(infected,seeds) # don't try to infect seeds - inf.days = day + ceiling(alpha*rexp(length(infected),alpha)) - V(g)$vic[infected] = TRUE - infects = (inf.days <= V(g)$vic.day[infected]) %in% c(NA,T) - V(g)$vic.day[infected[infects]] = inf.days[infects] - V(g)$infector[infected[infects]] = vic + inf.days = day + ceiling(rexp(length(infected),alpha)) + realized = ((inf.days <= V(g)$vic.day[infected]) %in% c(NA,T)) & (inf.days<=t_max) + infected = infected[realized] + if(sum(realized)){ + V(g)$vic[infected] = TRUE + V(g)$vic.day[infected] = inf.days[realized] + V(g)$infector[infected] = vic + } } } vic_ids = which(V(g)$vic) +print(length(vic_ids)) cols = rep('lightblue',N); cols[V(g)$vic]='red'; cols[V(g)$seed]='darkred' -plot(g, vertex.size=5, vertex.label=NA, vertex.color=cols) +plot(g, vertex.size=3, vertex.label=NA, vertex.color=cols) ##### generate dag_dat dag_dat_test = data.frame(matrix(nrow=1,ncol=10)) @@ -68,12 +72,12 @@ rownames(dag_dat_test) = NULL write.csv(dag_dat_test, file='Results/dag_dat_test.csv') -##### analyze performance of recovery algorithm -recovered = read.csv('Results/infectors.csv',header=F,col.names=c('victim','infector')) -recovered = recovered[order(recovered$victim),] -infectors = cbind(setdiff(vic_ids,seeds), - V(g)$infector[setdiff(vic_ids,seeds)], - recovered$infector[recovered$victim %in% setdiff(vic_ids,seeds)]) -mean(infectors[,2]==infectors[,3]) - -dag_dat_test[dag_dat_test$to==4984,]
\ No newline at end of file +##### analyze performance of recovery algorithm ------ +# recovered = read.csv('Results/infectors.csv',header=F,col.names=c('victim','infector')) +# recovered = recovered[order(recovered$victim),] +# infectors = cbind(setdiff(vic_ids,seeds), +# V(g)$infector[setdiff(vic_ids,seeds)], +# recovered$infector[recovered$victim %in% setdiff(vic_ids,seeds)]) +# mean(infectors[,2]==infectors[,3]) +# +# dag_dat_test[dag_dat_test$to==4984,] |
