summaryrefslogtreecommitdiffstats
path: root/R Scripts/generate-network.R
diff options
context:
space:
mode:
authorBen Green <ben@SEASITs-MacBook-Pro.local>2015-07-01 00:49:23 -0400
committerBen Green <ben@SEASITs-MacBook-Pro.local>2015-07-01 00:49:23 -0400
commit8e09ca6ca68c71bdab65525b529e2adfa281823c (patch)
treed395bfcb0f9f0bc1092072ae1a8a9d3ad9c98a4a /R Scripts/generate-network.R
parent6e527bbf612465bf5d739b9652abc0165550993c (diff)
downloadcriminal_cascades-8e09ca6ca68c71bdab65525b529e2adfa281823c.tar.gz
Got predict-victims running in parallel, drastically reducing the time
for each test. Also changed how we get the rankings of infected individuals each day.
Diffstat (limited to 'R Scripts/generate-network.R')
-rw-r--r--R Scripts/generate-network.R40
1 files changed, 21 insertions, 19 deletions
diff --git a/R Scripts/generate-network.R b/R Scripts/generate-network.R
index 3b40969..dab81a4 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 = 1/10
+beta = 0.01
+delta = 0.25
# 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] = 1#sample(1:t_max, sum(V(g)$seed))
V(g)$spawn.date = 0
V(g)$infector = NA
@@ -28,17 +28,19 @@ 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))
+ 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]
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
+ 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 +70,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,]