This vignette provides a short demonstration of the package using a dummy dataset.
We first simulate the data using 3 mixtures of 3 normal distributions, and compute Euclidean distances between the observations for each mixture. In practice, each mixture would be a different data type (e.g. location, time of onset of symptoms, genetic sequences of the pathogen):
set.seed(2)
dat1 <- rnorm(30, c(0,1,6))
dat2 <- rnorm(30, c(0,0,1))
dat3 <- rnorm(30, c(8,1,2))
x <- lapply(list(dat1, dat2, dat3), dist)
The function vimes_data
processes the data and ensures matching of the individuals across different data sources:
library(vimes)
x <- vimes_data(x)
plot(x)
We can now run vimes
on the data:
res <- vimes(x, cutoff = c(2,4,2))
names(res)
#> [1] "graph" "clusters" "cutoff" "separate_graphs"
res$graph
#> IGRAPH UN-- 30 104 --
#> + attr: layout_1 (g/n), layout_2 (g/n), layout_3 (g/n), layout
#> | (g/n), color_1 (v/c), color_2 (v/c), color_3 (v/c), size_1
#> | (v/n), size_2 (v/n), size_3 (v/n), label.family_1 (v/c),
#> | label.family_2 (v/c), label.family_3 (v/c), label.color_1 (v/c),
#> | label.color_2 (v/c), label.color_3 (v/c), name (v/c), color
#> | (v/c), size (v/n), label.family (v/c), label.color (v/c),
#> | weight_1 (e/n), weight_2 (e/n), weight_3 (e/n), label.color_1
#> | (e/c), label.color_2 (e/c), label.color_3 (e/c), label.color
#> | (e/c)
#> + edges (vertex names):
res$clusters
#> $membership
#> 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
#> 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1
#> 26 27 28 29 30
#> 2 3 1 2 3
#>
#> $size
#> [1] 10 10 10
#>
#> $K
#> [1] 3
#>
#> $color
#> 1 2 3
#> "#ccddff" "#79d2a6" "#ffb3b3"
The main graph is:
plot(res$graph, main="Main graph")
for(i in 1:3) {
plot(res$separate_graphs[[i]]$graph, main = paste("Graph from data", i))
}