Sun Jun 2 22:19:18 2013
Transactions are grouped in \( numt=25 \) equal time intervals, and a time series of graphs is built of length \( numt \). For each time interval \( t \), an edge exist between a donor and a charity at \( t \) if there is a transaction between the two at that interval.
numt <- 25
ggg <- buildTSG(numt)
## [1] 25
## [1] 8052
## [1] 756
The dissimilarities between donors are computed, and the adjacency matrix for the donor graph is randomly generated based on the random dot product graph model. Since the dissimilarities are constant, the graph is also constant throughout time.
Aj <- buildGj2(donor)
## [1] 8052 8052
Given the constant graph of \( G_{donor} \) and its embedding, we find embeddings of the time-dependent \( G_{donor\times charity,t} \) for each \( t=1,\ldots,numt \) . We then sample a random dot product graph based on the embedding and compute the local scan statistic at each time interval.
dmax <- 20
numt <- length(ggg)
us <- them <- rep(0, numt)
for (i in 1:numt) {
Atable <- get.incidence(ggg[[i]])
out <- inverse.rdpg.oos(Aj, dmax, Atable)
stfp <- as.matrix(out$X.oos)
P <- cossim(stfp)
P <- exp(-P^2)
Aj2 <- rg.sample(P)
gj2 <- graph.adjacency(Aj2)
(us[i] <- max(local.scan.igraph(gj2, k = 1)))
(them[i] <- max(local.scan.igraph(gj2, k = 1, "them")))
}
Plot the time series of ''us'' vs ''them'' local statistics.
The points are the charities who are the \( (k=1) \) neighbors of \( \arg\max_v(scan1) \) at each time \( t \). The size of the point is the total amount of donations to the charity.