Bringing in data

Second round of data prepared by Narjes was put in SQLite and grabbed it here:

library(dplyr)
library(DBI)
library(ggplot2)
con <- dbConnect(RSQLite::SQLite(),  'DATA/abm1.sqlite')
dbListTables(con)
[1] "abm_m1"       "abm_m2"       "abm_m3"       "sqlite_stat1" "sqlite_stat4"

Data ‘a1’ is the generation-specific stress and LQ:

a1 <- tbl(con, 'abm_m3') %>%
  group_by(Generation, Age, Race) %>%
  summarize(mean_stress = mean(AverageStressScore),
            mean_LQ = mean(LQ)) %>%
  collect() %>%
  mutate(GEN = factor(Generation))
head(a1)

Life course stress trajectories

Checking generational similarity of life course stress trajectories by race and assuring that age-limits more reasonable – they look to be:

g <- ggplot(a1, aes(x=Age, y=mean_stress, group = GEN, 
                    color = GEN))
g + geom_smooth() + facet_grid(Race ~ .)

This looks different from past runs…there is larger racial disparity in accumulated stress and there is some evidence of trans-generational transfer of stress with increases especially for blacks, across generations. Both of these are in line with theoretical model; this probably reflects the class x race dependency added to initial population in latest round.

Now we are looking at Social Class x Generation to see if differences:

Less generational difference, but appearance of the divergence of accumulated stress by class.

Here I am limiting to middle generations (e.g. pooling generations 1-4) and looking at race x SES stratification

 a2 <- tbl(con, 'abm_m3') %>%
   filter(Generation %in% c(1,2,3,4)) %>%
   group_by(Race, SocialClass, Age) %>%
   summarize(mean_stress = mean(AverageStressScore),
             mean_LQ = mean(LQ)) %>%
  collect()

g <- ggplot(a2, aes(x=Age, y=mean_stress, group = SocialClass, 
                    color = SocialClass))
g + geom_smooth() +  facet_grid(Race ~ .) 

Life course LQ trajectories

Now following same process with mean LQ. First examining race x generation:

g <- ggplot(a1, aes(x=Age, y=mean_LQ, group = GEN, 
                    color = GEN))
g + geom_smooth() +  facet_grid(Race ~ .) 

Now examining LQ for SocialClass x generations:

g <- ggplot(a1b, aes(x=Age, y=mean_LQ, group = GEN, 
                    color = GEN))
g + geom_smooth() +  facet_grid(SocialClass ~ .) 

g <- ggplot(a2, aes(x=Age, y=mean_LQ, group = SocialClass, 
                    color = SocialClass))
g + geom_smooth() +  facet_grid(Race ~ .) 

SUMMARY OF ABOVE: There is still a strong trans-generational shift to lower LQ among Blacks which is not entirely realistic but pooling generations 2-4 and looking at race x class, the patterns appear reasonable…some racial disparity within class but larger class disparity.

Birth Rates

Based on skype with Allen & Narjes (3/30/18), I learned that the variable ‘GestationalAge’ is coded like this:

a3 <- tbl(con, 'abm_m3') %>%
  filter(Generation %in% c(1,2,3,4,5)) %>%
  mutate(Pregnant = ifelse(GestationalAge == 100, 0, 1)) %>%
  group_by(Age, Race, SocialClass) %>%
  summarize(CBR = mean(Pregnant)) %>%
  collect()
# CBR by race
g <- ggplot(a3, aes(x = Age, y = CBR, group = Race, color = Race))
g + geom_smooth() + scale_x_continuous(limits = c(13,50)) + scale_y_continuous(limits = c(0, .15))

# CBR by class
g <- ggplot(a3, aes(x = Age, y = CBR, group = SocialClass, color = SocialClass))
g + geom_smooth() + scale_x_continuous(limits = c(13,50)) + scale_y_continuous(limits = c(0, .15))

a3b <- tbl(con, 'abm_m3') %>%
  filter(Generation %in% c(1,2,3,4,5),
         Parity %in% c(0,1,2,3,4)) %>%
  mutate(Pregnant = ifelse(GestationalAge == 100, 0, 1)) %>%
  group_by(Age, Race, Parity) %>%
  summarize(CBR = mean(Pregnant)) %>%
  collect()
# CBR by Parity (stratify on Race)
g <- ggplot(a3b, aes(x = Age, y = CBR, group = factor(Parity), color = factor(Parity)))
g + geom_smooth() + facet_grid(.~Race) +
  scale_x_continuous(limits = c(13,50)) + scale_y_continuous(limits = c(0, .15))

Pregnancy Outcomes

Now I am interested in age-specific birth rate and the risk for Preterm Birth (PTB; <37 weeks).

a4 <- tbl(con, 'abm_m3') %>%
  filter(Generation %in% c(1,2,3,4,5),
         GestationalAge != 100) %>%
  mutate(PTB = ifelse(GestationalAge == 36, 1, 0)) %>%
  group_by(Race, SocialClass, Age) %>%
  summarise(PTBr = mean(PTB, na.rm = T)) %>%
  collect()
g <- ggplot(a4, aes(x = Age, y = PTBr, group = Race, color = Race))
g + geom_smooth()

g <- ggplot(a4, aes(x = Age, y = PTBr, group = SocialClass, color = SocialClass))
g + geom_smooth()

Something in calculation of Preterm Birth is inverted…white women and high SES women have high risk and Black and Low SES women have zero or low risk.

LS0tDQp0aXRsZTogIkFCTSBTdW1tYXJ5IDIgQXByaWwgMjAxOCINCm91dHB1dDoNCiAgaHRtbF9ub3RlYm9vazoNCiAgICB0b2M6IHllcw0KICAgIHRvY19kZXB0aDogMw0KICBodG1sX2RvY3VtZW50Og0KICAgIGRmX3ByaW50OiBwYWdlZA0KICAgIHRvYzogeWVzDQogICAgdG9jX2RlcHRoOiAnMycNCi0tLQ0KDQojIyBCcmluZ2luZyBpbiBkYXRhICANClNlY29uZCByb3VuZCBvZiBkYXRhIHByZXBhcmVkIGJ5IE5hcmplcyB3YXMgcHV0IGluIFNRTGl0ZSBhbmQgZ3JhYmJlZCBpdCBoZXJlOg0KDQoNCmBgYHtyIGVjaG89VFJVRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KERCSSkNCmxpYnJhcnkoZ2dwbG90MikNCg0KY29uIDwtIGRiQ29ubmVjdChSU1FMaXRlOjpTUUxpdGUoKSwgICdEQVRBL2FibTEuc3FsaXRlJykNCg0KZGJMaXN0VGFibGVzKGNvbikNCg0KYGBgDQoNCg0KRGF0YSAnYTEnIGlzIHRoZSBnZW5lcmF0aW9uLXNwZWNpZmljIHN0cmVzcyBhbmQgTFE6ICANCmBgYHtyIGVjaG89VFJVRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCmExIDwtIHRibChjb24sICdhYm1fbTMnKSAlPiUNCiAgZ3JvdXBfYnkoR2VuZXJhdGlvbiwgQWdlLCBSYWNlKSAlPiUNCiAgc3VtbWFyaXplKG1lYW5fc3RyZXNzID0gbWVhbihBdmVyYWdlU3RyZXNzU2NvcmUpLA0KICAgICAgICAgICAgbWVhbl9MUSA9IG1lYW4oTFEpKSAlPiUNCiAgY29sbGVjdCgpICU+JQ0KICBtdXRhdGUoR0VOID0gZmFjdG9yKEdlbmVyYXRpb24pKQ0KaGVhZChhMSkNCmBgYA0KDQoNCiMjIExpZmUgY291cnNlIHN0cmVzcyB0cmFqZWN0b3JpZXMgIA0KQ2hlY2tpbmcgZ2VuZXJhdGlvbmFsIHNpbWlsYXJpdHkgb2YgbGlmZSBjb3Vyc2Ugc3RyZXNzIHRyYWplY3RvcmllcyBieSByYWNlIGFuZCBhc3N1cmluZyB0aGF0IGFnZS1saW1pdHMgbW9yZSByZWFzb25hYmxlIC0tIHRoZXkgbG9vayB0byBiZToNCg0KYGBge3IgZWNobz1UUlVFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KZyA8LSBnZ3Bsb3QoYTEsIGFlcyh4PUFnZSwgeT1tZWFuX3N0cmVzcywgZ3JvdXAgPSBHRU4sIA0KICAgICAgICAgICAgICAgICAgICBjb2xvciA9IEdFTikpDQpnICsgZ2VvbV9zbW9vdGgoKSArIGZhY2V0X2dyaWQoUmFjZSB+IC4pDQoNCmBgYA0KDQpUaGlzIGxvb2tzIGRpZmZlcmVudCBmcm9tIHBhc3QgcnVucy4uLnRoZXJlIGlzIGxhcmdlciByYWNpYWwgZGlzcGFyaXR5IGluIGFjY3VtdWxhdGVkIHN0cmVzcyBhbmQgdGhlcmUgaXMgc29tZSBldmlkZW5jZSBvZiB0cmFucy1nZW5lcmF0aW9uYWwgdHJhbnNmZXIgb2Ygc3RyZXNzIHdpdGggaW5jcmVhc2VzIGVzcGVjaWFsbHkgZm9yIGJsYWNrcywgYWNyb3NzIGdlbmVyYXRpb25zLiBCb3RoIG9mIHRoZXNlIGFyZSBpbiBsaW5lIHdpdGggdGhlb3JldGljYWwgbW9kZWw7IHRoaXMgcHJvYmFibHkgcmVmbGVjdHMgdGhlIGNsYXNzIHggcmFjZSBkZXBlbmRlbmN5IGFkZGVkIHRvIGluaXRpYWwgcG9wdWxhdGlvbiBpbiBsYXRlc3Qgcm91bmQuDQoNCg0KTm93IHdlIGFyZSBsb29raW5nIGF0IFNvY2lhbCBDbGFzcyB4IEdlbmVyYXRpb24gdG8gc2VlIGlmIGRpZmZlcmVuY2VzOiAgDQpgYGB7ciBlY2hvPVRSVUUsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQphMWIgPC0gdGJsKGNvbiwgJ2FibV9tMycpICU+JQ0KICBncm91cF9ieShHZW5lcmF0aW9uLCBBZ2UsIFNvY2lhbENsYXNzKSAlPiUNCiAgc3VtbWFyaXplKG1lYW5fc3RyZXNzID0gbWVhbihBdmVyYWdlU3RyZXNzU2NvcmUpLA0KICAgICAgICAgICAgbWVhbl9MUSA9IG1lYW4oTFEpKSAlPiUNCiAgY29sbGVjdCgpICU+JQ0KICBtdXRhdGUoR0VOID0gZmFjdG9yKEdlbmVyYXRpb24pKQ0KDQpnIDwtIGdncGxvdChhMWIsIGFlcyh4PUFnZSwgeT1tZWFuX3N0cmVzcywgZ3JvdXAgPSBHRU4sIA0KICAgICAgICAgICAgICAgICAgICBjb2xvciA9IEdFTikpDQpnICsgZ2VvbV9zbW9vdGgoKSArIGZhY2V0X2dyaWQoU29jaWFsQ2xhc3MgfiAuKQ0KDQpgYGANCg0KDQpMZXNzIGdlbmVyYXRpb25hbCBkaWZmZXJlbmNlLCBidXQgYXBwZWFyYW5jZSBvZiB0aGUgZGl2ZXJnZW5jZSBvZiBhY2N1bXVsYXRlZCBzdHJlc3MgYnkgY2xhc3MuDQoNCg0KSGVyZSBJIGFtIGxpbWl0aW5nIHRvIG1pZGRsZSBnZW5lcmF0aW9ucyAoZS5nLiBwb29saW5nIGdlbmVyYXRpb25zIDEtNCkgYW5kIGxvb2tpbmcgYXQgcmFjZSB4IFNFUyBzdHJhdGlmaWNhdGlvbg0KDQpgYGB7ciBlY2hvPVRSVUUsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQogYTIgPC0gdGJsKGNvbiwgJ2FibV9tMycpICU+JQ0KICAgZmlsdGVyKEdlbmVyYXRpb24gJWluJSBjKDEsMiwzLDQpKSAlPiUNCiAgIGdyb3VwX2J5KFJhY2UsIFNvY2lhbENsYXNzLCBBZ2UpICU+JQ0KICAgc3VtbWFyaXplKG1lYW5fc3RyZXNzID0gbWVhbihBdmVyYWdlU3RyZXNzU2NvcmUpLA0KICAgICAgICAgICAgIG1lYW5fTFEgPSBtZWFuKExRKSkgJT4lDQogIGNvbGxlY3QoKQ0KDQpnIDwtIGdncGxvdChhMiwgYWVzKHg9QWdlLCB5PW1lYW5fc3RyZXNzLCBncm91cCA9IFNvY2lhbENsYXNzLCANCiAgICAgICAgICAgICAgICAgICAgY29sb3IgPSBTb2NpYWxDbGFzcykpDQpnICsgZ2VvbV9zbW9vdGgoKSArICBmYWNldF9ncmlkKFJhY2UgfiAuKSANCg0KYGBgDQoNCiMjIExpZmUgY291cnNlIExRIHRyYWplY3RvcmllcyAgDQpOb3cgZm9sbG93aW5nIHNhbWUgcHJvY2VzcyB3aXRoIG1lYW4gTFEuIEZpcnN0IGV4YW1pbmluZyByYWNlIHggZ2VuZXJhdGlvbjoNCg0KYGBge3IgZWNobz1UUlVFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KZyA8LSBnZ3Bsb3QoYTEsIGFlcyh4PUFnZSwgeT1tZWFuX0xRLCBncm91cCA9IEdFTiwgDQogICAgICAgICAgICAgICAgICAgIGNvbG9yID0gR0VOKSkNCmcgKyBnZW9tX3Ntb290aCgpICsgIGZhY2V0X2dyaWQoUmFjZSB+IC4pIA0KYGBgDQoNCk5vdyBleGFtaW5pbmcgTFEgZm9yIFNvY2lhbENsYXNzIHggZ2VuZXJhdGlvbnM6ICANCmBgYHtyIGVjaG89VFJVRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCmcgPC0gZ2dwbG90KGExYiwgYWVzKHg9QWdlLCB5PW1lYW5fTFEsIGdyb3VwID0gR0VOLCANCiAgICAgICAgICAgICAgICAgICAgY29sb3IgPSBHRU4pKQ0KZyArIGdlb21fc21vb3RoKCkgKyAgZmFjZXRfZ3JpZChTb2NpYWxDbGFzcyB+IC4pIA0KYGBgDQoNCg0KYGBge3IgZWNobz1UUlVFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KZyA8LSBnZ3Bsb3QoYTIsIGFlcyh4PUFnZSwgeT1tZWFuX0xRLCBncm91cCA9IFNvY2lhbENsYXNzLCANCiAgICAgICAgICAgICAgICAgICAgY29sb3IgPSBTb2NpYWxDbGFzcykpDQpnICsgZ2VvbV9zbW9vdGgoKSArICBmYWNldF9ncmlkKFJhY2UgfiAuKSANCg0KYGBgDQoNClNVTU1BUlkgT0YgQUJPVkU6IFRoZXJlIGlzIHN0aWxsIGEgc3Ryb25nIHRyYW5zLWdlbmVyYXRpb25hbCBzaGlmdCB0byBsb3dlciBMUSBhbW9uZyBCbGFja3Mgd2hpY2ggaXMgbm90IGVudGlyZWx5IHJlYWxpc3RpYyBidXQgcG9vbGluZyBnZW5lcmF0aW9ucyAyLTQgYW5kIGxvb2tpbmcgYXQgcmFjZSB4IGNsYXNzLCB0aGUgcGF0dGVybnMgYXBwZWFyIHJlYXNvbmFibGUuLi5zb21lIHJhY2lhbCBkaXNwYXJpdHkgd2l0aGluIGNsYXNzIGJ1dCBsYXJnZXIgY2xhc3MgZGlzcGFyaXR5Lg0KDQoNCiMjIEJpcnRoIFJhdGVzICAgDQoNCkJhc2VkIG9uIHNreXBlIHdpdGggQWxsZW4gJiBOYXJqZXMgKDMvMzAvMTgpLCBJIGxlYXJuZWQgdGhhdCB0aGUgdmFyaWFibGUgJ0dlc3RhdGlvbmFsQWdlJyBpcyBjb2RlZCBsaWtlIHRoaXM6DQoNCiAgKyAgMzYgPSBQcmV0ZXJtDQogICsgIDM4ID0gVGVybQ0KICArICAxMDAgPSBOb3QgcHJlZ25hbnQgIA0KDQoNCg0KYGBge3IgZWNobz1UUlVFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KYTMgPC0gdGJsKGNvbiwgJ2FibV9tMycpICU+JQ0KICBmaWx0ZXIoR2VuZXJhdGlvbiAlaW4lIGMoMSwyLDMsNCw1KSkgJT4lDQogIG11dGF0ZShQcmVnbmFudCA9IGlmZWxzZShHZXN0YXRpb25hbEFnZSA9PSAxMDAsIDAsIDEpKSAlPiUNCiAgZ3JvdXBfYnkoQWdlLCBSYWNlLCBTb2NpYWxDbGFzcykgJT4lDQogIHN1bW1hcml6ZShDQlIgPSBtZWFuKFByZWduYW50KSkgJT4lDQogIGNvbGxlY3QoKQ0KDQojIENCUiBieSByYWNlDQpnIDwtIGdncGxvdChhMywgYWVzKHggPSBBZ2UsIHkgPSBDQlIsIGdyb3VwID0gUmFjZSwgY29sb3IgPSBSYWNlKSkNCmcgKyBnZW9tX3Ntb290aCgpICsgc2NhbGVfeF9jb250aW51b3VzKGxpbWl0cyA9IGMoMTMsNTApKSArIHNjYWxlX3lfY29udGludW91cyhsaW1pdHMgPSBjKDAsIC4xNSkpDQoNCiMgQ0JSIGJ5IGNsYXNzDQpnIDwtIGdncGxvdChhMywgYWVzKHggPSBBZ2UsIHkgPSBDQlIsIGdyb3VwID0gU29jaWFsQ2xhc3MsIGNvbG9yID0gU29jaWFsQ2xhc3MpKQ0KZyArIGdlb21fc21vb3RoKCkgKyBzY2FsZV94X2NvbnRpbnVvdXMobGltaXRzID0gYygxMyw1MCkpICsgc2NhbGVfeV9jb250aW51b3VzKGxpbWl0cyA9IGMoMCwgLjE1KSkNCmBgYA0KDQoNCmBgYHtyIGVjaG89VFJVRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCmEzYiA8LSB0YmwoY29uLCAnYWJtX20zJykgJT4lDQogIGZpbHRlcihHZW5lcmF0aW9uICVpbiUgYygxLDIsMyw0LDUpLA0KICAgICAgICAgUGFyaXR5ICVpbiUgYygwLDEsMiwzLDQpKSAlPiUNCiAgbXV0YXRlKFByZWduYW50ID0gaWZlbHNlKEdlc3RhdGlvbmFsQWdlID09IDEwMCwgMCwgMSkpICU+JQ0KICBncm91cF9ieShBZ2UsIFJhY2UsIFBhcml0eSkgJT4lDQogIHN1bW1hcml6ZShDQlIgPSBtZWFuKFByZWduYW50KSkgJT4lDQogIGNvbGxlY3QoKQ0KDQojIENCUiBieSBQYXJpdHkgKHN0cmF0aWZ5IG9uIFJhY2UpDQpnIDwtIGdncGxvdChhM2IsIGFlcyh4ID0gQWdlLCB5ID0gQ0JSLCBncm91cCA9IGZhY3RvcihQYXJpdHkpLCBjb2xvciA9IGZhY3RvcihQYXJpdHkpKSkNCmcgKyBnZW9tX3Ntb290aCgpICsgZmFjZXRfZ3JpZCguflJhY2UpICsNCiAgc2NhbGVfeF9jb250aW51b3VzKGxpbWl0cyA9IGMoMTMsNTApKSArIHNjYWxlX3lfY29udGludW91cyhsaW1pdHMgPSBjKDAsIC4xNSkpDQpgYGANCg0KDQoNCiMjIFByZWduYW5jeSBPdXRjb21lcyAgDQoNCk5vdyBJIGFtIGludGVyZXN0ZWQgaW4gYWdlLXNwZWNpZmljIGJpcnRoIHJhdGUgYW5kIHRoZSByaXNrIGZvciBQcmV0ZXJtIEJpcnRoIChQVEI7IDwzNyB3ZWVrcykuICANCg0KYGBge3IgZWNobz1UUlVFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KYTQgPC0gdGJsKGNvbiwgJ2FibV9tMycpICU+JQ0KICBmaWx0ZXIoR2VuZXJhdGlvbiAlaW4lIGMoMSwyLDMsNCw1KSwNCiAgICAgICAgIEdlc3RhdGlvbmFsQWdlICE9IDEwMCkgJT4lDQogIG11dGF0ZShQVEIgPSBpZmVsc2UoR2VzdGF0aW9uYWxBZ2UgPT0gMzYsIDEsIDApKSAlPiUNCiAgZ3JvdXBfYnkoUmFjZSwgU29jaWFsQ2xhc3MsIEFnZSkgJT4lDQogIHN1bW1hcmlzZShQVEJyID0gbWVhbihQVEIsIG5hLnJtID0gVCkpICU+JQ0KICBjb2xsZWN0KCkNCg0KZyA8LSBnZ3Bsb3QoYTQsIGFlcyh4ID0gQWdlLCB5ID0gUFRCciwgZ3JvdXAgPSBSYWNlLCBjb2xvciA9IFJhY2UpKQ0KZyArIGdlb21fc21vb3RoKCkNCg0KZyA8LSBnZ3Bsb3QoYTQsIGFlcyh4ID0gQWdlLCB5ID0gUFRCciwgZ3JvdXAgPSBTb2NpYWxDbGFzcywgY29sb3IgPSBTb2NpYWxDbGFzcykpDQpnICsgZ2VvbV9zbW9vdGgoKQ0KDQoNCmBgYA0KDQpTb21ldGhpbmcgaW4gY2FsY3VsYXRpb24gb2YgUHJldGVybSBCaXJ0aCBpcyBpbnZlcnRlZC4uLndoaXRlIHdvbWVuIGFuZCBoaWdoIFNFUyB3b21lbiBoYXZlIGhpZ2ggcmlzayBhbmQgQmxhY2sgYW5kIExvdyBTRVMgd29tZW4gaGF2ZSB6ZXJvIG9yIGxvdyByaXNrLg==