summaryrefslogtreecommitdiffstats
path: root/R Scripts/generate-network.R
diff options
context:
space:
mode:
Diffstat (limited to 'R Scripts/generate-network.R')
-rw-r--r--R Scripts/generate-network.R44
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,]