Use of data from IPUMS PMA is subject to conditions including that users should cite the data appropriately. Use command `ipums_conditions()` for more details.
#read in spatial datalibrary(sf)
Linking to GEOS 3.13.1, GDAL 3.10.2, PROJ 9.5.1; sf_use_s2() is TRUE
UG_PMA_GPS<-read_sf("C:/Users/Rebecca/Downloads/PMA_UG_GPS_v2_06July2022/UGANDA/PMA_UG_GPS_v2_06July2022.csv")#read in boundary dataUG_boundary<-read_sf("C:/Users/Rebecca/Downloads/geoug/geoug.shp")UG_boundary_4<-read_sf("C:/Users/Rebecca/Downloads/geouggen/geouggen.shp")UG_sub_boundary<-read_sf("C:/Users/Rebecca/Downloads/uganda-adm-boundaries/UGANDA BOUNDARIES SHAPEFILES AS OF 17 08 2018/COUNTIES_2018_UTM_36N.shp")pmaug2022<-pmauglong#%>%#filter(YEAR==2021)UG_PMA_GPS_2022<-UG_PMA_GPS#%>%#filter(PMAYEAR==2021)UG_PMA_GPS_2022<-UG_PMA_GPS%>%rename('EAID'='EA_ID')pmaug2022wgps<-merge(pmaug2022, UG_PMA_GPS_2022, by=c("EAID"))
#marital status pmaug2022wgps<-pmaug2022wgps%>%mutate(MARSTAT=as.factor(MARSTAT))%>%mutate(maritalstatus=recode(MARSTAT, '10'="never married" ,'20'="married or living together", '21'="currently married", '22'="currently living with partner", '31'="formerly in union",'32'='widow or widower',.default =NA_character_))tabyl(pmaug2022wgps, maritalstatus)
maritalstatus n percent valid_percent
never married 3506 0.2472845253 0.24735431
currently married 3416 0.2409366624 0.24100466
currently living with partner 4980 0.3512484130 0.35134754
formerly in union 1947 0.1373254338 0.13736419
widow or widower 325 0.0229228382 0.02292931
<NA> 4 0.0002821272 NA
#age-grouppmaug2022wgps<-pmaug2022wgps %>%mutate(agegroup =case_when( AGE >=15& AGE <=19~"15-19", AGE >=20& AGE <=24~"20-24", AGE >=25& AGE <=29~"25-29", AGE >=30& AGE <=34~"30-34", AGE >=35& AGE <=39~"35-39", AGE >=40& AGE <=44~"40-44", AGE >=45& AGE <=49~"45-49" ))pmaug2022wgps$age_z_score <-scale(pmaug2022wgps$AGE)pmaug2022wgps<-pmaug2022wgps%>%filter(BIRTHEVENT<90)pmaug2022wgps<-pmaug2022wgps %>%mutate(AGE=as.numeric(AGE))pmaug2022wgps<-pmaug2022wgps %>%mutate(URBAN=as.factor(URBAN))#contraceptive usepmaug2022wgps<-pmaug2022wgps%>%mutate(MCP=as.factor(MCP))%>%mutate(usingmoderncon=recode(MCP, '1'="yes" ,'0'="no",.default =NA_character_))tabyl(pmaug2022wgps, usingmoderncon)
usingmoderncon n percent valid_percent
no 9304 0.65645947 0.6662847
yes 4660 0.32879419 0.3337153
<NA> 209 0.01474635 NA
educationlevel n percent valid_percent
none 842 0.0594087349 0.05941712
primary/middle school 7902 0.5575389826 0.55761767
secondary/post-primary 4268 0.3011359627 0.30117846
tertiary/ post-secondary 1159 0.0817752064 0.08178675
<NA> 2 0.0001411134 NA
#collapse marital status variablepmaug2022wgps<-pmaug2022wgps%>%mutate(maritalcombined=recode(maritalstatus, 'formerly in union'='not in a union' ,'never married'="not in a union", 'widow or widower'="not in a union", 'currently married'="in a union", 'currently living with partner'="in a union"))#make index: exercise of choicelibrary(janitor)pmaug2022wgps <- pmaug2022wgps %>%mutate(startstop =case_when( STARTKIDDEC ==1| PTRDISCKIDSTOPWILL==1~'1', STARTKIDDEC ==2| PTRDISCKIDSTOPWILL==2~'2', STARTKIDDEC ==3| PTRDISCKIDSTOPWILL==3~'3', STARTKIDDEC ==4| PTRDISCKIDSTOPWILL==4~'4', STARTKIDDEC ==5| PTRDISCKIDSTOPWILL==5~'5' ))tabyl(pmaug2022wgps$startstop)
4. Create a new PCA-derived measure separately for those in urban and rural areas; show biplots
#### 4. Wealth index following Rutstein, "Steps to constructing the new DHS Wealth Index" ##### Replaces Section 4 of "Becca Ch. 3 analysis 9.22.26" (from "#floor/wall/roof materials"# down to the biplots). Paste it in the same place.## Step 3 indicators: one 0/1 dummy per category (missing -> 0 on all dummies),# yes/no items (missing -> 0), livestock counts continuous (none -> 0)# Step 4a drop zero-variance indicators# Step 4b COMMON PCA on all households (indicators that mean the same thing in urban and rural areas)# Step 4c URBAN PCA on urban households# Step 4d RURAL PCA on rural households# All PCAs: correlation matrix, 1 component, mean substitution, unweighted,# score = standardized PC1 (same as SPSS regression-method factor score)# Step 5 regress COM on URB (urban) and COM on RUR (rural); combined score = a + b * area score# Step 6 quintile cutpoints from the distribution weighted by de jure members x household weight# Step 7 checks# Each PMA round (YEAR) is treated as its own survey, as DHS does.library(dplyr)library(tidyr)library(purrr)library(haven)#---- settings: check these against your IPUMS PMA codebook ----hh_weight_var <-"HQWEIGHT"# household weighthh_members_var <-NA# number of de jure household members (set to its name if in the extract).# If NA, quintiles are weighted by the household weight only (see Step 6).sleeprooms_var <-NA# number of rooms used for sleeping (for members per sleeping room); NA = skiphh_result_var <-NA# household questionnaire result; if set, keeps completed interviews (== 1)# Other Rutstein items, used only if they are in your extract (leave empty if not):extra_yesno <-character(0) # yes/no items, e.g. bank account, toilet sharedextra_categ <-character(0) # categorical items, e.g. cooking fuelextra_contin <-character(0) # continuous items, e.g. agricultural land area# Missing / DK / NIU codes (not given a dummy). If 96 is "Other" in your codebook,# remove it here so "other" gets its own dummy, as Rutstein specifies.water_missing <-c(96, 97, 98, 99)toilet_missing <-c(95, 96, 97, 98, 99)#---- household file ----# Built from pmaug2022 (before the BIRTHEVENT < 90 filter and the female-level# filters), so the PCA uses every household in the extract, not only households# of women in the analytic sample. It still includes only households with a# female record. For all interviewed households, re-extract with household# members included and set hh_result_var.hh <- pmaug2022 %>%zap_labels() %>%distinct(HHID, YEAR, .keep_all =TRUE) %>%filter(as.character(URBAN) %in%c("0", "1")) %>%mutate(urban =as.integer(as.character(URBAN)))if (!is.na(hh_result_var)) hh <-filter(hh, .data[[hh_result_var]] ==1)#---- Step 3: indicator construction ----# 0/1 dummy for every observed category; households with a missing category get 0 on alladd_dummies <-function(data, cat_var, prefix) { levs <-sort(unique(na.omit(data[[cat_var]])))for (l in levs) { data[[paste0(prefix, "_", l)]] <-as.integer(!is.na(data[[cat_var]]) & data[[cat_var]] == l) } data}# floor/wall/roof: natural materials (1xx) combined into one category, all other codes kept separatematerial_cat <-function(x) {case_when(is.na(x) | x >=900~NA_character_, x %/%100==1~"natural",TRUE~as.character(x) )}hh <- hh %>%mutate(cat_floor =material_cat(FLOOR),cat_wall =material_cat(WALLS),cat_roof =material_cat(ROOF),# water and toilet: one category per original code (Rutstein 3b.2a/b).# If surface-water sources have separate codes, combine them here.cat_water =if_else(WATERDRINKMAIN %in% water_missing, NA_character_, as.character(WATERDRINKMAIN)),cat_toilet =if_else(TOILETTYPE %in% toilet_missing, NA_character_, as.character(TOILETTYPE)) )cat_specs <-c(cat_floor ="floor", cat_wall ="wall", cat_roof ="roof", cat_water ="water", cat_toilet ="toilet")for (v innames(cat_specs)) hh <-add_dummies(hh, v, cat_specs[[v]])for (v in extra_categ) if (v %in%names(hh)) hh <-add_dummies(hh, v, tolower(v))# yes/no items: 1 = yes, 0 = no / missing / DK / NIUyesno_raw <-c(electric ="ELECTRC", radio ="RADIO", tv ="TV", mobphone ="MOBPHONE",hhphone ="HHPHONE", fridge ="FRIDGE", clock ="CLOCK", cassette ="CASSETTE",bed ="BED", cabinet ="CABINET", chair ="CHAIR", sofa ="SOFA", table_own ="TABLE",bike ="BIKE", motorcycle ="MOTORCYCL", car ="CAR", drawncart ="DRAWNCART")extra_yesno <- extra_yesno[extra_yesno %in%names(hh)]yesno_raw <-c(yesno_raw[yesno_raw %in%names(hh)], setNames(extra_yesno, tolower(extra_yesno)))for (nm innames(yesno_raw)) { hh[[nm]] <-as.integer(!is.na(hh[[yesno_raw[[nm]]]]) & hh[[yesno_raw[[nm]]]] ==1)}# livestock: continuous counts, 0 if the household owns no animals, missing/DK -> NA (mean-substituted later)livestock_vars <-intersect(c("CHICKENNUM", "SHEEPNUM", "GOATNUM", "PIGNUM", "HORSENUM","EXOCATTLENUM", "LOCALCATTLENUM", "OTHERLIVESTOCKNUM"), names(hh))hh <- hh %>%mutate(across(all_of(livestock_vars), ~if_else(.x >=99990, NA_real_, as.numeric(.x)))) %>%mutate(across(all_of(livestock_vars), ~if_else(!is.na(LIVESTOCKOWN) & LIVESTOCKOWN ==0, 0, .x)))# other continuous itemsextra_contin <- extra_contin[extra_contin %in%names(hh)]# members per sleeping room (continuous; 0 rooms -> 1; missing -> NA)if (!is.na(hh_members_var) &&!is.na(sleeprooms_var)) { hh <- hh %>%mutate(rooms =if_else(.data[[sleeprooms_var]] >=90, NA_real_, as.numeric(.data[[sleeprooms_var]])),rooms =if_else(rooms ==0, 1, rooms),memsleep =as.numeric(.data[[hh_members_var]]) / rooms)}dummy_vars <-grep(paste0("^(", paste(c(unname(cat_specs), tolower(extra_categ)), collapse ="|"), ")_"),names(hh), value =TRUE)indicator_vars <-c(dummy_vars, names(yesno_raw), livestock_vars, extra_contin,if ("memsleep"%in%names(hh)) "memsleep")# Step 4b: items left out of the COMMON PCA because they signal different# levels of wealth in urban and rural areas (Rutstein's example is chickens).# This list is a judgment call; edit it as needed.common_exclude <-c(livestock_vars, "drawncart")#---- Step 4: PCAs ----# drop columns with no variationdrop_zero_var <-function(data, vars) { v <-sapply(data[vars], function(x) var(x, na.rm =TRUE)) vars[!is.na(v) & v >0]}# unweighted PCA on the correlation matrix, first component, mean substitutionrun_pca <-function(data, vars, label, orient_var ="electric") { vars <-drop_zero_var(data, vars) mat <-as.matrix(data[vars])for (j inseq_len(ncol(mat))) mat[is.na(mat[, j]), j] <-mean(mat[, j], na.rm =TRUE) pca <-prcomp(mat, center =TRUE, scale. =TRUE) score <-as.numeric(scale(pca$x[, 1])) # = regression-method factor score for one component# orient so higher = wealthier flip <-cor(score, data[[orient_var]]) <0if (isTRUE(flip)) { score <--score pca$x[, 1] <--pca$x[, 1] pca$rotation[, 1] <--pca$rotation[, 1] }message(label, ": ", length(vars), " indicators, PC1 explains ",round(100*summary(pca)$importance[2, 1], 1), "%")list(score = score, loadings = pca$rotation[, 1], vars = vars, pca = pca)}# weighted quintiles; cutpoint = last score whose cumulative weighted share is <= 20/40/60/80%weighted_quintile <-function(score, w) { o <-order(score) s <- score[o] cw <-cumsum(w[o]) /sum(w[o]) top <-!duplicated(s, fromLast =TRUE) # cumulative share at each distinct score value vals <- s[top]; cum <- cw[top] cuts <-sapply(c(.2, .4, .6, .8), function(p) if (any(cum <= p)) max(vals[cum <= p]) else vals[1])1L +rowSums(outer(score, cuts, ">")) # <= cut1 -> 1, (cut1, cut2] -> 2, ...}build_wealth_year <-function(d) { yr <-unique(d$YEAR)# 4a vars_all <-drop_zero_var(d, indicator_vars)# 4b common com <-run_pca(d, setdiff(vars_all, common_exclude), paste(yr, "COMMON")) d$com1 <- com$score# 4c / 4d urban and rural u <- d$urban ==1 urb <-run_pca(d[u, ], vars_all, paste(yr, "URBAN")) rur <-run_pca(d[!u, ], vars_all, paste(yr, "RURAL")) d$urb1 <-NA_real_; d$urb1[u] <- urb$score d$rur1 <-NA_real_; d$rur1[!u] <- rur$score# Step 5: regress COM on area score, then combine fit_u <-lm(com1 ~ urb1, data = d[u, ]) fit_r <-lm(com1 ~ rur1, data = d[!u, ]) d$combscor <-if_else(u, coef(fit_u)[1] +coef(fit_u)[2] * d$urb1,coef(fit_r)[1] +coef(fit_r)[2] * d$rur1) step5 <-tibble(YEAR = yr, area =c("urban", "rural"),constant =c(coef(fit_u)[1], coef(fit_r)[1]),coefficient =c(coef(fit_u)[2], coef(fit_r)[2]),r2 =c(summary(fit_u)$r.squared, summary(fit_r)$r.squared),p_coef =c(summary(fit_u)$coefficients[2, 4], summary(fit_r)$coefficients[2, 4]))# Step 6: household-member weight w_hh <-as.numeric(d[[hh_weight_var]]) d$hhmemwt <-if (!is.na(hh_members_var)) w_hh *as.numeric(d[[hh_members_var]]) /1e6else w_hh d$hhmemwt[is.na(d$hhmemwt)] <-0 d$ncombsco <-weighted_quintile(d$combscor, d$hhmemwt) d$nurb1 <-NA_integer_; d$nurb1[u] <-weighted_quintile(d$urb1[u], d$hhmemwt[u]) d$nrur1 <-NA_integer_; d$nrur1[!u] <-weighted_quintile(d$rur1[!u], d$hhmemwt[!u]) loadings <-list(com = com$loadings, urb = urb$loadings, rur = rur$loadings) %>%imap(~tibble(indicator =names(.x), !!.y :=unname(.x))) %>%reduce(full_join, by ="indicator") %>%mutate(YEAR = yr, .before =1) %>%arrange(desc(com))list(data = d, step5 = step5, loadings = loadings,pca =list(com = com$pca, urb = urb$pca, rur = rur$pca))}if (is.na(hh_members_var)) {message("hh_members_var not set: quintiles weighted by household weight, not de jure members x weight (Rutstein Step 6a).")}
hh_members_var not set: quintiles weighted by household weight, not de jure members x weight (Rutstein Step 6a).
wealth_hh <-map_dfr(wealth_by_year, "data")step5_regressions <-map_dfr(wealth_by_year, "step5")loadings_rutstein <-map_dfr(wealth_by_year, "loadings")step5_regressions # coefficients should be positive and highly significant
#---- Step 7: checks ----# 7a: each quintile should hold ~20% of the population (weighted by hhmemwt)wealth_hh %>%group_by(YEAR, ncombsco) %>%summarise(w =sum(hhmemwt), .groups ="drop_last") %>%mutate(pct =round(100* w /sum(w), 1)) %>%select(-w) %>%pivot_wider(names_from = ncombsco, values_from = pct)
The following objects are masked from 'package:tidyr':
expand, pack, unpack
Registered S3 method overwritten by 'lme4':
method from
na.action.merMod car
# relationship with urban status and summary score: controlling for year and a random effect for individual modelbiv <-lmer(summary_score_av ~factor(URBAN)+factor(YEAR)+ (1|FQINSTID), data = individualandcluster)modelsummary( modelbiv,slope ="b",stars =TRUE,title ="Bivariate relationship between urban/ rural status and pregnancy decision-makiong",gof_map =list(list(raw ="nobs", clean ="N", fmt =0)))
Bivariate relationship between urban/ rural status and pregnancy decision-makiong
(1)
+ p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001
(Intercept)
3.879***
(0.014)
factor(URBAN)1
0.070***
(0.017)
factor(YEAR)2021
0.061***
(0.016)
factor(YEAR)2022
0.015
(0.016)
SD (Intercept FQINSTID)
0.436
SD (Observations)
0.659
N
12150
#add a random effect for clustermodelbivwithcluster <-lmer(summary_score_av ~factor(URBAN)+factor(YEAR)+ (1|EAID)+ (1|FQINSTID), data = individualandcluster)modelsummary( modelbivwithcluster,slope ="b",stars =TRUE,title ="Relationship between urban/ rural status and pregnancy decision-making",gof_map =list(list(raw ="nobs", clean ="N", fmt =0)))
Relationship between urban/ rural status and pregnancy decision-making
(1)
+ p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001
(Intercept)
3.896***
(0.038)
factor(URBAN)1
0.089
(0.060)
factor(YEAR)2021
0.040**
(0.015)
factor(YEAR)2022
-0.003
(0.016)
SD (Intercept FQINSTID)
0.287
SD (Intercept EAID)
0.331
SD (Observations)
0.658
N
12150
Note: adding a random effect for cluster renders urban as insignificant when controlling for year in addition to a random effect for individual.
However, if we build a model that only includes a random effect for individual, not for cluster, urban has a significant and negative on pregnancy decision-making, so the suppression by wealth is happening here.
#full model without the cluster random effect library(lme4)modelmulti <-lmer(summary_score_av ~BIRTHEVENT + educationlevel + agegroup+ maritalcombined+factor(MCP)+factor(URBAN)+factor(WEALTHQ)+factor(YEAR)+ (1|FQINSTID), data = individualandcluster)modelsummary( modelmulti,slope ="b",stars =TRUE,title ="Relationship between urban/ rural status and pregnancy decision-making, individual random effect only",gof_map =list(list(raw ="nobs", clean ="N", fmt =0)))
Relationship between urban/ rural status and pregnancy decision-making, individual random effect only
(1)
+ p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001
(Intercept)
3.708***
(0.038)
BIRTHEVENT
-0.014**
(0.005)
educationlevelprimary/middle school
-0.007
(0.033)
educationlevelsecondary/post-primary
0.210***
(0.036)
educationleveltertiary/ post-secondary
0.263***
(0.044)
agegroup20-24
-0.017
(0.024)
agegroup25-29
0.005
(0.028)
agegroup30-34
0.047
(0.033)
agegroup35-39
-0.001
(0.038)
agegroup40-44
-0.032
(0.043)
agegroup45-49
-0.029
(0.046)
maritalcombinedin a union
-0.052**
(0.018)
factor(MCP)1
0.105***
(0.016)
factor(URBAN)1
-0.096***
(0.018)
factor(WEALTHQ)2
0.136***
(0.023)
factor(WEALTHQ)3
0.222***
(0.024)
factor(WEALTHQ)4
0.242***
(0.026)
factor(WEALTHQ)5
0.299***
(0.028)
factor(YEAR)2021
0.056***
(0.016)
factor(YEAR)2022
0.026
(0.016)
SD (Intercept FQINSTID)
0.392
SD (Observations)
0.658
N
12150
#full model with the cluster random effectmodelmulti_EAID <-lmer(summary_score_av ~ BIRTHEVENT + educationlevel + agegroup + maritalcombined +factor(MCP) +factor(URBAN) +factor(WEALTHQ) +factor(YEAR) + (1| FQINSTID) + (1| EAID),data = individualandcluster)modelsummary( modelmulti_EAID,stars =TRUE,title ="Relationship between urban/rural status and pregnancy decision-making (IPUMS wealth) with random effect for EAID",gof_map =list(list(raw ="nobs", clean ="N", fmt =0)))
Relationship between urban/rural status and pregnancy decision-making (IPUMS wealth) with random effect for EAID
(1)
+ p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001
(Intercept)
3.733***
(0.051)
BIRTHEVENT
-0.018***
(0.005)
educationlevelprimary/middle school
0.078*
(0.033)
educationlevelsecondary/post-primary
0.269***
(0.036)
educationleveltertiary/ post-secondary
0.338***
(0.043)
agegroup20-24
-0.016
(0.022)
agegroup25-29
0.011
(0.026)
agegroup30-34
0.057+
(0.030)
agegroup35-39
0.026
(0.034)
agegroup40-44
-0.010
(0.039)
agegroup45-49
-0.004
(0.042)
maritalcombinedin a union
-0.037*
(0.017)
factor(MCP)1
0.109***
(0.015)
factor(URBAN)1
-0.042
(0.056)
factor(WEALTHQ)2
0.051*
(0.026)
factor(WEALTHQ)3
0.098***
(0.027)
factor(WEALTHQ)4
0.114***
(0.029)
factor(WEALTHQ)5
0.145***
(0.032)
factor(YEAR)2021
0.037*
(0.015)
factor(YEAR)2022
0.004
(0.016)
SD (Intercept FQINSTID)
0.254
SD (Intercept EAID)
0.304
SD (Observations)
0.658
N
12150
Now if we run this with the PCA-derived measure of wealth, urban is not significant.
##run this with the Rutstein combined wealth indexindividualandcluster <- individualandcluster %>%left_join(wealth_rutstein %>%select(HHID, YEAR, combscor, ncombsco),by =c("HHID", "YEAR"))modelmulti_pca <-lmer(summary_score_av ~ BIRTHEVENT + educationlevel + agegroup + maritalcombined +factor(MCP) +factor(URBAN) + ncombsco +factor(YEAR) + (1| FQINSTID),data = individualandcluster)modelsummary( modelmulti_pca,stars =TRUE,title ="Relationship between urban/rural status and pregnancy decision-making (PCA-derived wealth)",gof_map =list(list(raw ="nobs", clean ="N", fmt =0)))
Relationship between urban/rural status and pregnancy decision-making (PCA-derived wealth)
(1)
+ p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001
(Intercept)
3.699***
(0.038)
BIRTHEVENT
-0.015**
(0.005)
educationlevelprimary/middle school
-0.010
(0.033)
educationlevelsecondary/post-primary
0.210***
(0.036)
educationleveltertiary/ post-secondary
0.262***
(0.044)
agegroup20-24
-0.013
(0.024)
agegroup25-29
0.008
(0.028)
agegroup30-34
0.051
(0.033)
agegroup35-39
0.003
(0.038)
agegroup40-44
-0.028
(0.043)
agegroup45-49
-0.028
(0.046)
maritalcombinedin a union
-0.053**
(0.018)
factor(MCP)1
0.105***
(0.016)
factor(URBAN)1
-0.088***
(0.019)
ncombscoSecond
0.161***
(0.023)
ncombscoMiddle
0.237***
(0.024)
ncombscoFourth
0.234***
(0.025)
ncombscoHighest
0.299***
(0.028)
factor(YEAR)2021
0.056***
(0.016)
factor(YEAR)2022
0.028+
(0.016)
SD (Intercept FQINSTID)
0.393
SD (Observations)
0.658
N
12150
Now when we add a random effect for cluster, urban remains non-significant.
modelmulti_pca_EAID <-lmer(summary_score_av ~ BIRTHEVENT + educationlevel + agegroup + maritalcombined +factor(MCP) +factor(URBAN) + ncombsco +factor(YEAR) + (1| FQINSTID) + (1| EAID),data = individualandcluster)modelsummary( modelmulti_pca_EAID,stars =TRUE,title ="Relationship between urban/rural status and pregnancy decision-making (PCA-derived wealth) with random effect for EAID",gof_map =list(list(raw ="nobs", clean ="N", fmt =0)))
Relationship between urban/rural status and pregnancy decision-making (PCA-derived wealth) with random effect for EAID
(1)
+ p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001
(Intercept)
3.717***
(0.051)
BIRTHEVENT
-0.019***
(0.005)
educationlevelprimary/middle school
0.078*
(0.033)
educationlevelsecondary/post-primary
0.270***
(0.036)
educationleveltertiary/ post-secondary
0.339***
(0.043)
agegroup20-24
-0.015
(0.022)
agegroup25-29
0.011
(0.026)
agegroup30-34
0.057+
(0.030)
agegroup35-39
0.027
(0.034)
agegroup40-44
-0.008
(0.039)
agegroup45-49
-0.004
(0.042)
maritalcombinedin a union
-0.037*
(0.017)
factor(MCP)1
0.109***
(0.015)
factor(URBAN)1
-0.036
(0.056)
ncombscoSecond
0.088***
(0.024)
ncombscoMiddle
0.120***
(0.026)
ncombscoFourth
0.113***
(0.028)
ncombscoHighest
0.153***
(0.031)
factor(YEAR)2021
0.037*
(0.015)
factor(YEAR)2022
0.005
(0.016)
SD (Intercept FQINSTID)
0.255
SD (Intercept EAID)
0.303
SD (Observations)
0.658
N
12150
7. How much between-EA variance is explained urban status or wealth?