7  Gatherings

Code
make_tabledata_gatherings <- function(){
  targets::tar_read(data_bipartite_graph_collected) |>
    tidygraph::activate(edges)|>
    data.frame() |>
    dplyr::group_by(place_borough, place_community, place_neighborhood) |>
    dplyr::summarize(count = dplyr::n()) |>
    dplyr::rename(borough = place_borough, community = place_community, neighborhood = place_neighborhood) |>
    dplyr::arrange(-count) |>
    dplyr::ungroup() |>
    dplyr::filter(!is.na(borough)) |>
    dplyr::mutate(proportion = count / sum(count))
}


scale_labels <- c("0", "1-10", "11-20", "21-30", "31+")

mpxnyc::neighborhood_sf_obj |>
   sf::st_as_sf() |>
  dplyr::left_join(make_tabledata_gatherings(), by = "neighborhood") |>
  dplyr::mutate(count = ifelse(is.na(count), 0, count)) |>
  dplyr::mutate(count_cat = cut(count, c(-1,0,10,20,30,100), scale_labels)) |>
  dplyr::arrange(-count) |>
  ggplot2::ggplot() +
  ggplot2::geom_sf(data = mpxnyc::community_sf_obj, fill = "white", linewidth = 0, color = NA) +
  ggplot2::geom_sf(data = mpxnyc::community_sf_obj, fill = "#F73C95", linewidth = 0, color = NA, alpha = 0.1) +
  ggplot2::geom_sf(ggplot2::aes(alpha = count_cat), linewidth = 0, fill = "#F73C95", color = "#FF99C5") +
  ggplot2::geom_sf(data = mpxnyc::community_sf_obj, fill = NA, linewidth = 0.3, color = "black") +
  ggplot2::scale_alpha_discrete("Gatherings\ncount") +
  theme_mpxnyc_blank(
    plot.background = ggplot2::element_rect(fill = "white"),
    legend.position = "right"
    )
Figure 7.1: Popular neighborhoods for gatherings, MPX NYC, 2022

MPX NYC participants reported 604 total locations where they had physical or sexual contact in a group setting—what we call gatherings. Nearly two in five gatherings occurred in private residences, and about a quarter took place at dance parties. Over half of gatherings were in Manhattan, while roughly one-third occurred in Brooklyn.

Code
make_tabledata_places() |>
        draw_table_by_placeSex()
Table 7.1: Gatherings by place and contact type
Variable
Physical or sexual contact in group setting in past 4 weeks
p-value2
Did not have sex
N = 264
1
Had sex
N = 352
1
Overall
N = 616
1
Place type


<.001
    Concert/Theatre/Show 63 (24%) 4 (1.1%) 67 (11%)
    Dance Party 110 (42%) 33 (9.4%) 143 (23%)
    Dark Room/Sex Party 10 (3.8%) 52 (15%) 62 (10%)
    Private Residence 28 (11%) 222 (63%) 250 (41%)
    Something Else 40 (15%) 40 (11%) 80 (13%)
    Sport Game 13 (4.9%) 1 (0.3%) 14 (2.3%)
Place borough


0.3
    Bronx 6 (2.3%) 18 (5.1%) 24 (3.9%)
    Brooklyn 84 (32%) 96 (27%) 180 (29%)
    Manhattan 144 (55%) 188 (53%) 332 (54%)
    Queens 29 (11%) 48 (14%) 77 (13%)
    Staten Island 1 (0.4%) 2 (0.6%) 3 (0.5%)
Distance from home


<.001
    Same Community District 42 (16%) 144 (41%) 186 (30%)
    Same Borough 116 (44%) 114 (32%) 230 (37%)
    Different Borough 106 (40%) 94 (27%) 200 (32%)
Data source: MPX NYC 2022
1 n (%)
2 Pearson’s Chi-squared test; Fisher’s exact test

7.1 Sexual contact and distance from home

Just less then one in three of all gatherings happened within the same community district as the participant’s home, one-third were in another borough, and the remainder were in a different community district within the same borough.

Code
make_plotdata_placetype_bar_grid() |>
  dplyr::mutate(proportion = abs(proportion)) |>
  plot_bar_stratified2() +
    ggplot2::coord_polar() +
  scale_axis_mpxnyc() +
  ggplot2::scale_y_continuous(limits = c(-0.3, 0.84)) +
  scale_fill_mpxnyc(name = "") +
  ggplot2::geom_label(ggplot2::aes(label = scales::percent(proportion, accuracy = 1), x = level, y = 0.5 ), border.color = "white", label.size = 0, size = 3.5) +
  theme_mpxnyc_bar_places(
      plot.margin = ggplot2::unit(c(0,0,0,0), "cm"), 
      panel.spacing = ggplot2::unit(0, "cm"),
      legend.position = "bottom",
      panel.grid.major.y = ggplot2::element_blank(),
      panel.grid.major.x = ggplot2::element_blank(),
      axis.text.x = ggplot2::element_blank(),
      strip.text.y.left = ggplot2::element_text(angle = 90)
      )

  #theme_mpxnyc_bar_places(
  #    plot.margin = ggplot2::unit(c(0,0,0,0), "cm"), 
  #    panel.spacing = ggplot2::unit(0, "cm")
  #    ) 
Figure 7.2: MPX NYC contact venue type by distance from home and sexual contact

Gatherings that involved sexual contact were overwhelmingly private residences, whereas non-sexual physical gatherings—such as parties, performances, or sports events—were mostly dance parties (Figure 7.2). The closer a venue was to a participant’s home, the more likely it was to be a private residence and to include sexual contact. Conversely, the farther the venue, the more likely it was a dance party.