Malaria remains endemic in Nigeria despite programmes and polices put in place toward malaria elimination. Long-lasting insecticidal nets have been documented to offer protection from malaria by preventing mosquito bites.

The data for this study were derived from a household survey conducted in some northern states (Bauchi, Kaduna, Kano and Katsina) in Nigeria.

HUGOMORE42

Loading packages for analysis

library(dplyr)
library(readr)
library(stringr)
library(highcharter)
library(here)

Import the datasets into the R environments - sms_reponse - baseline_characteristics

sms_response <- read_csv("data/bed_nets_report/sms_responses.csv")
head(sms_response)
## # A tibble: 6 x 4
##   `Phone Number` sms1_malaria sms2_bednets sms3_u5risk
##   <chr>          <chr>        <chr>        <chr>      
## 1 08078830244    YES          NO           NO         
## 2 07064554275    NO           YES          NO         
## 3 09023849871    NO           NO           YES        
## 4 09097554751    NO           NO           NO         
## 5 09028304719    YES          NO           NO         
## 6 08098551781    YES          YES          YES
baseline <- read_csv("data/bed_nets_report/baseline_characteristics.csv")
head(baseline)
## # A tibble: 6 x 12
##   `Study ID` `Phone Number`   Age   Sex Occupation State Residence
##   <chr>      <chr>          <dbl> <dbl>      <dbl> <dbl>     <dbl>
## 1 4575-0311  08027996438       43     1          3     2         1
## 2 0351-2753  09082171899       53     0          2     4         2
## 3 0462-4993  07057256620       31     1          4     2         1
## 4 0693-7268  09010582345       35     0          4     2         1
## 5 0695-7737  09065763104       31     0          3     2         2
## 6 1155-2864  07034889524       34     0          3     4         1
## # ... with 5 more variables: `# of children < 5 in HH` <dbl>,
## #   Education <dbl>, Ethnicity <dbl>, `Marital Status` <dbl>, `Bednet
## #   Ownership` <dbl>

Bed Nets Report Data Wrangling using some Tidyverse verbs: left join, mutate, str_to_title, recode

sms_baseline_joined <- baseline %>% 
  left_join(sms_response, by = "Phone Number")
glimpse(sms_baseline_joined)
## Observations: 53
## Variables: 15
## $ `Study ID`                <chr> "4575-0311", "0351-2753", "0462-4993...
## $ `Phone Number`            <chr> "08027996438", "09082171899", "07057...
## $ Age                       <dbl> 43, 53, 31, 35, 31, 34, 46, 56, 22, ...
## $ Sex                       <dbl> 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, ...
## $ Occupation                <dbl> 3, 2, 4, 4, 3, 3, 2, 3, 4, 5, 6, 5, ...
## $ State                     <dbl> 2, 4, 2, 2, 2, 4, 1, 0, 1, 2, 1, 3, ...
## $ Residence                 <dbl> 1, 2, 1, 1, 2, 1, 2, 1, 2, 1, 2, 2, ...
## $ `# of children < 5 in HH` <dbl> 5, 3, 7, 3, 3, 6, 4, 3, 2, 3, 3, 3, ...
## $ Education                 <dbl> 0, 1, 0, 0, 0, 1, 0, 2, 0, 0, 0, 1, ...
## $ Ethnicity                 <dbl> 1, 2, 2, 1, 2, 1, 1, 1, 2, 5, 1, 2, ...
## $ `Marital Status`          <dbl> 5, 1, 5, 2, 1, 2, 3, 5, 4, 4, 2, 3, ...
## $ `Bednet Ownership`        <dbl> 2, 1, 1, 2, 1, 2, 1, 1, 2, 1, 1, 1, ...
## $ sms1_malaria              <chr> "NO", "NO", "YES", "YES", "YES", "NO...
## $ sms2_bednets              <chr> "YES", "YES", "NO", "YES", "NO", "NO...
## $ sms3_u5risk               <chr> "YES", "YES", "NO", "YES", "NO", "NO...

Using the mutate and recode verb to clean the joined data

response <- sms_baseline_joined %>% 
  mutate(Sex = recode(Sex, `0` = "Male", `1` = "Female", .other = "Wrong Input")) %>% 
  mutate(Residence = recode(Residence, `1` = "Urban", `2` = "Kano", `3` = "Bauchi", `4` = "Kaduna", .other = "Wrong Input")) %>% 
  mutate(`Marital Status` = recode(`Marital Status`, `1` = "Yes", `2` = "No", .other = "Wrong Input")) %>% 
  mutate(Occupation = recode(Occupation, `1` = "Doctor", `2` = "Nurse", `3` = "Midwife", `4` = "Lab Technician", `5` = "Community Health Worker", `6` = "Other", .other = "Wrong Input")) %>% 
  mutate(State = recode(State, `1` = "Katsina", `2` = "Kano", `3` = "Bauchi", `4` = "Kaduna", .other = "Wrong Input"))

glimpse(response)
## Observations: 53
## Variables: 15
## $ `Study ID`                <chr> "4575-0311", "0351-2753", "0462-4993...
## $ `Phone Number`            <chr> "08027996438", "09082171899", "07057...
## $ Age                       <dbl> 43, 53, 31, 35, 31, 34, 46, 56, 22, ...
## $ Sex                       <chr> "Female", "Male", "Female", "Male", ...
## $ Occupation                <chr> "Midwife", "Nurse", "Lab Technician"...
## $ State                     <chr> "Kano", "Kaduna", "Kano", "Kano", "K...
## $ Residence                 <chr> "Urban", "Kano", "Urban", "Urban", "...
## $ `# of children < 5 in HH` <dbl> 5, 3, 7, 3, 3, 6, 4, 3, 2, 3, 3, 3, ...
## $ Education                 <dbl> 0, 1, 0, 0, 0, 1, 0, 2, 0, 0, 0, 1, ...
## $ Ethnicity                 <dbl> 1, 2, 2, 1, 2, 1, 1, 1, 2, 5, 1, 2, ...
## $ `Marital Status`          <chr> NA, "Yes", NA, "No", "Yes", "No", NA...
## $ `Bednet Ownership`        <dbl> 2, 1, 1, 2, 1, 2, 1, 1, 2, 1, 1, 1, ...
## $ sms1_malaria              <chr> "NO", "NO", "YES", "YES", "YES", "NO...
## $ sms2_bednets              <chr> "YES", "YES", "NO", "YES", "NO", "NO...
## $ sms3_u5risk               <chr> "YES", "YES", "NO", "YES", "NO", "NO...
response$sms3_u5risk <- str_to_title(response$sms3_u5risk)
response$sms1_malaria <- str_to_title(response$sms1_malaria)
response$sms2_bednets <- str_to_title(response$sms2_bednets)

Respondents’ Distribution by Gender

  • Of the 53 respondents’ that replied the SMS questions, 31 were Male whereas 22 were female.
gender <- response %>% 
  count(Sex, sort = TRUE) %>% 
  as.data.frame(gender)

##Creating charts with highcharter

highchart() %>% 
  hc_add_series(gender, "pie", hcaes(name = Sex, y = n),
                name = "Count") %>% 
  hc_title(text = "Respondent's Distribution by Gender", 
           margin = 20, align = "left", style = list(color = "darkblue", useHTML = TRUE))
## Warning: `parse_quosure()` is deprecated as of rlang 0.2.0.
## Please use `parse_quo()` instead.
## This warning is displayed once per session.

### Respondents’ Distribution by Age

  • The average age of the respondents’ was about 45 years with standard deviation of about 49 years.
  • 19 years and 339 years were the minimum and maximum respectively.
  • The distribution is as represented by the Histogram.

  • There’s an indication of an outlier in the respondents’ age as shown in the histogram.

hchart(response$Age, color = "black", name = "Age") %>% 
  hc_title(text = "Respondents' Distribution by Age", 
           margin = 20, align = "left", 
           style = list(color = "darkblue", useHTML = TRUE))

### Respondents’ Distribution by Occupation

  • 14 of the respondents’ were Midwives, 10 were Nurses, 10 were Lab Technician, 8 were Doctors and 6 were Community Health Worker.
  • 3 respondent’s occupation was not in the listed in the survey and 2 wrong inputs were observed as these does not match any of the occupation type code.
occupation <- response %>% 
  group_by(Occupation) %>% 
  count(Occupation) %>% 
  as.data.frame()

occupation[is.na(occupation$Occupation), "Occupation"] <- "Wrong Input"

hchart(occupation, "column", hcaes(x = Occupation, y = n), name = "Count",
       colorByPoint = TRUE) %>% 
  hc_xAxis(title = list(text = "Occupation")) %>% 
  hc_yAxis(title = list(text = "Frequency")) %>% 
  hc_title(text = "Respondents' Distribution by Occupation",
           margin = 20, align = "left",
           style = list(color = "darkblue", useHTML = TRUE))

### Respondents’ Distribution by Marital Status

  • Considering the marital status of the respondents’, 9 were married and 8 widowed. The bar chart represent the distribution of the respondents’ by marital status.
marital_status <- response %>% 
  group_by(`Marital Status`) %>% 
  count(`Marital Status`, sort = TRUE) %>% 
  as.data.frame()

hchart(marital_status, "column", hcaes(x = `Marital Status`, y = n), name  = "Count",
       colorByPoint = TRUE) %>% 
  hc_xAxis(title = list(text = "Marital Status")) %>% 
  hc_yAxis(title = list(text = "Frequency")) %>% 
  hc_title(text = "Respondents' Distribution by Occupation",
           margin = 20, align = "left",
           style = list(color = "darkblue", useHTML = TRUE))

Respondents’ Distribution by Bed Net Ownership

  • Overall, about 80% of the respondents’ opined that they have bed net.
  • However, about 79% (12) of the respondents’ from Kano opined that they have bed net.
  • 35% (2) of the respondents’ from Kaduna opined they do not have bed net.
  • The distribution of the respondents’ opinion on bed net ownership in relation to state is as represented by the bar chart.
bednet <- response %>% 
  count(`Bednet Ownership`, State, sort = TRUE) %>% as.data.frame()

bednet[is.na(bednet$State), "State"] <- "Wrong Input"

names(bednet) <- c("Response", "State", "Frequency")

hchart(bednet, "column", hcaes(x = State, y = Frequency, group = Response)) %>% 
  hc_xAxis(title = list(text = "State")) %>% 
  hc_yAxis(title = list(text = "Frequency")) %>% 
  hc_title(text = "Respondents' Distribution by Bed Net Ownership", 
           margin = 20, align = "left",
           style = list(color = "darkblue", useHTML = TRUE))

### Respondents’ Distribution by Number of Children With Age Less Than 5

  • On the average, there are about 3 (standard deviation of about 2) children with age less than 5 in the respondents’ household.
  • Also 0 and 7 are the minimum and maximum number of children with age less than 5 in the respondents’ household.
  • As illustrated in the histogram, there seems to be an outlier as the maximum age is expected to be less than 5.
hchart(response$`# of children < 5 in HH`, color = "black", name = "Age") %>% 
  hc_title(text = "Respondents' Distribution by Number of Children With Age Less Than 5", 
           margin = 20, align = "left", 
           style = list(color = "darkblue", useHTML = TRUE))

Analysis of Key Research Question 1

  • Overall, more than 50% of the respondents’ opined that malaria is a problem in their community.
  • About 65% of the respondents’ from Kano state opined yes to sms1_malaria i.e. Malaria is a problem in my community question.
  • On the other hand, about 59% of the respondents’ from Katsina opined no to the same question.
sms1QuestionByState <- response %>% 
  count(sms1_malaria, State, sort = TRUE)
sms1QuestionByState_df = as.data.frame(sms1QuestionByState)
sms1QuestionByState_df
##    sms1_malaria   State n
## 1           Yes    Kano 9
## 2            No Katsina 7
## 3            No    Kano 5
## 4           Yes Katsina 5
## 5          <NA>  Bauchi 5
## 6           Yes  Kaduna 4
## 7            No  Bauchi 3
## 8            No  Kaduna 3
## 9           Yes  Bauchi 3
## 10         <NA> Katsina 3
## 11         <NA>  Kaduna 2
## 12         <NA>    Kano 2
## 13           No    <NA> 1
## 14         <NA>    <NA> 1
names(sms1QuestionByState_df) <- c("Response", "State", "Frequency")


hchart(sms1QuestionByState_df, "column", hcaes(x = State, y = Frequency, group = Response)) %>% 
  hc_xAxis(title = list(text = "State")) %>% 
  hc_yAxis(title = list(text = "Frequency"))

Analysis of Key Research Question 2

  • Overall, about 60% of the respondents’ opined that bed net cannot prevent malaria in their community.
  • About 65% of the respondents’ from Kano state opined no to sms2_bednets i.e. In my community, bed nets can prevent malaria question.
  • On the other hand, about 67% of the respondents’ from Bauchi opined yes to the same question.
sms2QuestionByState <- response %>% 
  count(sms2_bednets, State, sort = TRUE)
sms2QuestionByState_df = as.data.frame(sms2QuestionByState)
names(sms2QuestionByState_df) <- c("Response", "State", "Frequency")

hchart(sms2QuestionByState_df, "column", hcaes(x = State, y = Frequency, group = Response)) %>% 
  hc_xAxis(title = list(text = "State")) %>% 
  hc_yAxis(title = list(text = "Frequency"))

### Analysis of Key Research Question 3

  • Overall about 68% of the respondents’ opined that children less than 5 years are not most at risk for malaria in their community.
  • More than 70% of the respondents’ from Kano state opined no to sms3_u5risk i.e. Children < 5 are most at risk for malaria in my community question.
  • However, about 42% of the respondents’ from Katsina opined yes to the same question.
sms3QuestionByState <- response %>% 
  count(sms3_u5risk, State, sort = TRUE)
sms3QuestionByState_df = as.data.frame(sms3QuestionByState)
names(sms3QuestionByState_df) <- c("Response", "State", "Frequency")

hchart(sms3QuestionByState_df, "column", hcaes(x = State, y = Frequency, group = Response)) %>% 
  hc_xAxis(title = list(text = "State")) %>% 
  hc_yAxis(title = list(text = "Frequeny"))

### Conclusion

  • Going by the evidences gathered from the study, it could be concluded that malaria is still a problem in the study area (Bauchi, Kaduna, Kano and Katsina).
  • On the other hand, bed nets cannot prevent malaria and children of age less than 5 are not the most risk to malaria. ```

blogdown::new_post(title = “Bed nets report”, ext = getOption(“blogdown.ext”, “.Rmd”))