55rm(list = ls())
66library(netdiffuseR )
77
8- # Load the base epigames dataset (with dynamic attrs)
98load(" data/epigames.rda" )
109
1110attrs <- epigames $ attributes # 594 x 6: id, toa, qyes_total, qno_total, mask_prop, med_prop
1211edges <- epigames $ edgelist # hourly edgelist: sender, receiver, time (0-338), weight
1312dyn_long <- epigames $ dyn_attrs # long format: id, hour (0-338), mask, med, quarantine
1413
1514# Collapse hourly edgelist into 15 daily windows via collapse_timeframes()
16- WINDOW_SIZE <- 24 # hours per day
15+ WINDOW_SIZE <- 24
1716N_DAYS <- 15
1817
18+ dyn_long $ day <- (dyn_long $ hour %/% WINDOW_SIZE ) + 1
19+ dyn_long $ day <- pmin(dyn_long $ day , N_DAYS ) # day mapping
20+
1921daily_edgelist <- collapse_timeframes(
2022 edgelist = edges ,
2123 ego = " sender" ,
@@ -33,21 +35,18 @@ adjmat <- edgelist_to_adjmat(
3335 daily_edgelist [, c(" sender" , " receiver" )],
3436 w = daily_edgelist $ weight ,
3537 t0 = daily_edgelist $ time ,
38+ t1 = daily_edgelist $ time ,
3639 keep.isolates = TRUE ,
3740 multiple = TRUE
3841)
3942
4043# Build vertex.dyn.attrs: one data.frame per day (15 total)
41- # Each data.frame: 594 rows, columns: mask, med, quarantine (daily means)
42- # Map hourly data to day index (day d = hours [(d-1)*24 .. d*24-1])
43- dyn_long $ day <- (dyn_long $ hour %/% WINDOW_SIZE ) + 1 # 1-based day
44- dyn_long $ day <- pmin(dyn_long $ day , N_DAYS ) # clamp hour 336-338 to day 15
44+ # Each data.frame: 594 rows, columns: mask, med, quarantine
4545
4646vertex_dyn <- lapply(1 : N_DAYS , function (d ) {
4747 sub <- dyn_long [dyn_long $ day == d , ]
4848
4949 # Aggregate per node: mean within each 24-hour window
50- # (proportion of hours in that day where behavior was active)
5150 agg <- aggregate(
5251 cbind(mask , med , quarantine ) ~ id ,
5352 data = sub ,
@@ -58,7 +57,7 @@ vertex_dyn <- lapply(1:N_DAYS, function(d) {
5857 agg <- agg [order(agg $ id ), ]
5958 rownames(agg ) <- NULL
6059
61- # Return only the behavior columns (not id — diffnet uses position)
60+ # Return only the behavior columns
6261 agg [, c(" mask" , " med" , " quarantine" )]
6362})
6463
0 commit comments