Felicia Part II Analysis

Author

Dr Samuel Blay Nguah

Published

October 13, 2026

Data Management

Table I: Summary of the complete dataset

Show the code
df_complete %>% 
  summarytools::dfSummary(graph.col = T, labels.col = F) %>% 
  summarytools::stview(method = "render")

Data Frame Summary

df_complete

Dimensions: 418 x 62
Duplicates: 0
No Variable Stats / Values Freqs (% of Valid) Graph Valid Missing
1 studyid [numeric]
Mean (sd) : 211.6 (123)
min ≤ med ≤ max:
1 ≤ 210.5 ≤ 425
IQR (CV) : 212.5 (0.6)
418 distinct values 418 (100.0%) 0 (0.0%)
2 date_of_birth [character]
1. 43965
2. 44014
3. 43815
4. 43816
5. 43858
6. 43905
7. 43997
8. 44013
9. 44019
10. 44024
[ 335 others ]
4 ( 1.0% )
4 ( 1.0% )
3 ( 0.7% )
3 ( 0.7% )
3 ( 0.7% )
3 ( 0.7% )
3 ( 0.7% )
3 ( 0.7% )
3 ( 0.7% )
3 ( 0.7% )
386 ( 92.3% )
418 (100.0%) 0 (0.0%)
3 age_mths [numeric]
Mean (sd) : 21 (14.8)
min ≤ med ≤ max:
6 ≤ 15 ≤ 59
IQR (CV) : 19.8 (0.7)
52 distinct values 418 (100.0%) 0 (0.0%)
4 sex [factor]
1. Female
2. Male
193 ( 46.3% )
224 ( 53.7% )
417 (99.8%) 1 (0.2%)
5 bodytemp [numeric]
Mean (sd) : 36.3 (0.3)
min ≤ med ≤ max:
35.2 ≤ 36.3 ≤ 37.4
IQR (CV) : 0.4 (0)
20 distinct values 418 (100.0%) 0 (0.0%)
6 weight_kg [numeric]
Mean (sd) : 10.9 (3.4)
min ≤ med ≤ max:
5.4 ≤ 9.9 ≤ 22.7
IQR (CV) : 4.4 (0.3)
125 distinct values 417 (99.8%) 1 (0.2%)
7 height_cm [numeric]
Mean (sd) : 82.5 (12.7)
min ≤ med ≤ max:
60 ≤ 80 ≤ 122
IQR (CV) : 18 (0.2)
81 distinct values 418 (100.0%) 0 (0.0%)
8 muac [numeric]
Mean (sd) : 13.9 (1.3)
min ≤ med ≤ max:
11 ≤ 13.8 ≤ 19.6
IQR (CV) : 1.8 (0.1)
58 distinct values 418 (100.0%) 0 (0.0%)
9 m_age [numeric]
Mean (sd) : 29.3 (6.9)
min ≤ med ≤ max:
15 ≤ 29 ≤ 54
IQR (CV) : 11 (0.2)
33 distinct values 418 (100.0%) 0 (0.0%)
10 m_maristat [character]
1. Co-habitation
2. Divorced
3. Married
4. Single
5. Widow
203 ( 48.6% )
10 ( 2.4% )
164 ( 39.2% )
39 ( 9.3% )
2 ( 0.5% )
418 (100.0%) 0 (0.0%)
11 m_educ [factor]
1. None
2. Primary
3. Jhs
4. Shs
5. Tertiary
38 ( 9.1% )
42 ( 10.0% )
233 ( 55.7% )
68 ( 16.3% )
37 ( 8.9% )
418 (100.0%) 0 (0.0%)
12 m_occup [character]
1. Business woman
2. Farmer
3. Government worker
4. Other
5. Petty trader
6. Private teacher
7. Student
10 ( 2.4% )
39 ( 9.4% )
37 ( 8.9% )
183 ( 43.9% )
145 ( 34.8% )
2 ( 0.5% )
1 ( 0.2% )
417 (99.8%) 1 (0.2%)
13 m_occup_other [character]
1. Unemployed
2. Seamstress
3. Hair dresser
4. Apprentice
5. Hairdresser
6. Student
7. Decorater
8. Caterer
9. Cleaner
10. Cook
[ 4 others ]
89 ( 48.1% )
30 ( 16.2% )
24 ( 13.0% )
21 ( 11.4% )
6 ( 3.2% )
6 ( 3.2% )
2 ( 1.1% )
1 ( 0.5% )
1 ( 0.5% )
1 ( 0.5% )
4 ( 2.2% )
185 (44.3%) 233 (55.7%)
14 m_income [numeric]
Mean (sd) : 257.1 (396.2)
min ≤ med ≤ max:
0 ≤ 100 ≤ 2000
IQR (CV) : 300 (1.5)
22 distinct values 417 (99.8%) 1 (0.2%)
15 f_age [numeric]
Mean (sd) : 34.5 (7.8)
min ≤ med ≤ max:
18 ≤ 35 ≤ 60
IQR (CV) : 11 (0.2)
39 distinct values 418 (100.0%) 0 (0.0%)
16 f_maristat [character]
1. Co-habitation
2. Divorced
3. Married
4. Single
205 ( 49.4% )
9 ( 2.2% )
163 ( 39.3% )
38 ( 9.2% )
415 (99.3%) 3 (0.7%)
17 f_educ [character]
1. JHS
2. None
3. Primary
4. SHS
5. Tertiary
151 ( 36.1% )
32 ( 7.7% )
44 ( 10.5% )
120 ( 28.7% )
71 ( 17.0% )
418 (100.0%) 0 (0.0%)
18 f_occup [character]
1. Business man
2. Business woman
3. farmer
4. Farmer
5. Government worker
6. o works with water compan
7. Other
8. petty trader
9. Petty trader
10. Student
16 ( 3.8% )
1 ( 0.2% )
10 ( 2.4% )
58 ( 13.9% )
65 ( 15.6% )
1 ( 0.2% )
235 ( 56.5% )
7 ( 1.7% )
22 ( 5.3% )
1 ( 0.2% )
416 (99.5%) 2 (0.5%)
19 if_other_to_above [character]
1. maison
2. commercial driver
3. mechanic
4. carpenter
5. driver
6. unemployed
7. Business man
8. Commercial driver
9. painter
10. student
[ 37 others ]
46 ( 19.5% )
33 ( 14.0% )
17 ( 7.2% )
15 ( 6.4% )
12 ( 5.1% )
9 ( 3.8% )
7 ( 3.0% )
7 ( 3.0% )
7 ( 3.0% )
7 ( 3.0% )
76 ( 32.2% )
236 (56.5%) 182 (43.5%)
20 f_income [numeric]
Mean (sd) : 660.6 (638.5)
min ≤ med ≤ max:
0 ≤ 400 ≤ 3000
IQR (CV) : 800 (1)
24 distinct values 417 (99.8%) 1 (0.2%)
21 m_siblings [numeric]
Mean (sd) : 1.8 (1.6)
min ≤ med ≤ max:
0 ≤ 1 ≤ 7
IQR (CV) : 3 (0.9)
0 : 114 ( 27.3% )
1 : 97 ( 23.2% )
2 : 88 ( 21.1% )
3 : 52 ( 12.4% )
4 : 34 ( 8.1% )
5 : 24 ( 5.7% )
6 : 7 ( 1.7% )
7 : 2 ( 0.5% )
418 (100.0%) 0 (0.0%)
22 f_siblings [numeric]
Mean (sd) : 2.1 (2.2)
min ≤ med ≤ max:
0 ≤ 2 ≤ 14
IQR (CV) : 3 (1)
13 distinct values 418 (100.0%) 0 (0.0%)
23 mal_prev_measure [character]
1. Clean environment
2. ITN
3. Mosquito repellent
4. Mosquito spray
5. none
6. Other
7. screened house
8. Traditional herbs
7 ( 1.7% )
294 ( 70.5% )
6 ( 1.4% )
32 ( 7.7% )
2 ( 0.5% )
73 ( 17.5% )
2 ( 0.5% )
1 ( 0.2% )
417 (99.8%) 1 (0.2%)
24 if_other_to_above2 [character]
1. ceiling fan
2. Mosquito coil
3. Mosquito repellent
4. Mosquito spray
5. None
4 ( 5.1% )
57 ( 73.1% )
1 ( 1.3% )
2 ( 2.6% )
14 ( 17.9% )
78 (18.7%) 340 (81.3%)
25 do_you_own_itn [character]
1. No
2. Yes
106 ( 25.5% )
309 ( 74.5% )
415 (99.3%) 3 (0.7%)
26 itn_previous_night [character]
1. No
2. Yes
195 ( 46.7% )
223 ( 53.3% )
418 (100.0%) 0 (0.0%)
27 itn_previous_night_2 [character]
1. No
2. Yes
203 ( 48.6% )
215 ( 51.4% )
418 (100.0%) 0 (0.0%)
28 antimal_2weeks [character]
1. No
2. Yes
354 ( 85.3% )
61 ( 14.7% )
415 (99.3%) 3 (0.7%)
29 if_yes_which_antimalarial [character]
1. Arthemeter/Lumefantrine
2. Don’t Know
3. Herbal Preparation
39 ( 65.0% )
20 ( 33.3% )
1 ( 1.7% )
60 (14.4%) 358 (85.6%)
30 if_other_to_above3 [character]
1. Arthemeter/ lumefantrine
2. Don~t know
1 ( 50.0% )
1 ( 50.0% )
2 (0.5%) 416 (99.5%)
31 m_maristat2 [factor]
1. Co-habitation
2. Married
3. Single
203 ( 48.6% )
164 ( 39.2% )
51 ( 12.2% )
418 (100.0%) 0 (0.0%)
32 m_educ2 [ordered, factor]
1. None
2. Primary
3. Secondary
4. Tertiary
38 ( 9.1% )
275 ( 65.8% )
68 ( 16.3% )
37 ( 8.9% )
418 (100.0%) 0 (0.0%)
33 f_maristat2 [factor]
1. Co-habitation
2. Married
3. Single
205 ( 49.4% )
163 ( 39.3% )
47 ( 11.3% )
415 (99.3%) 3 (0.7%)
34 f_educ2 [ordered, factor]
1. None
2. Primary
3. Secondary
4. Tertiary
32 ( 7.7% )
195 ( 46.7% )
120 ( 28.7% )
71 ( 17.0% )
418 (100.0%) 0 (0.0%)
35 m_occup_2 [character]
1. Salaried worker
2. Self-Enployed
3. Unemployed
37 ( 8.9% )
264 ( 63.3% )
116 ( 27.8% )
417 (99.8%) 1 (0.2%)
36 mal_prev_measure_2 [character]
1. ITN
2. Mosquito coil
3. Mosquito repellent
4. Mosquito spray
5. None
6. Others
294 ( 70.3% )
55 ( 13.2% )
7 ( 1.7% )
33 ( 7.9% )
15 ( 3.6% )
14 ( 3.3% )
418 (100.0%) 0 (0.0%)
37 bfaz [numeric]
Mean (sd) : -0.5 (1.4)
min ≤ med ≤ max:
-8.7 ≤ -0.4 ≤ 3.8
IQR (CV) : 1.6 (-2.9)
278 distinct values 416 (99.5%) 2 (0.5%)
38 wfhz [numeric]
Mean (sd) : -0.4 (1.3)
min ≤ med ≤ max:
-8.1 ≤ -0.4 ≤ 3.9
IQR (CV) : 1.5 (-3.2)
252 distinct values 415 (99.3%) 3 (0.7%)
39 wfaz [numeric]
Mean (sd) : -0.2 (1.4)
min ≤ med ≤ max:
-6.1 ≤ -0.2 ≤ 3.4
IQR (CV) : 1.7 (-6.7)
282 distinct values 416 (99.5%) 2 (0.5%)
40 hfaz [numeric]
Mean (sd) : 0.3 (2.2)
min ≤ med ≤ max:
-5.6 ≤ -0.1 ≤ 9.2
IQR (CV) : 2.6 (6.9)
285 distinct values 417 (99.8%) 1 (0.2%)
41 mfaz [numeric]
Mean (sd) : -0.9 (1)
min ≤ med ≤ max:
-3.6 ≤ -0.9 ≤ 3.8
IQR (CV) : 1.2 (-1.1)
226 distinct values 417 (99.8%) 1 (0.2%)
42 wfaz_cat [factor]
1. Normal
2. Underweight
377 ( 90.6% )
39 ( 9.4% )
416 (99.5%) 2 (0.5%)
43 hfaz_cat [factor]
1. Normal
2. Stunted
375 ( 89.9% )
42 ( 10.1% )
417 (99.8%) 1 (0.2%)
44 mfaz_cat [factor]
1. Normal
2. Low MUAC
367 ( 88.0% )
50 ( 12.0% )
417 (99.8%) 1 (0.2%)
45 wfhz_cat [factor]
1. Normal
2. Malnourished
380 ( 91.6% )
35 ( 8.4% )
415 (99.3%) 3 (0.7%)
46 bfaz_cat [factor]
1. Normal
2. Low BMI
376 ( 90.4% )
40 ( 9.6% )
416 (99.5%) 2 (0.5%)
47 hgb [numeric]
Mean (sd) : 10.9 (1.3)
min ≤ med ≤ max:
6.7 ≤ 10.9 ≤ 15.2
IQR (CV) : 1.6 (0.1)
64 distinct values 417 (99.8%) 1 (0.2%)
48 rbc [numeric]
Mean (sd) : 4.5 (0.5)
min ≤ med ≤ max:
2.1 ≤ 4.5 ≤ 6.2
IQR (CV) : 0.6 (0.1)
168 distinct values 417 (99.8%) 1 (0.2%)
49 mcv [numeric]
Mean (sd) : 73.9 (6.7)
min ≤ med ≤ max:
52.7 ≤ 74.8 ≤ 89.3
IQR (CV) : 9 (0.1)
201 distinct values 416 (99.5%) 2 (0.5%)
50 mch [numeric]
Mean (sd) : 24.2 (2.6)
min ≤ med ≤ max:
15.4 ≤ 24.6 ≤ 35.4
IQR (CV) : 3.3 (0.1)
107 distinct values 416 (99.5%) 2 (0.5%)
51 bf [character]
1. NO MPS SEEN
2. Pf, t, 127
3. Pf, t, 1305
4. Pf, t, 165
5. Pf, t, 204
6. Pf, t, 273
7. Pf, t, 2873
8. Pf, t, 3135
9. Pf, t, 3751
10. Pf, t, 7204
[ 3 others ]
406 ( 97.1% )
1 ( 0.2% )
1 ( 0.2% )
1 ( 0.2% )
1 ( 0.2% )
1 ( 0.2% )
1 ( 0.2% )
1 ( 0.2% )
1 ( 0.2% )
1 ( 0.2% )
3 ( 0.7% )
418 (100.0%) 0 (0.0%)
52 g6pd [character]
1. Full Enzymatic Defect
2. Normal Enzymatic Activity
3. Partial Enzymatic Activit
4. Partial Enzymatic Defect
37 ( 8.9% )
365 ( 87.3% )
1 ( 0.2% )
15 ( 3.6% )
418 (100.0%) 0 (0.0%)
53 sick [character]
1. Negative
2. Positive
384 ( 91.9% )
34 ( 8.1% )
418 (100.0%) 0 (0.0%)
54 hb_elect [character]
1. AS
2. Not Done
3. S
4. SC
27 ( 6.5% )
385 ( 92.1% )
2 ( 0.5% )
4 ( 1.0% )
418 (100.0%) 0 (0.0%)
55 mps_count [numeric]
Mean (sd) : 59.5 (516)
min ≤ med ≤ max:
0 ≤ 0 ≤ 7204
IQR (CV) : 0 (8.7)
13 distinct values 418 (100.0%) 0 (0.0%)
56 mps_present [character]
1. No
2. Yes
406 ( 97.1% )
12 ( 2.9% )
418 (100.0%) 0 (0.0%)
57 scd [factor]
1. No
2. Yes
412 ( 98.6% )
6 ( 1.4% )
418 (100.0%) 0 (0.0%)
58 g6pd_defect [factor]
1. Normal
2. Partial
3. Full
365 ( 87.3% )
16 ( 3.8% )
37 ( 8.9% )
418 (100.0%) 0 (0.0%)
59 anemia_cat2 [ordered, factor]
1. None
2. Mild
3. Moderate
4. Severe
206 ( 49.4% )
121 ( 29.0% )
87 ( 20.9% )
3 ( 0.7% )
417 (99.8%) 1 (0.2%)
60 anemia_cat [factor]
1. No
2. Yes
206 ( 49.4% )
211 ( 50.6% )
417 (99.8%) 1 (0.2%)
61 stool [character]
1. Entamoeba histolytica
2. Intestinal flagellate
3. No specimen
4. Normal
5. Pus cells
6. Yeast cells present
1 ( 0.2% )
3 ( 0.7% )
195 ( 46.7% )
207 ( 49.5% )
1 ( 0.2% )
11 ( 2.6% )
418 (100.0%) 0 (0.0%)
62 urine [character]
1. Blood with RBCs
2. Blood without RBCs
3. Elevated Bilirubin
4. No specimen
5. Normal
2 ( 0.5% )
6 ( 1.4% )
6 ( 1.4% )
209 ( 50.0% )
195 ( 46.7% )
418 (100.0%) 0 (0.0%)

Generated by summarytools 1.1.5 (R version 4.6.1)
2026-10-13

Table 1

Show the code
gtsummary::theme_gtsummary_compact()
df_complete %>% 
    gtsummary::tbl_summary(
        include = c(sex, age_mths, bodytemp, wfaz_cat, hfaz_cat, wfhz_cat, 
                    mfaz_cat, bfaz_cat, f_siblings, m_siblings, do_you_own_itn,
                    itn_previous_night, mal_prev_measure_2),
        by = sex,
        type = list(
            m_siblings ~ "continuous",
            c(do_you_own_itn, itn_previous_night) ~ "categorical"
            ),
        digits = list(
            gtsummary::all_categorical() ~ c(0,1),
            c(m_siblings, f_siblings) ~ 0,
            bodytemp ~ 1
            ),
        missing = "no",
        statistic = gtsummary::all_categorical()~ "{n}({p})"
    ) %>% 
    gtsummary::modify_spanning_header(
        gtsummary::all_stat_cols()~"**Sex of Participant**"
        ) %>% 
    gtsummary::add_overall() %>% 
    gtsummary::bold_labels() %>% 
    gtsummary::modify_caption("Table 1")
Table 1
Characteristic Overall
N = 4171
Sex of Participant
Female
N = 1931
Male
N = 2241
Patient's Age (months) 15 (10, 29) 15 (10, 28) 15 (9, 29)
Body temperature 36.3 (36.1, 36.5) 36.3 (36.1, 36.5) 36.3 (36.1, 36.5)
Weight-for-Age Category


    Normal 377(90.6) 183(95.3) 194(86.6)
    Underweight 39(9.4) 9(4.7) 30(13.4)
Height-for-Age Category


    Normal 375(89.9) 177(91.7) 198(88.4)
    Stunted 42(10.1) 16(8.3) 26(11.6)
Weight-for-Height Category


    Normal 380(91.6) 182(95.3) 198(88.4)
    Malnourished 35(8.4) 9(4.7) 26(11.6)
MUAC-for-Age Catofory


    Normal 367(88.0) 175(90.7) 192(85.7)
    Low MUAC 50(12.0) 18(9.3) 32(14.3)
BMI-for-Age Category


    Normal 376(90.4) 179(93.2) 197(87.9)
    Low BMI 40(9.6) 13(6.8) 27(12.1)
Paternal siblings 2 (0, 3) 1 (0, 3) 2 (1, 4)
Maternal siblings 1 (0, 3) 1 (0, 2) 2 (1, 3)
Do you own an ITN


    No 106(25.6) 62(32.5) 44(19.7)
    Yes 308(74.4) 129(67.5) 179(80.3)
ITN used the previous night


    No 195(46.8) 106(54.9) 89(39.7)
    Yes 222(53.2) 87(45.1) 135(60.3)
Malaaria preventive measure used


    ITN 293(70.3) 122(63.2) 171(76.3)
    Mosquito coil 55(13.2) 32(16.6) 23(10.3)
    Mosquito repellent 7(1.7) 4(2.1) 3(1.3)
    Mosquito spray 33(7.9) 18(9.3) 15(6.7)
    None 15(3.6) 9(4.7) 6(2.7)
    Others 14(3.4) 8(4.1) 6(2.7)
1 Median (Q1, Q3); n(%)

Table 2

Show the code
df_complete %>%
    gtsummary::tbl_summary(
        include = c(m_age, m_maristat2, m_educ, m_occup, m_income),
        by = sex,
        digits = list(
            gtsummary::all_categorical() ~ c(0,1)),
        missing = "no",
        statistic = gtsummary::all_categorical()~ "{n}({p})"
    ) %>% 
    gtsummary::modify_spanning_header(
        gtsummary::all_stat_cols()~"**Sex of Participant**"
        ) %>% 
    gtsummary::add_overall() %>% 
    gtsummary::bold_labels() %>% 
    gtsummary::modify_caption("Table 2")
Table 2
Characteristic Overall
N = 4171
Sex of Participant
Female
N = 1931
Male
N = 2241
Mother's age (yrs) 29 (24, 35) 28 (23, 34) 30 (24, 35)
Mother's Marital Status


    Co-habitation 203(48.7) 103(53.4) 100(44.6)
    Married 163(39.1) 72(37.3) 91(40.6)
    Single 51(12.2) 18(9.3) 33(14.7)
Mother's educational level


    None 38(9.1) 14(7.3) 24(10.7)
    Primary 42(10.1) 17(8.8) 25(11.2)
    Jhs 232(55.6) 117(60.6) 115(51.3)
    Shs 68(16.3) 32(16.6) 36(16.1)
    Tertiary 37(8.9) 13(6.7) 24(10.7)
Mother's Occupation


    Business woman 10(2.4) 5(2.6) 5(2.2)
    Farmer 39(9.4) 16(8.3) 23(10.3)
    Government worker 37(8.9) 13(6.8) 24(10.7)
    Other 183(44.0) 90(46.9) 93(41.5)
    Petty trader 144(34.6) 67(34.9) 77(34.4)
    Private teacher 2(0.5) 1(0.5) 1(0.4)
    Student 1(0.2) 0(0.0) 1(0.4)
Mother's income (GHC) 100 (0, 300) 100 (0, 300) 140 (0, 300)
1 Median (Q1, Q3); n(%)

Table 3

Show the code
df_complete %>% 
    gtsummary::tbl_summary(
        include = c(f_age, f_maristat2, f_educ, f_occup, f_income),
        by = sex,
        digits = list(
            gtsummary::all_categorical() ~ c(0,1)
            ),
        missing = "no",
        statistic = gtsummary::all_categorical()~ "{n}({p})"
    ) %>% 
    gtsummary::modify_spanning_header(
        gtsummary::all_stat_cols()~"**Sex of Participant**"
        ) %>% 
    gtsummary::add_overall() %>% 
    gtsummary::bold_labels() %>% 
    gtsummary::modify_caption("Table 3")
Table 3
Characteristic Overall
N = 4171
Sex of Participant
Female
N = 1931
Male
N = 2241
Father's age (years) 35 (29, 40) 32 (29, 39) 35 (29, 40)
Father's marital status


    Co-habitation 205(49.5) 103(53.6) 102(45.9)
    Married 162(39.1) 73(38.0) 89(40.1)
    Single 47(11.4) 16(8.3) 31(14.0)
Father's educational level


    JHS 151(36.2) 72(37.3) 79(35.3)
    None 32(7.7) 13(6.7) 19(8.5)
    Primary 44(10.6) 20(10.4) 24(10.7)
    SHS 119(28.5) 59(30.6) 60(26.8)
    Tertiary 71(17.0) 29(15.0) 42(18.8)
Father's occupation


    Business man 16(3.9) 10(5.2) 6(2.7)
    Business woman 1(0.2) 0(0.0) 1(0.4)
    Farmer 58(14.0) 23(12.0) 35(15.7)
    Government worker 65(15.7) 26(13.5) 39(17.5)
    Other 234(56.4) 116(60.4) 118(52.9)
    Petty trader 22(5.3) 10(5.2) 12(5.4)
    Student 1(0.2) 0(0.0) 1(0.4)
    farmer 10(2.4) 4(2.1) 6(2.7)
    o works with water company 1(0.2) 1(0.5) 0(0.0)
    petty trader 7(1.7) 2(1.0) 5(2.2)
Father's income (GHC) 450 (200, 1,000) 400 (200, 800) 500 (200, 1,000)
1 Median (Q1, Q3); n(%)

table 4

Show the code
df_complete %>% 
    gtsummary::tbl_summary(
        include = c(hgb, anemia_cat, rbc, mcv, mch, g6pd_defect, mps_present, 
                    sick, hb_elect, urine, stool),
        by = sex,
        digits = list(
            gtsummary::all_categorical() ~ c(0,1)
            ),
        missing ="no",
        statistic = gtsummary::all_categorical()~ "{n}({p})"
    ) %>% 
    gtsummary::modify_spanning_header(
        gtsummary::all_stat_cols()~"**Sex of Participant**"
        ) %>% 
    gtsummary::add_overall() %>% 
    gtsummary::bold_labels() %>% 
    gtsummary::modify_caption("Table 4")
Table 4
Characteristic Overall
N = 4171
Sex of Participant
Female
N = 1931
Male
N = 2241
Hemoglobin (mg/dl) 10.90 (10.10, 11.70) 11.00 (10.20, 11.80) 10.90 (10.00, 11.70)
anemia_cat 211(50.7) 91(47.2) 120(53.8)
RBC count 4.51 (4.20, 4.78) 4.48 (4.20, 4.76) 4.54 (4.21, 4.79)
Mean corpuscular volume 75 (70, 79) 76 (70, 80) 74 (69, 78)
Mean corpuscular hemoglobin 24.60 (22.70, 26.10) 24.90 (23.10, 26.20) 24.30 (22.30, 25.90)
G6PD Defect


    Normal 364(87.3) 167(86.5) 197(87.9)
    Partial 16(3.8) 12(6.2) 4(1.8)
    Full 37(8.9) 14(7.3) 23(10.3)
mps_present 12(2.9) 6(3.1) 6(2.7)
Sickling Status


    Negative 383(91.8) 182(94.3) 201(89.7)
    Positive 34(8.2) 11(5.7) 23(10.3)
Hemoglobin Electrophoresis


    AS 27(6.5) 10(5.2) 17(7.6)
    Not Done 384(92.1) 182(94.3) 202(90.2)
    S 2(0.5) 1(0.5) 1(0.4)
    SC 4(1.0) 0(0.0) 4(1.8)
Urine examination


    Blood with RBCs 2(0.5) 1(0.5) 1(0.4)
    Blood without RBCs 6(1.4) 3(1.6) 3(1.3)
    Elevated Bilirubin 6(1.4) 4(2.1) 2(0.9)
    No specimen 208(49.9) 94(48.7) 114(50.9)
    Normal 195(46.8) 91(47.2) 104(46.4)
Stool examination


    Entamoeba histolytica 1(0.2) 1(0.5) 0(0.0)
    Intestinal flagellate 3(0.7) 2(1.0) 1(0.4)
    No specimen 194(46.5) 86(44.6) 108(48.2)
    Normal 207(49.6) 98(50.8) 109(48.7)
    Pus cells 1(0.2) 0(0.0) 1(0.4)
    Yeast cells present 11(2.6) 6(3.1) 5(2.2)
1 Median (Q1, Q3); n(%)

Table 5

Show the code
gtsummary::theme_gtsummary_compact()
df_complete %>% 
    gtsummary::tbl_summary(
        include = c(age_mths, bodytemp, wfaz_cat, hfaz_cat, wfhz_cat, 
                    mfaz_cat, bfaz_cat, f_siblings, m_siblings, do_you_own_itn,
                    itn_previous_night, mal_prev_measure_2, g6pd_defect, 
                    antimal_2weeks ),
        by = mps_present,
        missing ="no",
        type = list(
            m_siblings ~ "continuous",
            c(do_you_own_itn, itn_previous_night) ~ "categorical"
            ),
        digits = list(
            gtsummary::all_categorical() ~ c(0,1),
            c(m_siblings, f_siblings) ~ 0,
            bodytemp ~ 1
            ),
        statistic = gtsummary::all_categorical()~ "{n}({p})"
    ) %>% 
    gtsummary::modify_spanning_header(
        gtsummary::all_stat_cols()~"**MPs Present**"
        ) %>% 
    gtsummary::add_overall() %>% 
    gtsummary::bold_labels() %>% 
    gtsummary::add_p(pvalue_fun = ~ gtsummary::style_pvalue(.x, digits = 3)) %>% 
    gtsummary::modify_caption("Table 5") |> 
    gtsummary::bold_p()
Table 5
Characteristic Overall
N = 4181
MPs Present
p-value2
No
N = 4061
Yes
N = 121
Patient's Age (months) 15 (9, 29) 15 (9, 29) 28 (11, 36) 0.329
Body temperature 36.3 (36.1, 36.5) 36.3 (36.1, 36.5) 36.1 (36.0, 36.4) 0.087
Weight-for-Age Category


0.312
    Normal 377(90.6) 367(90.8) 10(83.3)
    Underweight 39(9.4) 37(9.2) 2(16.7)
Height-for-Age Category


0.345
    Normal 375(89.9) 365(90.1) 10(83.3)
    Stunted 42(10.1) 40(9.9) 2(16.7)
Weight-for-Height Category


0.610
    Normal 380(91.6) 368(91.3) 12(100.0)
    Malnourished 35(8.4) 35(8.7) 0(0.0)
MUAC-for-Age Catofory


0.644
    Normal 367(88.0) 357(88.1) 10(83.3)
    Low MUAC 50(12.0) 48(11.9) 2(16.7)
BMI-for-Age Category


0.616
    Normal 376(90.4) 364(90.1) 12(100.0)
    Low BMI 40(9.6) 40(9.9) 0(0.0)
Paternal siblings 2 (0, 3) 1 (0, 3) 3 (2, 5) 0.062
Maternal siblings 1 (0, 3) 1 (0, 3) 3 (1, 3) 0.423
Do you own an ITN


0.512
    No 106(25.5) 102(25.3) 4(33.3)
    Yes 309(74.5) 301(74.7) 8(66.7)
ITN used the previous night


0.410
    No 195(46.7) 188(46.3) 7(58.3)
    Yes 223(53.3) 218(53.7) 5(41.7)
Malaaria preventive measure used


0.332
    ITN 294(70.3) 286(70.4) 8(66.7)
    Mosquito coil 55(13.2) 54(13.3) 1(8.3)
    Mosquito repellent 7(1.7) 6(1.5) 1(8.3)
    Mosquito spray 33(7.9) 32(7.9) 1(8.3)
    None 15(3.6) 14(3.4) 1(8.3)
    Others 14(3.3) 14(3.4) 0(0.0)
G6PD Defect


0.433
    Normal 365(87.3) 355(87.4) 10(83.3)
    Partial 16(3.8) 15(3.7) 1(8.3)
    Full 37(8.9) 36(8.9) 1(8.3)
antimal_2weeks 61(14.7) 59(14.6) 2(16.7) 0.692
1 Median (Q1, Q3); n(%)
2 Wilcoxon rank sum test; Fisher’s exact test; Pearson’s Chi-squared test

Table 6

Show the code
df_complete %>% 
    gtsummary::tbl_summary(
        include = c(m_age, m_maristat2, m_educ, m_occup, m_income),
        by = mps_present,
        digits = list(
            gtsummary::all_categorical() ~ c(0,1)),
        statistic = gtsummary::all_categorical()~ "{n}({p})",
        missing = "no"
    ) %>% 
    gtsummary::modify_spanning_header(
        gtsummary::all_stat_cols()~"**MPs Present**"
        ) %>% 
    gtsummary::add_overall() %>% 
    gtsummary::bold_labels() %>% 
    gtsummary::add_p(pvalue_fun = ~ gtsummary::style_pvalue(.x, digits = 3)) %>% 
    gtsummary::modify_caption("Table 6")|> 
    gtsummary::bold_p()
Table 6
Characteristic Overall
N = 4181
MPs Present
p-value2
No
N = 4061
Yes
N = 121
Mother's age (yrs) 29 (24, 35) 29 (24, 35) 29 (24, 37) 0.565
Mother's Marital Status


0.170
    Co-habitation 203(48.6) 194(47.8) 9(75.0)
    Married 164(39.2) 162(39.9) 2(16.7)
    Single 51(12.2) 50(12.3) 1(8.3)
Mother's educational level


0.862
    None 38(9.1) 37(9.1) 1(8.3)
    Primary 42(10.0) 41(10.1) 1(8.3)
    Jhs 233(55.7) 224(55.2) 9(75.0)
    Shs 68(16.3) 67(16.5) 1(8.3)
    Tertiary 37(8.9) 37(9.1) 0(0.0)
Mother's Occupation


0.261
    Business woman 10(2.4) 10(2.5) 0(0.0)
    Farmer 39(9.4) 36(8.9) 3(25.0)
    Government worker 37(8.9) 37(9.1) 0(0.0)
    Other 183(43.9) 180(44.4) 3(25.0)
    Petty trader 145(34.8) 139(34.3) 6(50.0)
    Private teacher 2(0.5) 2(0.5) 0(0.0)
    Student 1(0.2) 1(0.2) 0(0.0)
Mother's income (GHC) 100 (0, 300) 100 (0, 300) 100 (50, 250) 0.979
1 Median (Q1, Q3); n(%)
2 Wilcoxon rank sum test; Fisher’s exact test

Table 7

Show the code
df_complete %>% 
    gtsummary::tbl_summary(
        include = c(f_age, f_maristat2, f_educ, f_occup, f_income),
        by = mps_present,
        digits = list(
            gtsummary::all_categorical() ~ c(0,1)),
        statistic = gtsummary::all_categorical()~ "{n}({p})",
        missing = "no"
    ) %>% 
    gtsummary::modify_spanning_header(
        gtsummary::all_stat_cols()~"**MPs Present**"
        ) %>% 
    gtsummary::add_overall() %>% 
    gtsummary::bold_labels() %>%
    gtsummary::add_p(pvalue_fun = ~ gtsummary::style_pvalue(.x, digits = 3)) %>%
    gtsummary::modify_caption("Table 7")|> 
    gtsummary::bold_p()
Table 7
Characteristic Overall
N = 4181
MPs Present
p-value2
No
N = 4061
Yes
N = 121
Father's age (years) 35 (29, 40) 35 (29, 40) 36 (32, 43) 0.359
Father's marital status


0.177
    Co-habitation 205(49.4) 196(48.6) 9(75.0)
    Married 163(39.3) 161(40.0) 2(16.7)
    Single 47(11.3) 46(11.4) 1(8.3)
Father's educational level


0.375
    JHS 151(36.1) 144(35.5) 7(58.3)
    None 32(7.7) 31(7.6) 1(8.3)
    Primary 44(10.5) 43(10.6) 1(8.3)
    SHS 120(28.7) 117(28.8) 3(25.0)
    Tertiary 71(17.0) 71(17.5) 0(0.0)
Father's occupation


0.414
    Business man 16(3.8) 16(4.0) 0(0.0)
    Business woman 1(0.2) 1(0.2) 0(0.0)
    Farmer 58(13.9) 54(13.4) 4(33.3)
    Government worker 65(15.6) 65(16.1) 0(0.0)
    Other 235(56.5) 228(56.4) 7(58.3)
    Petty trader 22(5.3) 21(5.2) 1(8.3)
    Student 1(0.2) 1(0.2) 0(0.0)
    farmer 10(2.4) 10(2.5) 0(0.0)
    o works with water company 1(0.2) 1(0.2) 0(0.0)
    petty trader 7(1.7) 7(1.7) 0(0.0)
Father's income (GHC) 400 (200, 1,000) 500 (200, 1,000) 350 (100, 500) 0.091
1 Median (Q1, Q3); n(%)
2 Wilcoxon rank sum test; Fisher’s exact test

Table 8

Show the code
gtsummary::theme_gtsummary_compact()
df_complete %>% 
    gtsummary::tbl_summary(
        include = c(age_mths, bodytemp, wfaz_cat, hfaz_cat, wfhz_cat, 
                    mfaz_cat, bfaz_cat, f_siblings, m_siblings, do_you_own_itn,
                    itn_previous_night, mal_prev_measure_2, g6pd_defect, 
                    antimal_2weeks, mps_present),
        by = anemia_cat,
        missing = "no",
        type = list(
            m_siblings ~ "continuous",
            c(do_you_own_itn, itn_previous_night) ~ "categorical"
            ),
        digits = list(
            gtsummary::all_categorical() ~ c(0,1),
            c(m_siblings, f_siblings) ~ 0,
            bodytemp ~ 1
            ),
        statistic = list(
            gtsummary::all_categorical()~ "{n}({p})",
            bodytemp ~ "{mean} ({sd})"
        )
    ) %>% 
    gtsummary::modify_spanning_header(
        gtsummary::all_stat_cols()~"**Anemia present**"
        ) %>% 
    gtsummary::add_overall() %>% 
    gtsummary::bold_labels() %>% 
    gtsummary::add_p(pvalue_fun = ~ gtsummary::style_pvalue(.x, digits = 3)) %>% 
    gtsummary::modify_caption("Table 8")|> 
    gtsummary::bold_p()
Table 8
Characteristic Overall
N = 4171
Anemia present
p-value2
No
N = 2061
Yes
N = 2111
Patient's Age (months) 15 (10, 29) 19 (11, 39) 13 (9, 21) <0.001
Body temperature 36.3 (0.3) 36.4 (0.3) 36.3 (0.3) 0.036
Weight-for-Age Category


0.082
    Normal 376(90.6) 190(93.1) 186(88.2)
    Underweight 39(9.4) 14(6.9) 25(11.8)
Height-for-Age Category


0.029
    Normal 374(89.9) 191(93.2) 183(86.7)
    Stunted 42(10.1) 14(6.8) 28(13.3)
Weight-for-Height Category


0.189
    Normal 380(91.8) 190(93.6) 190(90.0)
    Malnourished 34(8.2) 13(6.4) 21(10.0)
MUAC-for-Age Catofory


0.621
    Normal 366(88.0) 182(88.8) 184(87.2)
    Low MUAC 50(12.0) 23(11.2) 27(12.8)
BMI-for-Age Category


0.286
    Normal 376(90.6) 188(92.2) 188(89.1)
    Low BMI 39(9.4) 16(7.8) 23(10.9)
Paternal siblings 2 (0, 3) 1 (0, 3) 2 (0, 4) 0.051
Maternal siblings 1 (0, 3) 1 (0, 3) 2 (1, 3) 0.059
Do you own an ITN


0.694
    No 105(25.4) 50(24.5) 55(26.2)
    Yes 309(74.6) 154(75.5) 155(73.8)
ITN used the previous night


0.718
    No 194(46.5) 94(45.6) 100(47.4)
    Yes 223(53.5) 112(54.4) 111(52.6)
Malaaria preventive measure used


0.011
    ITN 294(70.5) 142(68.9) 152(72.0)
    Mosquito coil 54(12.9) 29(14.1) 25(11.8)
    Mosquito repellent 7(1.7) 4(1.9) 3(1.4)
    Mosquito spray 33(7.9) 23(11.2) 10(4.7)
    None 15(3.6) 2(1.0) 13(6.2)
    Others 14(3.4) 6(2.9) 8(3.8)
G6PD Defect


0.805
    Normal 364(87.3) 182(88.3) 182(86.3)
    Partial 16(3.8) 7(3.4) 9(4.3)
    Full 37(8.9) 17(8.3) 20(9.5)
antimal_2weeks 61(14.7) 26(12.7) 35(16.7) 0.244
mps_present 12(2.9) 1(0.5) 11(5.2) 0.004
1 Median (Q1, Q3); Mean (SD); n(%)
2 Wilcoxon rank sum test; Pearson’s Chi-squared test; Fisher’s exact test

Table 9

Show the code
df_complete %>% 
    gtsummary::tbl_summary(
        include = c(m_age, m_maristat2, m_educ, m_occup, m_income),
        by = anemia_cat,
        digits = list(
            gtsummary::all_categorical() ~ c(0,1)),
        statistic = gtsummary::all_categorical()~ "{n}({p})",
        missing = "no"
    ) %>% 
    gtsummary::modify_spanning_header(
        gtsummary::all_stat_cols()~"**Anemia Present**"
        ) %>% 
    gtsummary::add_overall() %>% 
    gtsummary::bold_labels() %>% 
    gtsummary::add_p(pvalue_fun = ~ gtsummary::style_pvalue(.x, digits = 3)) %>% 
    gtsummary::modify_caption("Table 9")|> 
    gtsummary::bold_p()
Table 9
Characteristic Overall
N = 4171
Anemia Present
p-value2
No
N = 2061
Yes
N = 2111
Mother's age (yrs) 29 (24, 35) 30 (24, 35) 28 (23, 34) 0.413
Mother's Marital Status


0.546
    Co-habitation 203(48.7) 96(46.6) 107(50.7)
    Married 163(39.1) 86(41.7) 77(36.5)
    Single 51(12.2) 24(11.7) 27(12.8)
Mother's educational level


0.013
    None 38(9.1) 20(9.7) 18(8.5)
    Primary 42(10.1) 19(9.2) 23(10.9)
    Jhs 233(55.9) 102(49.5) 131(62.1)
    Shs 68(16.3) 39(18.9) 29(13.7)
    Tertiary 36(8.6) 26(12.6) 10(4.7)
Mother's Occupation


0.102
    Business woman 10(2.4) 6(2.9) 4(1.9)
    Farmer 39(9.4) 13(6.3) 26(12.4)
    Government worker 37(8.9) 24(11.7) 13(6.2)
    Other 182(43.8) 87(42.2) 95(45.2)
    Petty trader 145(34.9) 75(36.4) 70(33.3)
    Private teacher 2(0.5) 1(0.5) 1(0.5)
    Student 1(0.2) 0(0.0) 1(0.5)
Mother's income (GHC) 100 (0, 300) 120 (0, 300) 100 (0, 300) 0.106
1 Median (Q1, Q3); n(%)
2 Wilcoxon rank sum test; Pearson’s Chi-squared test; Fisher’s exact test

Table 10

Show the code
df_complete %>% 
    gtsummary::tbl_summary(
        include = c(f_age, f_maristat2, f_educ, f_occup, f_income),
        by = anemia_cat,
        digits = list(
            gtsummary::all_categorical() ~ c(0,1)),
        missing = "no",
        statistic = gtsummary::all_categorical()~ "{n}({p})") %>% 
    gtsummary::modify_spanning_header(
        gtsummary::all_stat_cols()~"**Anemia Present**") %>% 
    gtsummary::add_overall() %>% 
    gtsummary::bold_labels() %>%
    gtsummary::add_p(pvalue_fun = ~ gtsummary::style_pvalue(.x, digits = 3)) %>%
    gtsummary::modify_caption("Table 10")|> 
    gtsummary::bold_p()
Table 10
Characteristic Overall
N = 4171
Anemia Present
p-value2
No
N = 2061
Yes
N = 2111
Father's age (years) 35 (29, 40) 35 (29, 40) 34 (29, 40) 0.467
Father's marital status


0.393
    Co-habitation 205(49.5) 96(46.8) 109(52.2)
    Married 162(39.1) 87(42.4) 75(35.9)
    Single 47(11.4) 22(10.7) 25(12.0)
Father's educational level


0.040
    JHS 151(36.2) 71(34.5) 80(37.9)
    None 32(7.7) 10(4.9) 22(10.4)
    Primary 44(10.6) 20(9.7) 24(11.4)
    SHS 120(28.8) 61(29.6) 59(28.0)
    Tertiary 70(16.8) 44(21.4) 26(12.3)
Father's occupation



    Business man 16(3.9) 12(5.8) 4(1.9)
    Business woman 1(0.2) 0(0.0) 1(0.5)
    Farmer 58(14.0) 24(11.7) 34(16.3)
    Government worker 64(15.4) 40(19.4) 24(11.5)
    Other 235(56.6) 110(53.4) 125(59.8)
    Petty trader 22(5.3) 12(5.8) 10(4.8)
    Student 1(0.2) 0(0.0) 1(0.5)
    farmer 10(2.4) 3(1.5) 7(3.3)
    o works with water company 1(0.2) 1(0.5) 0(0.0)
    petty trader 7(1.7) 4(1.9) 3(1.4)
Father's income (GHC) 400 (200, 1,000) 500 (200, 1,000) 300 (200, 800) 0.013
1 Median (Q1, Q3); n(%)
2 Wilcoxon rank sum test; Pearson’s Chi-squared test; NA
Show the code
df_complete %>% 
    gtsummary::tbl_summary(
        include = anemia_cat2,
        digits = anemia_cat2 ~ c(0,1), 
        label = list(anemia_cat2 ~ "Anemia Category")) %>% 
    gtsummary::bold_labels()
Characteristic N = 4181
Anemia Category
    None 206 (49.4%)
    Mild 121 (29.0%)
    Moderate 87 (20.9%)
    Severe 3 (0.7%)
    Unknown 1
1 n (%)
Show the code
gtsummary::theme_gtsummary_eda()
df_complete %>%
  gtsummary::tbl_summary(by = mps_present, include = age_mths)
Characteristic No
N = 406
Yes
N = 12
Patient's Age (months)

    Median (Q1, Q3) 15 (9, 29) 28 (11, 36)
    Mean (SD) 21 (15) 26 (15)
    Min, Max 6, 59 6, 49
Show the code
df_complete %>% 
  gtsummary::tbl_summary(
    by = anemia_cat2, 
    include = c(mps_present, anemia_cat2),
    label = list(
      mps_present ~ "Asymptomatic malaria")) %>% 
  gtsummary::add_overall(last = T) %>% 
  gtsummary::add_p() %>% 
  gtsummary::bold_labels()|> 
    gtsummary::bold_p()
1 missing row in the "anemia_cat2" column has been removed.
Characteristic None
N = 2061
Mild
N = 1211
Moderate
N = 871
Severe
N = 31
Overall
N = 4171
p-value2
Asymptomatic malaria 1 (0.49%) 6 (4.96%) 5 (5.75%) 0 (0%) 12 (2.88%) 0.013
1 n (%)
2 Fisher’s exact test
Show the code
gtsummary::reset_gtsummary_theme()
gtsummary::theme_gtsummary_compact()
Setting theme "Compact"
Show the code
df_complete %>% 
  gtsummary::tbl_summary(
    by = anemia_cat2, 
    include = c(age_mths, anemia_cat2),
    label = list(
      age_mths ~ "Age in Months")) %>% 
  gtsummary::add_overall(last = T) %>% 
  gtsummary::add_p() %>% 
  gtsummary::bold_labels()|> 
    gtsummary::bold_p()
1 missing row in the "anemia_cat2" column has been removed.
Characteristic None
N = 2061
Mild
N = 1211
Moderate
N = 871
Severe
N = 31
Overall
N = 4171
p-value2
Age in Months 19 (11, 39) 13 (9, 20) 13 (9, 23) 15 (8, 37) 15 (10, 29) <0.001
1 Median (Q1, Q3)
2 Kruskal-Wallis rank sum test

Logistic regression for anemia

Show the code
df_complete %>%
  select(
    age_mths, bodytemp, hfaz_cat, wfhz_cat, mal_prev_measure_2, 
    mps_present, anemia_cat, f_educ, f_income, m_educ) |> 
  gtsummary::tbl_uvregression(
        method = glm,
        y = anemia_cat,
        method.args = list(family = binomial),
        exponentiate = TRUE, 
        pvalue_fun = function(x) style_pvalue(x, digits = 3)) |>
    gtsummary::bold_labels() |> 
    gtsummary::bold_p()
Characteristic N OR 95% CI p-value
Patient's Age (months) 417 0.96 0.95, 0.98 <0.001
Body temperature 417 0.56 0.30, 1.02 0.058
Height-for-Age Category 416


    Normal
— —
    Stunted
2.09 1.08, 4.20 0.032
Weight-for-Height Category 414


    Normal
— —
    Malnourished
1.62 0.79, 3.40 0.192
Malaaria preventive measure used 417


    ITN
— —
    Mosquito coil
0.81 0.45, 1.44 0.466
    Mosquito repellent
0.70 0.14, 3.23 0.645
    Mosquito spray
0.41 0.18, 0.86 0.023
    None
6.07 1.64, 39.3 0.019
    Others
1.25 0.42, 3.87 0.691
mps_present 417


    No
— —
    Yes
11.3 2.16, 207 0.021
Father's educational level 417


    JHS
— —
    None
1.95 0.89, 4.57 0.107
    Primary
1.07 0.54, 2.10 0.855
    SHS
0.86 0.53, 1.39 0.533
    Tertiary
0.52 0.29, 0.93 0.029
Father's income (GHC) 416 1.00 1.00, 1.00 0.005
Mother's educational level 417


    None
— —
    Primary
1.35 0.56, 3.27 0.509
    Jhs
1.43 0.72, 2.86 0.311
    Shs
0.83 0.37, 1.84 0.639
    Tertiary
0.43 0.16, 1.11 0.085
Abbreviations: CI = Confidence Interval, OR = Odds Ratio