Report for Confirmatory Mapping of Lymphatic Filarissis

This is a R Markdown report for the Confirmatory Mapping of Lymphatic Filariasis in Lagos, Southwestern Nigeria.

This mapping adopted the laboratoty procedures recommended by the World Health Organization.

Findings have been used to adjust preventive chemotheraphy decisions in Lagos

This reports have been submitted to International Journal of Infectious Diseases, and have passed the second round of review at the

INTRODUCTION

We conducted a confirmatory mapping survey to reassess the endemicity of lymphatic filariasis in Lagos State, Nigeria. Finger-prick blood samples were collected from 2787 children aged 10-14years in 6 endemic LGAs across 153 targeted schools. Circulating filarial antigen (CFA) levels were measured using the Filaria Test Strip (FTS), and LGAs were classified as endemic if there were up to three positive cases (d=3). The findings from this study are expected to shape the need to reintroduce mass treatment campaigns of ivermectin medicines and optimize delivery of bed-nets

Data Management Procedures

mrc2 <- read_xls("D:/Manuscript/lf lagos/submission/R1/S1data.xls", 
                 sheet =  "data", col_types = "text")

Summary of entire dataset before cleaning

I ran a quick view of the entire dataset, to identify the variables I needed are included in the dataset, and also their current data structure and any missing value (NA)

My focus is on the following variables consent, lga, test_s, prev, itn, sitn, res, age, los, ele

View(mrc2)

Cleaning the imported dataset

Here, I cleaned the imported dataset, setting the categories (factors/numeric, and creating appropriate levels and labels

Summary of entire dataset

I ran a quick view of the entire dataset, ensuring the levels are appropriately set.

summary(mrc2)
##     start               end                      lga            lgac    
##  Length:2900        Length:2900        Eti Osa     :374   EtiOsa  :374  
##  Class :character   Class :character   Ikorodu     :478   Ikorodu :478  
##  Mode  :character   Mode  :character   Kosofe      :624   Kosofe  :624  
##                                        Mushin      :517   Mushin  :517  
##                                        Oshodi isolo:505   Oshodi  :505  
##                                        Surulere    :402   Surulere:402  
##                                                                         
##         com           sch                 y                  x            
##  Itire    : 123   Length:2900        Length:2900        Length:2900       
##  Ikoyi    :  82   Class :character   Class :character   Class :character  
##  Isolo    :  80   Mode  :character   Mode  :character   Mode  :character  
##  Ilasamaja:  78                                                           
##  Ikosi    :  75                                                           
##  Ilupeju  :  73                                                           
##  (Other)  :2389                                                           
##     sdate             FTS_LOT            FTS_EXP               age       
##  Length:2900        Length:2900        Length:2900        Min.   : 7.00  
##  Class :character   Class :character   Class :character   1st Qu.:10.00  
##  Mode  :character   Mode  :character   Mode  :character   Median :11.00  
##                                                           Mean   :11.59  
##                                                           3rd Qu.:13.00  
##                                                           Max.   :16.00  
##                                                                          
##  consent        sex           test_s           prev       itn         sitn     
##  No :  24   Male  :1299   invalid: 113   Negative:2732   No :1836   No  : 475  
##  Yes:2876   Female:1601   valid  :2787   Positive:  55   Yes:1064   Yes : 589  
##                                          NA's    : 113              NA's:1836  
##                                                                                
##                                                                                
##                                                                                
##                                                                                
##   res            los                    ivm         ele      
##  No :   9   Min.   : 1.000   Never        :1494   0   : 741  
##  Yes:2891   1st Qu.: 2.000   last 6 months:  40   1   :  80  
##             Median : 5.000   last 1 year  :   8   NA's:2079  
##             Mean   : 5.936   over a year  :  17              
##             3rd Qu.:10.000   NA's         :1341              
##             Max.   :16.000                                   
##             NA's   :9

Creating new columns

I created two new columns to group “los”; length of residency and “age” into categories.

I further set them as factors and assigned clear levels and labels

mrc2<-mrc2 %>% mutate(cat_los=case_when(
  los %in% 1: 5 ~ "1",
  los %in% 6: 10 ~ "2",
  los %in% 11: 16 ~ "3",
 ))

mrc2<-mrc2 %>% mutate(cat_age=case_when(
  age %in% 7: 10 ~ "1",
  age %in% 11: 13 ~ "2",
  age %in% 14: 16 ~ "3",
))

mrc2$cat_age = factor(mrc2$cat_age,levels=c("1","2","3"),labels = c("7-10","11-13","14-16"))
mrc2$cat_los = factor(mrc2$cat_los,levels=c("1","2","3"),labels = c("1-5","6-10","11-16"))

Checking out the distibution of age

age <- summary(mrc2$cat_age)
age
##  7-10 11-13 14-16 
##   835  1729   336
plot(mrc2$cat_age)

checking out the distibution of length of residency

los <- summary(mrc2$cat_los)

los
##   1-5  6-10 11-16  NA's 
##  1557   861   473     9
plot(mrc2$cat_los)

Creating subsets for the LGAs (also known as districts)

note: i wouldnt be needing the subsets in this report.

#separating the LGA, so i can perform separate analysis for them 

EO <- mrc2[mrc2$lgac == "EtiOsa", ]
Ik <- mrc2[mrc2$lgac == "Ikorodu", ]
KO <- mrc2[mrc2$lgac == "Kosofe", ]
MU <- mrc2[mrc2$lgac == "Mushin", ]
OS <- mrc2[mrc2$lgac == "Oshodi", ]
SU <- mrc2[mrc2$lgac == "Surulere", ]

METHODOLOGY

All data (n=2900) were downloaded in Microsoft Excel and imported into R Studio (version 4.3.2) for analysis. Data were filtered to remove any records of participants who did not consent to participate in the study (n=24), and those whose test results were invalid (n=113). For parasitological data, results were summarized by LGA, with classification as non-endemic if the number of positive cases was less than or equal to the critical cutoff (3), indicating that MDA was not required in such LGA. Conversely, if the number of positive cases exceeded 3, the LGA was deemed endemic, warranting continued MDA implementation. Descriptive statistics were used to summarize all other variables, and associations were examined using chi-square tests, with a focus on demographic data, ownership and utilization of ITNs, and length of residency within communities. Sub-analyses were conducted on positive cases to identify associated demographic characteristics. All associations were assessed at a 95% significance level. The distribution of positive cases by age and gender were mapped using ggplot2 and alluvial packages, while the maps of the study area were plotted using ArcGIS v10.8 software

knitr::include_graphics("D:/Manuscript/lf lagos/submission/R1/Fig1.png")

RESULTS

Sex and age distribution of participants

A total of 2,787 children aged 7-16years from 153 schools across 6 implementation units (herein referred to as LGAs) participated in this study. There were significantly more female participants across the LGAs to males (59.8% vs 40.2%, p= 0.015). Similarly, for age, there were significant differences across the LGAs (p=0.000), with more participants recruited within the lower age group (7-10years).

options(na.action = "na.omit")
theme_gtsummary_journal("jama")
Newtable1 <-
  mrc2 %>% filter(!is.na(lgac)) %>% 
  dplyr::select(lgac,sex,cat_age) %>%
  tbl_summary(
    by = lgac,
    label = NULL,
    percent = "column",
    type = list(c() ~ "continuous",
                all_dichotomous() ~ "categorical"),
    statistic = list(all_continuous() ~ "{mean} ({sd})",
                     all_categorical() ~ "{n} ({p}%)"),
    digits = list(all_categorical()~c(0,1))
  )%>%
  add_ci(
    method = all_dichotomous() ~ "exact", 
    conf.level = 0.95,
  ) %>%
 modify_fmt_fun(
    estimate = all_categorical() ~ style_number(digits = 1),
    conf.low = all_categorical() ~ style_number(digits = 1),
    conf.high = all_categorical() ~ style_number(digits = 1)
    ) %>% 
  add_p(test =
          list(all_continuous() ~ "aov", all_categorical() ~ "chisq.test"), 
        pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% 
  bold_p() %>% 
  bold_labels() %>% 
  add_overall(col_label= "**Responses**, N = {N}") %>% 
  modify_footnote(
    all_stat_cols() ~ "Mean (SD) or Frequency (%)") 

Newtable1
Characteristic Responses, N = 27871 EtiOsa
N = 346
1
95% CI Ikorodu
N = 472
1
95% CI Kosofe
N = 612
1
95% CI Mushin
N = 479
1
95% CI Oshodi
N = 492
1
95% CI Surulere
N = 386
1
95% CI p-value2
sex, n (%)












0.015
    Male 1,255 (45.0%) 139 (40.2%) 35%, 46% 189 (40.0%) 36%, 45% 292 (47.7%) 44%, 52% 237 (49.5%) 45%, 54% 218 (44.3%) 40%, 49% 180 (46.6%) 42%, 52%
    Female 1,532 (55.0%) 207 (59.8%) 54%, 65% 283 (60.0%) 55%, 64% 320 (52.3%) 48%, 56% 242 (50.5%) 46%, 55% 274 (55.7%) 51%, 60% 206 (53.4%) 48%, 58%
cat_age, n (%)












<0.001
    7-10 803 (28.8%) 93 (26.9%) 22%, 32% 104 (22.0%) 18%, 26% 146 (23.9%) 21%, 27% 180 (37.6%) 33%, 42% 159 (32.3%) 28%, 37% 121 (31.3%) 27%, 36%
    11-13 1,656 (59.4%) 195 (56.4%) 51%, 62% 279 (59.1%) 55%, 64% 384 (62.7%) 59%, 67% 275 (57.4%) 53%, 62% 295 (60.0%) 55%, 64% 228 (59.1%) 54%, 64%
    14-16 328 (11.8%) 58 (16.8%) 13%, 21% 89 (18.9%) 15%, 23% 82 (13.4%) 11%, 16% 24 (5.0%) 3.3%, 7.5% 38 (7.7%) 5.6%, 11% 37 (9.6%) 6.9%, 13%
Abbreviation: CI = Confidence Interval
1 Mean (SD) or Frequency (%)
2 Pearson’s Chi-squared test

Circulating filaria antigen Seroposiivity among study participants

Findings The positivity rates varied across the LGAs: Surulere had 5 cases (1.36%, 95% CI 0.5-3.2%), Mushin reported 9 cases (1.9%, 95% CI 0.9-3.7%), Kosofe had 10 cases (1.6%, 95% CI 0.8-3.1%), Oshodi had 8 cases (1.6%, 95% CI 0.8-3.3%), Eti-Osa had 9 cases (2.6%, 95% CI 1.3-5.1%), and Ikorodu had 14 cases (3.0%, 95% CI 1.7-5.0%). The number of positive cases exceeded 3 in each LGA, hence the LGA was deemed endemic, warranting continued MDA implementation.

options(na.action = "na.omit")
theme_gtsummary_journal("jama")
Newtable2 <-
  mrc2 %>% filter(!is.na(lgac)) %>% 
  dplyr::select(lgac,prev) %>%
  tbl_summary(
    by = prev,
    label = NULL,
    percent = "row",
    type = list(c() ~ "continuous",
                all_dichotomous() ~ "categorical"),
    statistic = list(all_continuous() ~ "{mean} ({sd})",
                     all_categorical() ~ "{n} ({p}%)"),
    digits = list(all_categorical()~c(0,1))
  )%>%
  add_ci(
    method = all_dichotomous() ~ "exact", 
    conf.level = 0.95,
  ) %>%
 modify_fmt_fun(
    estimate = all_categorical() ~ style_number(digits = 1),
    conf.low = all_categorical() ~ style_number(digits = 1),
    conf.high = all_categorical() ~ style_number(digits = 1)
    ) %>% 
  add_p(test =
          list(all_continuous() ~ "aov", all_categorical() ~ "chisq.test"), 
        pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% 
  bold_p() %>% 
  bold_labels() %>% 
  add_overall(col_label= "**Responses**, N = {N}") %>% 
  modify_footnote(
    all_stat_cols() ~ "Mean (SD) or Frequency (%)") 

Newtable2
Characteristic Responses, N = 27871 Negative
N = 2,732
1
95% CI Positive
N = 55
1
95% CI p-value2
lgac, n (%)




0.45
    EtiOsa 346 (100.0%) 337 (97.4%) 95%, 99% 9 (2.6%) 1.3%, 5.1%
    Ikorodu 472 (100.0%) 458 (97.0%) 95%, 98% 14 (3.0%) 1.7%, 5.0%
    Kosofe 612 (100.0%) 602 (98.4%) 97%, 99% 10 (1.6%) 0.83%, 3.1%
    Mushin 479 (100.0%) 470 (98.1%) 96%, 99% 9 (1.9%) 0.92%, 3.7%
    Oshodi 492 (100.0%) 484 (98.4%) 97%, 99% 8 (1.6%) 0.76%, 3.3%
    Surulere 386 (100.0%) 381 (98.7%) 97%, 100% 5 (1.3%) 0.48%, 3.2%
Abbreviation: CI = Confidence Interval
1 Mean (SD) or Frequency (%)
2 Pearson’s Chi-squared test

Bed-net ownership, utilization rate and history of swallowing ivermectin among participants

The proportion of those who own ITN was significantly low across the LGAs, ranging from 34.2%-42.5% (p =0.000), and almost half of those who owned ITN did not sleep on it the previous night before the survey (range: 39.9% - 56.2%, p =0.0020). Also, most of the children were residents (99.7%), majority (54.3%) had lived in the LGAs for 1-5 years spent, and most had never swallowed either ivermectin or albendazole

options(na.action = "na.omit")
theme_gtsummary_journal("jama")
Newtable3 <-
  mrc2 %>% filter(!is.na(lgac)) %>% 
  dplyr::select(lgac,itn,sitn,res,cat_los,ivm) %>%
  tbl_summary(
    by = lgac,
    label = NULL,
    percent = "column",
    type = list(c() ~ "continuous",
                all_dichotomous() ~ "categorical"),
    statistic = list(all_continuous() ~ "{mean} ({sd})",
                     all_categorical() ~ "{n} ({p}%)"),
    digits = list(all_categorical()~c(0,1))
  )%>%
  add_ci(
    method = all_dichotomous() ~ "exact", 
    conf.level = 0.95,
  ) %>%
 modify_fmt_fun(
    estimate = all_categorical() ~ style_number(digits = 1),
    conf.low = all_categorical() ~ style_number(digits = 1),
    conf.high = all_categorical() ~ style_number(digits = 1)
    ) %>% 
  add_p(test =
          list(all_continuous() ~ "aov", all_categorical() ~ "chisq.test"), 
        pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% 
  bold_p() %>% 
  bold_labels() %>% 
  add_overall(col_label= "**Responses**, N = {N}") %>% 
  modify_footnote(
    all_stat_cols() ~ "Mean (SD) or Frequency (%)") 

Newtable3
Characteristic Responses, N = 27871 EtiOsa
N = 346
1
95% CI Ikorodu
N = 472
1
95% CI Kosofe
N = 612
1
95% CI Mushin
N = 479
1
95% CI Oshodi
N = 492
1
95% CI Surulere
N = 386
1
95% CI p-value2
itn, n (%)












0.17
    No 1,756 (63.0%) 199 (57.5%) 52%, 63% 303 (64.2%) 60%, 68% 376 (61.4%) 57%, 65% 315 (65.8%) 61%, 70% 319 (64.8%) 60%, 69% 244 (63.2%) 58%, 68%
    Yes 1,031 (37.0%) 147 (42.5%) 37%, 48% 169 (35.8%) 32%, 40% 236 (38.6%) 35%, 43% 164 (34.2%) 30%, 39% 173 (35.2%) 31%, 40% 142 (36.8%) 32%, 42%
sitn, n (%)












0.002
    No 457 (44.3%) 49 (33.3%) 26%, 42% 95 (56.2%) 48%, 64% 104 (44.1%) 38%, 51% 77 (47.0%) 39%, 55% 69 (39.9%) 33%, 48% 63 (44.4%) 36%, 53%
    Yes 574 (55.7%) 98 (66.7%) 58%, 74% 74 (43.8%) 36%, 52% 132 (55.9%) 49%, 62% 87 (53.0%) 45%, 61% 104 (60.1%) 52%, 67% 79 (55.6%) 47%, 64%
    Unknown 1,756 199
303
376
315
319
244

res, n (%)












0.34
    No 8 (0.3%) 0 (0.0%) 0.00%, 1.4% 2 (0.4%) 0.07%, 1.7% 4 (0.7%) 0.21%, 1.8% 1 (0.2%) 0.01%, 1.3% 0 (0.0%) 0.00%, 0.97% 1 (0.3%) 0.01%, 1.7%
    Yes 2,779 (99.7%) 346 (100.0%) 99%, 100% 470 (99.6%) 98%, 100% 608 (99.3%) 98%, 100% 478 (99.8%) 99%, 100% 492 (100.0%) 99%, 100% 385 (99.7%) 98%, 100%
cat_los, n (%)












0.23
    1-5 1,509 (54.3%) 191 (55.2%) 50%, 60% 249 (53.0%) 48%, 58% 330 (54.3%) 50%, 58% 249 (52.1%) 48%, 57% 275 (55.9%) 51%, 60% 215 (55.8%) 51%, 61%
    6-10 818 (29.4%) 101 (29.2%) 25%, 34% 135 (28.7%) 25%, 33% 161 (26.5%) 23%, 30% 159 (33.3%) 29%, 38% 146 (29.7%) 26%, 34% 116 (30.1%) 26%, 35%
    11-16 452 (16.3%) 54 (15.6%) 12%, 20% 86 (18.3%) 15%, 22% 117 (19.2%) 16%, 23% 70 (14.6%) 12%, 18% 71 (14.4%) 12%, 18% 54 (14.0%) 11%, 18%
    Unknown 8 0
2
4
1
0
1

ivm, n (%)












<0.001
    Never 1,412 (95.6%) 288 (97.6%) 95%, 99% 293 (98.7%) 96%, 100% 262 (98.5%) 96%, 100% 234 (96.7%) 93%, 98% 173 (86.1%) 80%, 90% 162 (92.0%) 87%, 95%
    last 6 months 40 (2.7%) 4 (1.4%) 0.44%, 3.7% 4 (1.3%) 0.43%, 3.6% 4 (1.5%) 0.48%, 4.1% 7 (2.9%) 1.3%, 6.1% 10 (5.0%) 2.5%, 9.2% 11 (6.3%) 3.3%, 11%
    last 1 year 8 (0.5%) 1 (0.3%) 0.02%, 2.2% 0 (0.0%) 0.00%, 1.6% 0 (0.0%) 0.00%, 1.8% 0 (0.0%) 0.00%, 1.9% 6 (3.0%) 1.2%, 6.7% 1 (0.6%) 0.03%, 3.6%
    over a year 17 (1.2%) 2 (0.7%) 0.12%, 2.7% 0 (0.0%) 0.00%, 1.6% 0 (0.0%) 0.00%, 1.8% 1 (0.4%) 0.02%, 2.6% 12 (6.0%) 3.3%, 10% 2 (1.1%) 0.20%, 4.5%
    Unknown 1,310 51
175
346
237
291
210

Abbreviation: CI = Confidence Interval
1 Mean (SD) or Frequency (%)
2 Pearson’s Chi-squared test

Epidemiological profile of CFA-positive children

Sex profile of CFA positive children

I filtered out all children who tested negative, so have more deeper insights into profile of those who where sero-positive.

More females were CFA-positive (28, 50.9%) compared to males (27, 49.1%) (p = 0.82).

mrc2 <- mrc2 %>% filter (prev != "Negative")

prop_data <- mrc2 %>%
  filter(!is.na(sex), !is.na(lgac)) %>%
  group_by(lgac, sex) %>%
  summarise(n = n()) %>%
  mutate(prop = n / sum(n))


# Step 2: Plot the proportions using ggplot
g1 <-  ggplot(prop_data, aes(x = lgac, y = prop, fill = sex)) +
  geom_bar(stat = "identity", position = "stack") +
  geom_text(
    aes(label = scales::percent(prop, accuracy = 0.1)),
    position = position_stack(vjust = 0.5),
    size = 3.5,
    color = "black"
  ) +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
  scale_fill_manual(values = c("Male" = "lightgreen", "Female" = "lightblue")) +  # blue & greylabs(x = "Local Governemnt Areas", y = "CFA positivity (%)", fill = "Sex") +
  labs(x = "Local Government Areas", y = "CFA positivity", fill = "Sex") +
  theme(
    panel.grid.major.y = element_line(color = "gray80", linetype = "dashed"),
    panel.grid.minor = element_blank(),
    panel.grid.major.x = element_blank(),
    panel.background = element_blank(),
    plot.background = element_rect(fill= "white"),
    axis.line = element_line(color = "gray40"),
    axis.title = element_text(size=10),
    axis.text.x = element_text(size=10, angle = 45, hjust = 1),
    axis.text.y = element_text(size =10),
    legend.position = "right",
    legend.text = element_text(size = 10),
    legend.title = element_text(size = 10)
  )

g1

Age and sex profile of CFA positive children

Regarding age distribution, the highest proportion of CFA-positive children were between 11–13 years (39, 70.9%), followed by those aged 7–10 years (11, 20.0%), and 14–16 years (5, 9.1%)(p = 0.60)

prop_data3 <- mrc2 %>%
  filter(!is.na(cat_age), !is.na(lgac)) %>%
  group_by(lgac, cat_age) %>%
  summarise(n = n()) %>%
  mutate(prop = n / sum(n))

# Step 2: Plot the proportions using ggplot
g2 <- ggplot(prop_data3, aes(x = lgac, y = prop, fill = cat_age)) +
  geom_bar(stat = "identity", position = "stack") +
  geom_text(
    aes(label = scales::percent(prop, accuracy = 0.1)),
    position = position_stack(vjust = 0.5),
    size = 3.5,
    color = "black"
  ) +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
  scale_fill_manual(values = c("7-10" = "lightgreen", "11-13" = "lightblue","14-16"="grey" )) +  # blue & greylabs(x = "Local Governemnt Areas", y = "CFA positivity (%)", fill = "Sex") +
  labs(x = "Local Government Areas", y = "CFA positivity", fill = "Age category (in years)") +
  theme(
    panel.grid.major.y = element_line(color = "gray80", linetype = "dashed"),
    panel.grid.minor = element_blank(),
    panel.grid.major.x = element_blank(),
    panel.background = element_blank(),
    plot.background = element_rect(fill= "white"),
    axis.line = element_line(color = "gray40"),
    axis.title = element_text(size=10),
    axis.text.x = element_text(size=10, angle = 45, hjust = 1),
    axis.text.y = element_text(size =10),
    legend.position = "right",
    legend.text = element_text(size = 10),
    legend.title = element_text(size = 10)
  )
g2

Length of residency among CFA positive children

In terms of residency status, most children (31, 56.4%) had lived in their current LGA for 1–5 years, particularly in Ikorodu (7, 50.0%), Kosofe (8, 80.0%), Oshodi (7, 87.5%), and Surulere (4, 80.0%). In contrast, most children in Mushin (77%) and Eti-Osa (66%) had resided in their communities for 6–14 years. However, there was no significant difference in length of residency across the LGAs (p = 0.07) (Table 3).

prop_data4 <- mrc2 %>%
  filter(!is.na(cat_los), !is.na(lgac)) %>%
  group_by(lgac, cat_los) %>%
  summarise(n = n()) %>%
  mutate(prop = n / sum(n))


# Step 2: Plot the proportions using ggplot
g4 <-  ggplot(prop_data4, aes(x = lgac, y = prop, fill = cat_los)) +
  geom_bar(stat = "identity", position = "stack") +
  geom_text(
    aes(label = scales::percent(prop, accuracy = 0.1)),
    position = position_stack(vjust = 0.5),
    size = 3.5,
    color = "black"
  ) +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
  scale_fill_manual(values = c("1-5" = "lightgreen", "6-10" = "lightblue", "11-14"="grey")) +  # blue & greylabs(x = "Local Governemnt Areas", y = "CFA positivity (%)", fill = "Length of residency") +
  labs(x = "Local Government Areas", y = "CFA positivity", fill = "Length of Residency") +
  theme(
    panel.grid.major.y = element_line(color = "gray80", linetype = "dashed"),
    panel.grid.minor = element_blank(),
    panel.grid.major.x = element_blank(),
    panel.background = element_blank(),
    plot.background = element_rect(fill= "white"),
    axis.line = element_line(color = "gray40"),
    axis.title = element_text(size=10),
    axis.text.x = element_text(size=10, angle = 45, hjust = 1),
    axis.text.y = element_text(size =10),
    legend.position = "right",
    legend.text = element_text(size = 10),
    legend.title = element_text(size = 10)
  )

g4

Ownership of bed-nets among CFA positive children

Ownership of insecticide-treated nets (ITNs) was generally low (14, 25.5%) and not significantly different across LGAs (p = 0.39). Most LGAs had ownership rates below 35%, with the lowest observed in Oshodi (12.5%), Ikorodu (14.3%), Mushin (22.2%), Kosofe (30.0%), Eti-Osa (33.3%), and Surulere (60.0%).

prop_data5 <- mrc2 %>%
  filter(!is.na(itn), !is.na(lgac)) %>%
  group_by(lgac,itn) %>%
  summarise(n = n()) %>%
  mutate(prop = n / sum(n))


# Step 2: Plot the proportions using ggplot
g6 <-  ggplot(prop_data5, aes(x = lgac, y = prop, fill = itn)) +
  geom_bar(stat = "identity", position = "stack") +
  geom_text(
    aes(label = scales::percent(prop, accuracy = 0.1)),
    position = position_stack(vjust = 0.5),
    size = 3.5,
    color = "black"
  ) +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
  scale_fill_manual(values = c("No" = "blue", "Yes" = "green")) +  # blue & greylabs(x = "Local Governemnt Areas", y = "CFA positivity (%)", fill = "Length of residency") +
  labs(x = "Local Government Areas", y = "CFA positivity", fill = "Ownership of Bed-nets") +
  theme(
    panel.grid.major.y = element_line(color = "gray80", linetype = "dashed"),
    panel.grid.minor = element_blank(),
    panel.grid.major.x = element_blank(),
    panel.background = element_blank(),
    plot.background = element_rect(fill= "white"),
    axis.line = element_line(color = "gray40"),
    axis.title = element_text(size=10),
    axis.text.x = element_text(size=10, angle = 45, hjust = 1),
    axis.text.y = element_text(size =10),
    legend.position = "right",
    legend.text = element_text(size = 10),
    legend.title = element_text(size = 10)
  )

g6

Flow of CFA-positive children across age category, length of residence in the LGAs, and ITN ownership status.

Among participants aged 7–10 years, 81.8% had lived in the LGAs for 1-5 years, while the remaining 18.2% had lived for 6–10 years. Notably, 18.2% of this age group did not own an ITN. For those aged 11–13 years, 53.8% had resided in the LGAs for 1–5 years, and 46.2% for 6–16 years. Notably, 74.4% of this age group did not own an ITN. Among older children aged 14–16 years, the majority (60%) had lived in their communities for 11–16 years, while the remaining 40% were evenly split between 1–5 and 6–10 years of residence. In this group, 60% did not own an ITN

sankey_data <- mrc2 %>%
  count(cat_age, cat_los, itn) %>%
  group_by(cat_age) %>%
  mutate(freq = n, 
         prop = n / sum(n),
         label=paste0(scales::percent(prop, accuracy=0.1)))%>%
  ungroup()

# Plot Sankey (alluvial) diagram
g9 <- ggplot(sankey_data,
       aes(axis1 = cat_age, axis2 = cat_los, axis3 = itn, y = freq)) +
  geom_alluvium(aes(fill = cat_age), width = 1/12, alpha=0.7) +
  geom_stratum(width = 1/12, fill = "grey80", color = "black") +
  geom_text(stat = "stratum", aes(label = after_stat(stratum)), size = 3.5) +
scale_x_discrete(limits = c("Age", "Years of Residence", "Owns ITN"),
                   expand = c(.05, .05)) +
scale_fill_brewer(type = "qual", palette = "Set2") +
labs(title = "Flow of CFA-Positive Children", y = "Number of Participants", x = "Categories", fill = "Age Category") +
  theme(
    panel.grid.major.y = element_line(color = "gray80", linetype = "dashed"),
    panel.grid.minor = element_blank(),
    panel.grid.major.x = element_blank(),
    panel.background = element_blank(),
    plot.background = element_rect(fill= "white"),
    axis.line = element_line(color = "gray40"),
    axis.title = element_text(size=10),
    axis.text.x = element_text(size=10, hjust = 1),
    axis.text.y = element_text(size =10),
    legend.position = "bottom",
    legend.text = element_text(size = 10),
    legend.title = element_text(size = 10)
  )
g9

## Hammed Mogaji, PhD; Collaborators: Federal Ministry of Health; Nigerian Institute of Medical Health; Funding: Sightsavers, UK & MITOSATH