# Assign categories as per race/ethnicity, age group and gender identity
## N.B. See Excel sheet "agent population updated" at:
## /cche-lab/data/p2m_parameters_chicago/population_estimates/anna_population_estimation/output/Population estimates_ACS_2011_2015_chicago_updated_021220.xlsx
rm(list=ls())
library(ergm)
## Loading required package: network
## network: Classes for Relational Data
## Version 1.15 created on 2019-04-01.
## copyright (c) 2005, Carter T. Butts, University of California-Irvine
## Mark S. Handcock, University of California -- Los Angeles
## David R. Hunter, Penn State University
## Martina Morris, University of Washington
## Skye Bender-deMoll, University of Washington
## For citation information, type citation("network").
## Type help("network-package") to get started.
##
## ergm: version 3.10.4, created on 2019-06-10
## Copyright (c) 2019, Mark S. Handcock, University of California -- Los Angeles
## David R. Hunter, Penn State University
## Carter T. Butts, University of California -- Irvine
## Steven M. Goodreau, University of Washington
## Pavel N. Krivitsky, University of Wollongong
## Martina Morris, University of Washington
## with contributions from
## Li Wang
## Kirk Li, University of Washington
## Skye Bender-deMoll, University of Washington
## Chad Klumb
## Based on "statnet" project software (statnet.org).
## For license and citation information see statnet.org/attribution
## or type citation("ergm").
## NOTE: Versions before 3.6.1 had a bug in the implementation of the
## bd() constriant which distorted the sampled distribution somewhat.
## In addition, Sampson's Monks datasets had mislabeled vertices. See
## the NEWS and the documentation for more details.
## NOTE: Some common term arguments pertaining to vertex attribute
## and level selection have changed in 3.10.0. See terms help for
## more details. Use 'options(ergm.term=list(version="3.9.4"))' to
## use old behavior.
library(network)
n <- 5000
net <- network.initialize(n, directed = FALSE)
# Assign categories in proportion to age/race/gender
net %v% "cat" <- 0
## Record proprtions as per empirical targets: categories 1-32
## 12 rows Age groups 18-24, 25-34, 35-44, 45-64 for...
## ...NHWhite, NH Black, Hispanic/LatinX, Other/Unknown
## the next 20 rows are all zeros:
## 4 zeros coresspond to age groups for "Other" MSM
## 16 zeros correspond to 4 age groups each for four race/ethnicities of transfemale
cats <- 1:36
# Data fomat for MSM, TGW, Cis-men
cat.props <- c(
# MSM
0.043873594,
0.051747259,
0.053086042,
0.128868039,
0.058334366,
0.080970067,
0.080740577,
0.051394902,
0.072878528,
0.126381807,
0.108923693,
0.087202456,
# TGW
0,
0.003920247,
0.00402167,
0,
0.00441927,
0.006134096,
0,
0.003893553,
0.005521101,
0,
0.008251795,
0.006606247,
# HRH
0,
0.000703025,
0.000721213,
0,
0.000792516,
0.001100038,
0,
0.000698238,
0.000990109,
0,
0.001479809,
0.0011847
)
length(cat.props)
## [1] 36
cat.vals <- sample(cats, size=n, replace=TRUE, prob=cat.props)
net %v% "cat" <- cat.vals
table(net %v% "cat")
##
## 1 2 3 4 5 6 7 8 9 10 11 12 14 15 17 18 20 21
## 227 289 272 625 304 377 429 234 343 620 569 439 22 22 21 33 24 40
## 23 24 26 27 29 30 32 33 35 36
## 41 27 7 4 3 5 2 9 7 5
## set vertex attributes in accordance to these proportions
net %v% "race" <- 0
net %v% "age_group" <- 0
net %v% "identity" <- 0
for (i in 1:network.size(net)){
#MSM
if ((net %v% "cat")[i] == 1){
set.vertex.attribute(net, "race", v=i, value="White")
set.vertex.attribute(net, "age_group", v=i, value="18-24")
set.vertex.attribute(net, "identity", v=i, value="MSM")
}
else if ((net %v% "cat")[i] == 2){
set.vertex.attribute(net, "race", v=i, value="Black")
set.vertex.attribute(net, "age_group", v=i, value="18-24")
set.vertex.attribute(net, "identity", v=i, value="MSM")
}
else if ((net %v% "cat")[i] == 3){
set.vertex.attribute(net, "race", v=i, value="Hispanic")
set.vertex.attribute(net, "age_group", v=i, value="18-24")
set.vertex.attribute(net, "identity", v=i, value="MSM")
}
else if ((net %v% "cat")[i] == 4){
set.vertex.attribute(net, "race", v=i, value="White")
set.vertex.attribute(net, "age_group", v=i, value="25-34")
set.vertex.attribute(net, "identity", v=i, value="MSM")
}
else if ((net %v% "cat")[i] == 5){
set.vertex.attribute(net, "race", v=i, value="Black")
set.vertex.attribute(net, "age_group", v=i, value="25-34")
set.vertex.attribute(net, "identity", v=i, value="MSM")
}
else if ((net %v% "cat")[i] == 6){
set.vertex.attribute(net, "race", v=i, value="Hispanic")
set.vertex.attribute(net, "age_group", v=i, value="25-34")
set.vertex.attribute(net, "identity", v=i, value="MSM")
}
else if ((net %v% "cat")[i] == 7){
set.vertex.attribute(net, "race", v=i, value="White")
set.vertex.attribute(net, "age_group", v=i, value="35-44")
set.vertex.attribute(net, "identity", v=i, value="MSM")
}
else if ((net %v% "cat")[i] == 8){
set.vertex.attribute(net, "race", v=i, value="Black")
set.vertex.attribute(net, "age_group", v=i, value="35-44")
set.vertex.attribute(net, "identity", v=i, value="MSM")
}
else if ((net %v% "cat")[i] == 9){
set.vertex.attribute(net, "race", v=i, value="Hispanic")
set.vertex.attribute(net, "age_group", v=i, value="35-44")
set.vertex.attribute(net, "identity", v=i, value="MSM")
}
else if ((net %v% "cat")[i] == 10){
set.vertex.attribute(net, "race", v=i, value="White")
set.vertex.attribute(net, "age_group", v=i, value="45-64")
set.vertex.attribute(net, "identity", v=i, value="MSM")
}
else if ((net %v% "cat")[i] == 11){
set.vertex.attribute(net, "race", v=i, value="Black")
set.vertex.attribute(net, "age_group", v=i, value="45-64")
set.vertex.attribute(net, "identity", v=i, value="MSM")
}
else if ((net %v% "cat")[i] == 12){
set.vertex.attribute(net, "race", v=i, value="Hispanic")
set.vertex.attribute(net, "age_group", v=i, value="45-64")
set.vertex.attribute(net, "identity", v=i, value="MSM")
}
#TGW
else if ((net %v% "cat")[i] == 13){
set.vertex.attribute(net, "race", v=i, value="White")
set.vertex.attribute(net, "age_group", v=i, value="18-24")
set.vertex.attribute(net, "identity", v=i, value="TGW")
}
else if ((net %v% "cat")[i] == 14){
set.vertex.attribute(net, "race", v=i, value="Black")
set.vertex.attribute(net, "age_group", v=i, value="18-24")
set.vertex.attribute(net, "identity", v=i, value="TGW")
}
else if ((net %v% "cat")[i] == 15){
set.vertex.attribute(net, "race", v=i, value="Hispanic")
set.vertex.attribute(net, "age_group", v=i, value="18-24")
set.vertex.attribute(net, "identity", v=i, value="TGW")
}
else if ((net %v% "cat")[i] == 16){
set.vertex.attribute(net, "race", v=i, value="White")
set.vertex.attribute(net, "age_group", v=i, value="25-34")
set.vertex.attribute(net, "identity", v=i, value="TGW")
}
else if ((net %v% "cat")[i] == 17){
set.vertex.attribute(net, "race", v=i, value="Black")
set.vertex.attribute(net, "age_group", v=i, value="25-34")
set.vertex.attribute(net, "identity", v=i, value="TGW")
}
else if ((net %v% "cat")[i] == 18){
set.vertex.attribute(net, "race", v=i, value="Hispanic")
set.vertex.attribute(net, "age_group", v=i, value="25-34")
set.vertex.attribute(net, "identity", v=i, value="TGW")
}
else if ((net %v% "cat")[i] == 19){
set.vertex.attribute(net, "race", v=i, value="White")
set.vertex.attribute(net, "age_group", v=i, value="35-44")
set.vertex.attribute(net, "identity", v=i, value="TGW")
}
else if ((net %v% "cat")[i] == 20){
set.vertex.attribute(net, "race", v=i, value="Black")
set.vertex.attribute(net, "age_group", v=i, value="35-44")
set.vertex.attribute(net, "identity", v=i, value="TGW")
}
else if ((net %v% "cat")[i] == 21){
set.vertex.attribute(net, "race", v=i, value="Hispanic")
set.vertex.attribute(net, "age_group", v=i, value="35-44")
set.vertex.attribute(net, "identity", v=i, value="TGW")
}
else if ((net %v% "cat")[i] == 22){
set.vertex.attribute(net, "race", v=i, value="White")
set.vertex.attribute(net, "age_group", v=i, value="45-64")
set.vertex.attribute(net, "identity", v=i, value="TGW")
}
else if ((net %v% "cat")[i] == 23){
set.vertex.attribute(net, "race", v=i, value="Black")
set.vertex.attribute(net, "age_group", v=i, value="45-64")
set.vertex.attribute(net, "identity", v=i, value="TGW")
}
else if ((net %v% "cat")[i] == 24){
set.vertex.attribute(net, "race", v=i, value="Hispanic")
set.vertex.attribute(net, "age_group", v=i, value="45-64")
set.vertex.attribute(net, "identity", v=i, value="TGW")
}
#HRH
else if ((net %v% "cat")[i] == 25){
set.vertex.attribute(net, "race", v=i, value="White")
set.vertex.attribute(net, "age_group", v=i, value="18-24")
set.vertex.attribute(net, "identity", v=i, value="HRH")
}
else if ((net %v% "cat")[i] == 26){
set.vertex.attribute(net, "race", v=i, value="Black")
set.vertex.attribute(net, "age_group", v=i, value="18-24")
set.vertex.attribute(net, "identity", v=i, value="HRH")
}
else if ((net %v% "cat")[i] == 27){
set.vertex.attribute(net, "race", v=i, value="Hispanic")
set.vertex.attribute(net, "age_group", v=i, value="18-24")
set.vertex.attribute(net, "identity", v=i, value="HRH")
}
else if ((net %v% "cat")[i] == 28){
set.vertex.attribute(net, "race", v=i, value="White")
set.vertex.attribute(net, "age_group", v=i, value="25-34")
set.vertex.attribute(net, "identity", v=i, value="HRH")
}
else if ((net %v% "cat")[i] == 29){
set.vertex.attribute(net, "race", v=i, value="Black")
set.vertex.attribute(net, "age_group", v=i, value="25-34")
set.vertex.attribute(net, "identity", v=i, value="HRH")
}
else if ((net %v% "cat")[i] == 30){
set.vertex.attribute(net, "race", v=i, value="Hispanic")
set.vertex.attribute(net, "age_group", v=i, value="25-34")
set.vertex.attribute(net, "identity", v=i, value="HRH")
}
else if ((net %v% "cat")[i] == 31){
set.vertex.attribute(net, "race", v=i, value="White")
set.vertex.attribute(net, "age_group", v=i, value="35-44")
set.vertex.attribute(net, "identity", v=i, value="HRH")
}
else if ((net %v% "cat")[i] == 32){
set.vertex.attribute(net, "race", v=i, value="Black")
set.vertex.attribute(net, "age_group", v=i, value="35-44")
set.vertex.attribute(net, "identity", v=i, value="HRH")
}
else if ((net %v% "cat")[i] == 33){
set.vertex.attribute(net, "race", v=i, value="Hispanic")
set.vertex.attribute(net, "age_group", v=i, value="35-44")
set.vertex.attribute(net, "identity", v=i, value="HRH")
}
else if ((net %v% "cat")[i] == 34){
set.vertex.attribute(net, "race", v=i, value="White")
set.vertex.attribute(net, "age_group", v=i, value="45-64")
set.vertex.attribute(net, "identity", v=i, value="HRH")
}
else if ((net %v% "cat")[i] == 35){
set.vertex.attribute(net, "race", v=i, value="Black")
set.vertex.attribute(net, "age_group", v=i, value="45-64")
set.vertex.attribute(net, "identity", v=i, value="HRH")
}
else if ((net %v% "cat")[i] == 36){
set.vertex.attribute(net, "race", v=i, value="Hispanic")
set.vertex.attribute(net, "age_group", v=i, value="45-64")
set.vertex.attribute(net, "identity", v=i, value="HRH")
}
}
table(net %v% "cat")
##
## 1 2 3 4 5 6 7 8 9 10 11 12 14 15 17 18 20 21
## 227 289 272 625 304 377 429 234 343 620 569 439 22 22 21 33 24 40
## 23 24 26 27 29 30 32 33 35 36
## 41 27 7 4 3 5 2 9 7 5
table(net %v% "race")
##
## Black Hispanic White
## 1523 1576 1901
table(net %v% "age_group")
##
## 18-24 25-34 35-44 45-64
## 843 1368 1081 1708
table(net %v% "identity")
##
## HRH MSM TGW
## 42 4728 230
save.image(file="init-pop-atts.RData")