The DHS Program User Forum
Discussions regarding The DHS Program data and results
Home » Topics » Domestic Violence » Comparison of surveys- Mozambique (comparing sexual violence surveys 2011, 2015 and 2022 Mozambique)
Comparison of surveys- Mozambique [message #31633] Tue, 02 December 2025 08:13
isrubio is currently offline  isrubio
Messages: 1
Registered: December 2025
Member
Hi,

Could you please help me? I am comparing different topics on violence against women using the R-Codes from Github DHS-Indicators and I am comparing values for the Mozambique Surveys 2011, 2015 and 2022.

Is it correct to compare these values and interpret the results as trends? For some of the results I am surprise about the changes over time.
Did the questions in the surveys remain comparable?

Thank you very much in advance for your help.

Kind reagards,
Inge


Here is an example:

# //Ever
dv <- dv %>%
mutate(dv_sex =
case_when(
d105h>0 | d105i>0 | d105k>0 ~ 1, # violence by current partner
d130b>0 ~ 1, # violence by former partner
d124==1 ~ 1, # violence by anyone other than partner
d125==1 ~ 1, # forced to perform unwanted acts
v044==1 ~ 0 )) %>%
set_value_labels(dv_sex = c("Yes" = 1, "No"=0)) %>%
set_variable_labels(dv_sex = "Ever experienced sexual violence")
# Keep only years with DV module AND women selected for DV (v044 == 1)
dat_dv <- dv %>%
filter(
year %in% c(2011, 2015, 2022),
v044 == 1, # selected for DV module
!is.na(d005) # ensure weight exists
) %>%
mutate( wt = d005 / 1e6, # scale DHS weights
one = 1)

any(is.na(dat_dv$wt)) # should be FALSE


# Survey design on the DV dataset
dhs_design<- svydesign(id = dat_dv$v021,
strata = dat_dv$v022,
weights = dat_dv$wt, data = dat_dv, nest = T)
options(survey.lonely.psu = "adjust")

# Restrict to: selected for DV module
dhs_design_mod <- subset(dhs_design, v044 == 1)

# 1. Denominator: total eligible women per year (weighted)
tot_dv_mod <- svyby(
~one,
~year,
dhs_design_mod,
svytotal,
na.rm = TRUE) %>%
rename(total_year = one, se_t = se)
tot_dv_mod
sex_ever_mod <- svyby(
~one,
~dv_sex + year,
dhs_design_mod,
svytotal,
na.rm = TRUE)

sex_ever_tab_mod <- sex_ever_mod %>%
left_join(tot_dv_mod, by = "year") %>%
mutate(
Variable = "Ever experienced sexual violence",
Category = ifelse(dv_sex == 1, "Yes", "No"),
N = round(one),
Year = year,
Weighted_percentage = round((one / total_year) * 100, 2),
lower_CI = round(((one - 1.96 * se) / total_year) * 100, 2),
upper_CI = round(((one + 1.96 * se) / total_year) * 100, 2)) %>%
select(Year, Variable, Category, N, Weighted_percentage, lower_CI, upper_CI)
sex_ever_tab_modsex_ever_tab_mod
Year Variable Category N Weighted_percentage lower_CI upper_CI
1 2011 Ever experienced sexual violence No 6274 91.80 84.64 98.96
2 2011 Ever experienced sexual violence Yes 561 8.20 7.04 9.36
3 2015 Ever experienced sexual violence No 3236 93.75 81.72 105.77
4 2015 Ever experienced sexual violence Yes 216 6.25 4.96 7.54
5 2022 Ever experienced sexual violence No 3564 74.04 68.16 79.93
6 2022 Ever experienced sexual violence Yes 1249 25.96 23.03 28.89
>
Previous Topic: Identifying nuclear/joint family in the Couple's recode file
Next Topic: Violence questionnaire
Goto Forum:
  


Current Time: Wed Dec 3 08:27:55 Coordinated Universal Time 2025