EpiModel / ARTnet

Network and Epidemic Parameterization with the ARTnet Study Data
10 stars 5 forks source link

count.oo.part vs. MP12INSTANUM2 #26

Closed martinamorris closed 4 years ago

martinamorris commented 4 years ago

EDITED

@smjenness you construct count.oopart here: https://github.com/EpiModel/ARTnet/blob/95f6d1231f1e8e7654a74d4caa488d741117454a/R/NetParams.R#L105-L116

2 questions:

  1. Why didn't you use the direct question MP12INSTANUM2? EDIT: sorry, I asked this a couple of weeks back and you answered that this question is only available for 2018.

  2. Defining count.oo.part by subtracting the count of mc ai.partners (from the 5 modules) from the total ai.partner count assumes there were no excess (>6) mc ai.partners. This could bias the count.oo.part upwards. Is that what you intended?

reprex below, comparing the two variables:

## Packages ##
library("tidyverse")
library("ARTnetData")
## Data ##
d <- ARTnet.wide
l <- ARTnet.long
# Total MC anal sex partner count
d <- l %>%
filter(RAI == 1 | IAI == 1) %>%
filter(ptype %in% 1:2) %>%
group_by(AMIS_ID) %>%
count() %>%
rename(count.mc.part = n) %>%
right_join(d, by = "AMIS_ID")
d$count.mc.part <- ifelse(is.na(d$count.mc.part), 0, d$count.mc.part)
d$count.oo.part <- d$ai.part - d$count.mc.part
d$count.oo.part <- pmax(0, d$count.oo.part)
plot(d$count.oo.part, d$M_MP12INSTANUM2)
abline(0,1, col="red")

image

As expected, the count.oo.part is often > MP12INSTANUM2. Though I'm not sure it makes sense that those larger discrepancies are all excess mc partners ...

This plot is worth keeping in mind as we use count.oo.part and rate.oo.part for analysis.

In the target stat workflow, it would be possible to use the MP12INSTANUM2 variable -- since you are modeling the number of predicted INST partners anyway in the NetParams/NetStats scripts.

smjenness commented 4 years ago

This M_MP12INSTANUM2 variable was only added in the second wave of data collection, so there was a lot of missing data. We have retained use of the count.oo.part variable until we got around to comparing the variables, as you did here. Note also that the question was only asked of people with multiple AI partners, so MSM with 0 or 1 AI partners have missing data (that's easy enough to fix, but just wanted you to be aware of it). Table below illustrates...

d$miss.M_MP12INSTANUM2 <- ifelse(is.na(d$M_MP12INSTANUM2), 1, 0)
d$mult.ai.part <- ifelse(d$ai.part > 1, 1, 0)

table(d$survey.year, d$miss.M_MP12INSTANUM2, d$mult.ai.part)