Modélisation de la prévalence du paludisme par des facteurs météorologiques à effets décalés dans les régions Nord et Extrême-nord du Cameroun de 2015 à 2024.

Authors
Affiliation

Samuel Beneteau

Indépendant

Abas Mouliom

Published

September 1, 2024

Show the code
library(dplyr)
library(readxl)
library(data.table)
library(forcats)
library(lubridate)
library(ggplot2)
library(kableExtra)
library(sjPlot)
library(gtsummary)
library(dlnm)
library(sf)
library(geodata)
library(ggspatial)
library(splines)
library(gam)
library(mgcv)
library(performance)
library(hrbrthemes)
library(prophet)

1 Methods

1.1 Cases data

Show the code
dt.nord <- read_excel("data/raw/Données Nord/Base PNLP Nord 2015-2022 Final.xlsx")
dt.nord <- as.data.table(dt.nord)

dt.nord <- dt.nord[, .(year = Annee,
                       region = `Region_dhis`,
                       district = `District_dhis`,
                       period = `Numero_mois`,
                       case.sim.tdr = `PNLP_13. Nombre de cas de paludisme simple avec TDR positif PALU_<5ans`,
                       case.gra.tdr = `PNLP_15. Nombre de cas de paludisme grave avec TDR positif PALU_<5ans`,
                       case.sim.ge = `PNLP_14. Nombre de cas de paludisme simple avec goutte epaisse (GE) positive PALU_<5ans`,
                       case.gra.ge = `PNLP_a19. Nombre de cas de paludisme grave avec Goutte Epaisse (GE) positive PALU_<5ans`,
                       consult = `PNLP_07. Nombre total de consultations pour maladie (toutes causes confondues) PALU_<5ans`,
                       death = `PNLP_35. Nombre de personnes decedees pour paludisme confirme PALU_<5ans`
)
]
Show the code
dt.extnord.2015 <- read_excel("data/raw/Données Extrême-nord/BD PNLP CMR 2015.xlsx") %>% 
  
  as.data.table %>% 
  
  .[, .(
    region = Region,
    district = District,
    period = MOIS,
    case.sim.tdr = `Nombre de cas de paludisme simple avec TDR positif < 5 ans`,
    case.gra.tdr = `Nombre de cas de paludisme grave avec TDR positif < 5 ans`,
    case.sim.ge = `Nombre de cas de paludisme simple avec goutte épaisse (GE) positive < 5 ans`,
    case.gra.ge = `Nombre de cas de paludisme grave avec goutte épaisse (GE) positive < 5 ans`,
    consult = `Nombre total de consultations pour maladie (toutes causes confondues)  < 5 ans`,
    death = `Nombre de personnes décédées pour paludisme confirmé < 5 ans`
  )]


dt.extnord.2016 <- read_excel("data/raw/Données Extrême-nord/BD PNLP CMR 2016.xlsx") %>% 
  
  as.data.table %>% 
  
  .[, .(
    region = Region,
    district = District,
    period = MOIS,
    case.sim.tdr = `Nombre de cas de paludisme simple avec TDR positif < 5 ans`,
    case.gra.tdr = `Nombre de cas de paludisme grave avec TDR positif < 5 ans`,
    case.sim.ge = `Nombre de cas de paludisme simple avec goutte épaisse (GE) positive < 5 ans`,
    case.gra.ge = `Nombre de cas de paludisme grave avec goutte épaisse (GE) positive < 5 ans`,
    consult = `Nombre total de consultations pour maladie (toutes causes confondues)  < 5 ans`,
    death = `Nombre de personnes décédées pour paludisme confirmé < 5 ans`
  )]


dt.extnord.2017 <- read_excel("data/raw/Données Extrême-nord/BD PNLP CMR 2017.xlsx") %>% 
  
  as.data.table %>% 
  
  .[, .(
    region = Region,
    district = District,
    period = MOIS,
    case.sim.tdr = `Nombre de cas de paludisme simple avec TDR positif < 5 ans`,
    case.gra.tdr = `Nombre de cas de paludisme grave avec TDR positif < 5 ans`,
    case.sim.ge = `Nombre de cas de paludisme simple avec goutte épaisse (GE) positive < 5 ans`,
    case.gra.ge = `Nombre de cas de paludisme grave avec goutte épaisse (GE) positive < 5 ans`,
    consult = `Nombre total de consultations pour maladie (toutes causes confondues)  < 5 ans`,
    death = `Nombre de personnes décédées pour paludisme confirmé < 5 ans`
  )]


dt.extnord.2018 <- read_excel("data/raw/Données Extrême-nord/BD PNLP CMR 2018.xlsx") %>% 
  
  as.data.table %>% 
  
  .[, .(
    region = Region,
    district = District,
    period = MOIS,
    case.sim.tdr = `Nombre de cas de paludisme simple avec TDR positif < 5 ans`,
    case.gra.tdr = `Nombre de cas de paludisme grave avec TDR positif < 5 ans`,
    case.sim.ge = `Nombre de cas de paludisme simple avec goutte épaisse (GE) positive < 5 ans`,
    case.gra.ge = `Nombre de cas de paludisme grave avec goutte épaisse (GE) positive < 5 ans`,
    consult = `Nombre total de consultations pour maladie (toutes causes confondues) < 5 ans`,
    death = `Nombre de personnes décédées pour paludisme confirmé < 5 ans`
  )]


dt.extnord.2019 <- read_excel("data/raw/Données Extrême-nord/BASE 2019.xls") %>% 
  
  as.data.table %>% 
  
  .[, .(
    region = orgunitlevel1,
    district = orgunitlevel2,
    period = periodname,
    case.sim.tdr = `PNLP_13. Nombre de cas de paludisme simple avec TDR positif PALU_<5ans`,
    case.gra.tdr = `PNLP_18. Nombre de cas de paludisme grave avec TDR positif PALU_<5ans`,
    case.sim.ge = `PNLP_14. Nombre de cas de paludisme simple avec goutte epaisse (GE) positive PALU_<5ans`,
    case.gra.ge = `PNLP_17. Nombre total de cas d’hospitalisation pour paludisme grave confirmé par microscopie (Gouttes Epaisses) PALU_<5ans`,
    consult = `PNLP_07. Nombre total de consultations pour maladie (toutes causes confondues) PALU_<5ans`,
    death = `PNLP_35. Nombre de personnes decedees pour paludisme confirme PALU_<5ans`
  )]


dt.extnord.2020 <- read_excel("data/raw/Données Extrême-nord/BD PNLP CMR 2020.xlsx") %>%
  
  as.data.table %>%
  
  .[, .(
    region = Region,
    district = District,
    period = periodname,
    case.sim.tdr = `PNLP_13. Nombre de cas de paludisme simple avec TDR positif PALU_<5ans`,
    case.gra.tdr = `PNLP_18. Nombre de cas de paludisme grave avec TDR positif PALU_<5ans`,
    case.sim.ge = `PNLP_14. Nombre de cas de paludisme simple avec goutte epaisse (GE) positive PALU_<5ans`,
    case.gra.ge = `PNLP_17. Nombre total de cas d’hospitalisation pour paludisme grave confirmé par microscopie (Gouttes Epaisses) PALU_<5ans`,
    consult = `PNLP_07. Nombre total de consultations pour maladie (toutes causes confondues) PALU_<5ans`,
    death = `PNLP_35. Nombre de personnes decedees pour paludisme confirme PALU_<5ans`
  )]


dt.extnord.2021 <- read_excel("data/raw/Données Extrême-nord/Base 2021.xls") %>%
  
  as.data.table %>%
  
  .[, .(
    region = orgunitlevel1,
    district = orgunitlevel2,
    period = periodname,
    case.conf = `PNLP_Cas de paludisme confirmés (-5 ans)`,
    consult = `PNLP_07. Nombre total de consultations pour maladie (toutes causes confondues) PALU_<5ans`,
    death = `PNLP_35. Nombre de personnes decedees pour paludisme confirme PALU_<5ans`
  )]


dt.extnord.2022 <- read_excel("data/raw//Données Extrême-nord/Base 2022.xlsx") %>%
  
  as.data.table %>%
  
  .[, .(
    region = orgunitlevel1,
    district = orgunitlevel2,
    period = periodname,
    case.sim.tdr = `PNLP_13. Nombre de cas de paludisme simple avec TDR positif PALU_<5ans`,
    case.gra.tdr = `PNLP_16. Nombre total de cas d’hospitalisation pour paludisme grave confirmé par TDR PALU_<5ans`,
    case.sim.ge = `PNLP_14. Nombre de cas de paludisme simple avec goutte epaisse (GE) positive PALU_<5ans`,
    case.gra.ge = `PNLP_17. Nombre total de cas d’hospitalisation pour paludisme grave confirmé par microscopie (Gouttes Epaisses) PALU_<5ans`,
    consult = `PNLP_07. Nombre total de consultations pour maladie (toutes causes confondues) PALU_<5ans`,
    death = `PNLP_35. Nombre de personnes decedees pour paludisme confirme PALU_<5ans`
  )]


dt.extnord <- list(dt.extnord.2015, dt.extnord.2016, dt.extnord.2017,
                   dt.extnord.2018, dt.extnord.2019, dt.extnord.2020,
                   dt.extnord.2021, dt.extnord.2022)

names(dt.extnord) <- 2015:2022

dt.extnord <- dt.extnord %>% rbindlist(idcol = "year", fill = T)

dt.extnord <- dt.extnord[region %in% c("EXTREME-NORD", "Region Extreme Nord", "Region Extreme-Nord")]

dt.extnord[, region := region %>% factor %>%
             fct_collapse("Region Extreme Nord" = c("EXTREME-NORD", "Region Extreme-Nord"))]
Show the code
dt.inc <- rbind(dt.nord, dt.extnord, fill=T) # Merge des fichiers nord et extreme nord

rm(dt.nord, dt.extnord.2015, dt.extnord.2016, dt.extnord.2017, dt.extnord.2018,
   dt.extnord.2019, dt.extnord.2020, dt.extnord.2021, dt.extnord.2022)
Show the code
#dt.inc %>% sapply(table)
# Recoding district
dt.inc[, district := sub("District ", "", district)]

dt.inc[, district := paste0(toupper(district %>% substr(1, 1)),
                            substr(district, 2, nchar(district)) %>% tolower)]

dt.inc[district == "Garoua i", district := "Garoua 1"]
dt.inc[district == "Garoua ii", district := "Garoua 2"]
dt.inc[district == "Fokotol", district := "Makary"]
dt.inc[district == "Mozogo", district := "Koza"]

# Recoding months
dt.inc[, month := period %>% tstrsplit(" ", keep = 1)]

dt.inc$period <- NULL

dt.inc[, month := month %>% tolower %>% as.factor]

dt.inc[, month := month %>% fct_collapse(
  "1" = "janvier",
  "2" = c("fevrier", "février"),
  "3" = "mars",
  "4" = "avril",
  "5" = "mai",
  "6" = "juin",
  "7" = "juillet",
  "8" = c("aout", "août"),
  "9" = "septembre",
  "10" = "octobre",
  "11" = "novembre",
  "12" = c("decembre", "décembre"))
]

dt.inc[, month := month %>% factor(level = 1:12) %>% as.integer]
dt.inc[, year := year %>% as.integer]

# Computing confirmed cases when not provided directly
dt.inc[is.na(case.sim.tdr), case.sim.tdr := 0]
dt.inc[is.na(case.gra.tdr), case.gra.tdr := 0]
dt.inc[is.na(case.sim.ge), case.sim.ge := 0]
dt.inc[is.na(case.gra.ge), case.gra.ge := 0]

dt.inc[is.na(case.conf), case.conf := case.sim.tdr + case.gra.tdr + case.sim.ge + case.gra.ge]
Show the code
dt.inc <- dt.inc[, lapply(.SD, sum, na.rm=T), by = .(region, district, year, month)]
Show the code
dt.study <- data.table(
  period = seq(as.Date("2015-01-31"), as.Date("2022-12-31"), by = "day")
)

dt.study[, c("year", "month") := list(period %>% year, period %>% month)]

dt.study <- dt.study[, .(date = period %>% max), by = .(year, month)]

dt.study <- dt.study[, .(district =  dt.inc$district %>% unique), by = .(year, month, date)]

dt.study <- dt.inc[, .(region, district)] %>% unique %>% .[dt.study, on="district"]

dt.inc <- dt.inc[dt.study, on=c("district", "year", "month", "region")]

Pour certains mois et certains districts, le nombre de cas confimés était manquant.

Show the code
dt.inc %>%
  ggplot(aes(date, district, fill= case.conf >= 0)) + 
  geom_tile() +
  theme_ipsum() +
  theme(legend.position="none") +
  facet_wrap(~region, scales="free")
Figure 1: Périodes manquantes par district et par année.

Sur la région Nord, les mois de novembre et décembre 2022 n’ont pas été renseignés pour l’ensemble des districts. A l’Extreme Nord, le district de Fotokol n’existe que depuis 2019 et plusieurs mois consécutifs peuvent être manquants en 2018 pour certains districts.

Show the code
dt.inc <- dt.inc[!(district=="Fotokol" & year %in% 2015:2018)]
Show the code
fig.comp <- dt.inc[, .(
  tot = .N,
  N = case.conf %>% is.na %>% sum
  ),
  by=.(region, year, date)
  ]

fig.comp[, prop := N / tot * 100]

La figure ci-dessous montre la proportion de districts non renseignés pour chaque mois de la période d’étude.

Show the code
fig.comp[order(region, date)] %>%
  ggplot(aes(x = date, y=prop, color=region)) + 
  geom_line() +
  ylab("Proportion of missing district")
Figure 2: Proportion de districts renseignés par mois et par année.

Nous avons estimé les données manquantes pour ces districts à l’aide du package prophet (Taylor and Letham 2021).

Show the code
miss.district <- dt.inc[is.na(case.conf)]$district %>% unique

dt.miss.pred <- miss.district %>%
  lapply(function(x){
    dt.prophet <- dt.inc[district == x, .(ds = date, y = case.conf)]
    m <- dt.prophet %>% prophet()
    future <- data.frame(ds = dt.inc[district == x & is.na(case.conf)]$date)
    forecast <- predict(m, future)
  })

names(dt.miss.pred) <- miss.district

dt.miss.pred <- dt.miss.pred %>% rbindlist(idcol="district")

dt.miss.pred <- dt.miss.pred[, .(district, date = ds %>% as.Date, miss.case.conf = yhat)]
Show the code
dt.inc <- dt.miss.pred[dt.inc, on=c("district", "date")]

dt.inc[is.na(case.conf), case.conf := miss.case.conf]

Certaines valeurs prédites par le modèle étant négatives, nous leurs avons attribué la valeur 0.

Show the code
#dt.inc$miss.case.conf %>% hist

dt.inc[miss.case.conf < 0, case.conf := 0]

1.2 Population data

Les données de populations utilisées sont :

  • Les données de population par région pour les années 2016 à 2024 proviennent des “Projections démographiques et estimations des cibles prioritaires des différents programmes et interventions de santé, 2016” du Ministère de la Santé Publique du Cameroun.

  • Les données de population par district pour les années 2020, 2023 and 2024 proviennent des “Populations cibles prioritaires” du Ministère de la Santé Publique du Cameroun.

Show the code
dt.pop <- fread("data/raw/population/population.csv")

dt.pop.proj <- fread("data/raw/population/population_projection.csv")

Ici, nous calculons la différence entre les deux sources pour les années 2020, 2023 et 2024:

Show the code
dt.check <- dt.pop[, .(pop = pop %>% sum), by=.(region, year)]

dt.check <- dt.check[dt.pop.proj, on=c("region", "year")]

dt.check[, err := (pop - pop_proj) / pop]

dt.check[!is.na(err)]%>% kable %>% kable_styling
region year pop pop_proj err
Region Extreme Nord 2020 964905 945117 0.0205077
Region Extreme Nord 2023 1031869 1038499 -0.0064252
Region Extreme Nord 2024 1071308 1068356 0.0027555
Region Nord 2020 551447 550954 0.0008940
Region Nord 2023 586613 611112 -0.0417635
Region Nord 2024 608934 629269 -0.0333944

Nous constatons une erreur de moins de 5% pour chaque année entre les deux sources.

Pour l’année 2015, nous avons estimé la population par un régression linéaire simple en se basant sur les données de projection par région de 2016 à 2024:

Show the code
ggplot(dt.pop.proj, aes(year, pop_proj, color = region)) + 
  geom_point() + 
  geom_smooth(method = lm, se = T) +
  ylab("Projected population")

Résultat du modèle d’estimation pour la région Extrême Nord :

Show the code
lm.ext.nord <- lm(pop_proj ~ year, data=dt.pop.proj[region == "Region Extreme Nord"])

lm.ext.nord %>% tab_model
  pop_proj
Predictors Estimates CI p
(Intercept) -62490411.78 -63130449.81 – -61850373.75 <0.001
year 31403.27 31086.42 – 31720.12 <0.001
Observations 9
R2 / R2 adjusted 1.000 / 1.000
Show the code
dt.pred <- data.table(year = 2015)

dt.pred[, "Region Extreme Nord" := predict(lm.ext.nord, newdata = dt.pred)]

Résultat du modèle d’estimation pour la région Nord :

Show the code
lm.nord <- lm(pop_proj ~ year, data=dt.pop.proj[region == "Region Nord"])

lm.nord %>% tab_model
  pop_proj
Predictors Estimates CI p
(Intercept) -40946931.44 -42127325.17 – -39766537.72 <0.001
year 20542.78 19958.43 – 21127.14 <0.001
Observations 9
R2 / R2 adjusted 0.999 / 0.999
Show the code
dt.pred[, "Region Nord" := predict(lm.nord, newdata = dt.pred)]
Show the code
dt.pred <- dt.pred %>% melt(id.vars = "year",
                            variable.name = "region",
                            value.name = "pop_proj"
)
Show the code
dt.pop.proj <- rbind(dt.pred, dt.pop.proj)

Ensuite, nous avons calculé la proportion médiane de population par district à partir des années 2020, 2023, 2024.

Show the code
pop.agg <- dt.pop[, .(tot = pop %>% sum), by=.(region, year)]

dt.pop <- pop.agg[dt.pop, on=c("region", "year")]

dt.pop[, prop := pop / tot]

dt.pop.rep <- dt.pop %>% dcast(region + district ~ year, value.var="prop")

dt.pop.rep[, prop.med := apply(dt.pop.rep[, .(`2020`, `2023`, `2024`)], 1, median, na.rm=T)]

#dt.pop.rep %>% kable %>% kable_styling

Ces proportions ont été utilisées pour calculer la population par district pour les autres années.

Show the code
dt.pop <- dt.pop.rep[, .(region, district, prop.med)][dt.pop.proj, on="region", allow.cartesian=T]

dt.pop[, pop := pop_proj * prop.med]

dt.pop <- dt.pop[, .(year, region, district, pop)]
Show the code
dt.pop %>%
  dcast(region + district ~ year, value.var="pop") %>%
  .[, lapply(.SD, ceiling), by = .(region, district)] %>%
  kable %>% kable_styling
Table 1: Populations estimées par district et par année.
region district 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
Region Extreme Nord Bogo 19604 20394 21157 21911 22743 23538 24321 25099 25864 26607
Region Extreme Nord Bourha 13375 13914 14434 14948 15516 16058 16592 17123 17645 18152
Region Extreme Nord Fotokol 11175 11625 12060 12489 12964 13417 13863 14307 14743 15166
Region Extreme Nord Gazawa 12307 12803 13282 13755 14277 14777 15268 15756 16237 16703
Region Extreme Nord Goulfey 19169 19941 20687 21424 22237 23015 23780 24541 25289 26016
Region Extreme Nord Guere 22330 23229 24098 24956 25904 26810 27701 28588 29459 30306
Region Extreme Nord Guidiguis 29477 30665 31813 32945 34196 35392 36569 37739 38889 40007
Region Extreme Nord Hina 21963 22848 23703 24547 25479 26370 27247 28119 28975 29809
Region Extreme Nord Kaele 19184 19957 20704 21441 22255 23033 23799 24561 25309 26037
Region Extreme Nord Kar hay 22123 23014 23875 24725 25664 26561 27445 28323 29186 30025
Region Extreme Nord Kolofata 19654 20446 21211 21966 22800 23598 24382 25162 25929 26674
Region Extreme Nord Kousseri 64335 66926 69431 71903 74634 77243 79812 82366 84875 87316
Region Extreme Nord Koza 15641 16271 16880 17481 18145 18779 19403 20024 20634 21227
Region Extreme Nord Mada 26549 27619 28653 29673 30800 31876 32936 33990 35026 36033
Region Extreme Nord Maga 31951 33239 34483 35710 37067 38362 39638 40906 42153 43365
Region Extreme Nord Makary 21619 22490 23332 24162 25080 25957 26820 27678 28522 29342
Region Extreme Nord Maroua 1 31883 33167 34409 35634 36987 38280 39553 40819 42063 43272
Region Extreme Nord Maroua 2 32948 34275 35558 36824 38222 39559 40874 42182 43467 44717
Region Extreme Nord Maroua 3 28866 30029 31153 32262 33487 34658 35810 36956 38082 39177
Region Extreme Nord Meri 27791 28910 29992 31060 32240 33367 34476 35579 36664 37718
Region Extreme Nord Mindif 9563 9948 10320 10688 11094 11482 11863 12243 12616 12979
Region Extreme Nord Mogode 20522 21349 22148 22936 23807 24640 25459 26274 27074 27853
Region Extreme Nord Mokolo 49488 51481 53408 55309 57410 59417 61393 63357 65288 67165
Region Extreme Nord Mora 49207 51189 53105 54996 57085 59081 61045 62998 64918 66784
Region Extreme Nord Moulvoudaye 24648 25641 26601 27548 28594 29594 30578 31557 32518 33453
Region Extreme Nord Moutourwa 9075 9440 9794 10142 10527 10895 11258 11618 11972 12316
Region Extreme Nord Mozogo 14027 14592 15138 15677 16273 16842 17401 17958 18505 19038
Region Extreme Nord Pette 10135 10544 10938 11328 11758 12169 12573 12976 13371 13755
Region Extreme Nord Roua 16122 16771 17399 18019 18703 19357 20000 20640 21269 21881
Region Extreme Nord Tokombere 24333 25313 26260 27195 28228 29215 30186 31152 32101 33024
Region Extreme Nord Vele 25088 26098 27075 28039 29104 30122 31123 32119 33098 34049
Region Extreme Nord Yagoua 40792 42435 44024 45591 47323 48977 50605 52225 53816 55363
Region Nord Bibemi 24599 25776 26799 27823 29182 30334 31487 32590 33646 34646
Region Nord Figuil 15409 16147 16787 17429 18280 19002 19724 20415 21077 21703
Region Nord Garoua 1 44036 46144 47975 49808 52241 54304 56367 58343 60233 62023
Region Nord Garoua 2 48024 50323 52320 54318 56972 59222 61471 63626 65688 67640
Region Nord Gaschiga 22409 23482 24414 25346 26585 27634 28684 29690 30652 31562
Region Nord Golombe 10716 11228 11674 12120 12712 13214 13716 14197 14657 15092
Region Nord Guider 36135 37865 39367 40871 42868 44560 46253 47875 49426 50894
Region Nord Lagdo 32803 34374 35738 37103 38916 40452 41989 43461 44869 46202
Region Nord Mayo oulo 22274 23340 24267 25194 26424 27468 28511 29511 30467 31372
Region Nord Ngong 41594 43585 45315 47046 49344 51293 53241 55107 56893 58584
Region Nord Pitoa 24127 25282 26285 27290 28623 29753 30883 31966 33001 33982
Region Nord Poli 17357 18188 18910 19632 20591 21404 22217 22996 23741 24447
Region Nord Rey bouba 28145 29492 30662 31834 33389 34707 36026 37288 38497 39640
Region Nord Tchollire 31487 32995 34304 35615 37354 38829 40304 41717 43069 44349
Region Nord Touboro 46036 48240 50154 52070 54614 56770 58927 60992 62969 64840
Show the code
rm(dt.pop.rep, dt.pop.proj, lm.ext.nord, lm.nord, dt.pred, pop.agg)

1.3 Environmental data

Les données proviennent de NASA/POWER CERES/MERRA2 et correspondent à des données mensuelles et annuelles par district.

  • Temperature de la surface terrestre (°C),
  • Vitesse du vent à 2 mètres (m/s),
  • Humidité du sol en surface (%),
  • Précipitation corrigée (mm/day).

Pour obtenir les données par région, les valeurs des districts ont été moyennées excepté pour les précipitations où nous avons utilisé la formule suivante :

\[ Region\ precipitation = \displaystyle\sum (District\ precipitation * District\ area) / \displaystyle\sum District\ areas \]

Show the code
sheet_names <- excel_sheets("data/raw/Base des données Météorologique.xls") # Get sheet names

list_all <- lapply(sheet_names, function(x) {          # Read all sheets to list
  read_excel("data/raw/Base des données Météorologique.xls",
             sheet = x, skip=12) %>% as.data.table } )

names(list_all) <- sheet_names                         # Rename list elements

dt.meteo <- list_all %>% rbindlist(idcol=T)

rm(list_all)

dt.meteo <- dt.meteo %>% melt(id.vars = c(".id", "PARAMETER", "YEAR"))

dt.meteo <- dt.meteo %>% dcast(.id + YEAR + variable ~ PARAMETER, value.var = "value")

names(dt.meteo) <- c("district", "year", "month", "wetn", "prec", "temp", "wind")
Show the code
dt.meteo.dis.y <- dt.meteo[month == "ANN"]

dt.meteo.dis.y$month <- NULL

dt.meteo.dis.y <- dt.meteo.dis.y[, lapply(.SD, as.numeric), by=.(district, year)]
Show the code
dt.meteo <- dt.meteo[month != "ANN"]

dt.meteo[, month := month %>% factor(labels = 1:12)]

dt.meteo <- dt.meteo[, lapply(.SD, as.numeric), by=.(district, year, month)]
Show the code
# We extract lat/lon for every sheet
lat.lon <- lapply(sheet_names, function(x) {          # Read all sheets to list
  read_excel("data/raw/Base des données Météorologique.xls",
             sheet = x, range = "A4", col_names = F) %>% as.data.table} )

names(lat.lon) <- sheet_names

lat.lon <- lat.lon %>% rbindlist(idcol="district")

lat.lon[, c("lat", "lon") := `...1` %>% tstrsplit(split=" ", keep = c(4, 8))]

lat.lon$...1 <- NULL
Show the code
# We extract elevation for every sheet
elevation <- lapply(sheet_names, function(x) {          # Read all sheets to list
  read_excel("data/raw/Base des données Météorologique.xls", sheet = x, range = "A5", col_names = F) %>% as.data.table} )

names(elevation) <- sheet_names

elevation <- elevation %>% rbindlist(idcol="district")

elevation[, elevation := `...1` %>% tstrsplit(split=" ", keep = 13)]

elevation$...1 <- NULL

1.4 Geographic data

Show the code
ds.cam <- read_sf("data/raw/DS_Cam.shp")

dt.area <- ds.cam %>%
  as.data.table %>%
  .[Region %in% c("Extreme Nord", "Nord"),
    .(region = Region, area = Area, district = Nom_DS)
  ]

#dt.area[, region := sub("Nord", "North", region)]
dt.area[, region := paste("Region", region)]

1.5 Final datasets

4 jeux de données finaux ont été générés en fonction des niveaux d’aggrégation souhaités :

  • Data by district, year and month,
Show the code
dt.dis.ym <- lat.lon[dt.meteo, on="district"]

dt.dis.ym <- elevation[dt.dis.ym, on="district"]

dt.dis.ym[, month := month %>% as.integer]

dt.dis.ym <- dt.dis.ym[dt.inc, on=c("year", "month", "district")]

dt.dis.ym <- dt.pop[dt.dis.ym, on=c("year", "region", "district")]

dt.dis.ym <- dt.area[dt.dis.ym, on=c("region", "district")]

dt.dis.ym[, prec.m3 := prec * area * 1000]

#rm(lat.lon, elevation, dt.meteo, dt.nord, dt.pop)
  • Data by district and year,
Show the code
dt.dis.y <- dt.dis.ym[,
                      lapply(.SD, sum, na.rm=T),
                      .SDcols = c("case.conf", "consult", "death"),
                      by = .(region, district, year, area, elevation, lat, lon, pop)
                      ]

dt.dis.y <- dt.meteo.dis.y[dt.dis.y, on=c("district", "year")]

dt.dis.y[, prec.m3 := prec * area * 1000]
  • Data by region, year and month,
Show the code
dt.reg.ym <- dt.dis.ym[,.(pop = pop %>% sum(na.rm=T),
                          case.conf = case.conf %>% sum(na.rm=T),
                          consult = consult %>% sum(na.rm=T),
                          death = death %>% sum(na.rm=T),
                          area = area %>% sum(na.rm=T),
                          prec.m3 = prec.m3 %>% sum(na.rm=T),
                          wetn = wetn %>% mean(na.rm=T),
                          wetn.sd = wetn %>% sd(na.rm=T),
                          temp = temp %>% mean(na.rm=T),
                          temp.sd = temp %>% sd(na.rm=T),
                          wind = wind %>% mean(na.rm=T),
                          wind.sd = wind %>% sd(na.rm=T)
),
by = .(region, year, month, date)
]

dt.reg.ym[, prec := prec.m3 / (area * 1000)]
# Add month name
dt.reg.ym[, month.lab := month.name[dt.reg.ym$month]]
  • Data by region and year
Show the code
dt.pop.reg.y <- dt.pop[, .(pop = pop %>% sum(na.rm=T)), by=.(region, year)]

dt.reg.y <- dt.dis.ym[,.(case.conf = case.conf %>% sum(na.rm=T),
                         consult = consult %>% sum(na.rm=T),
                         death = death %>% sum(na.rm=T)
),
by = .(region, year)
]

dt.reg.y <- dt.pop.reg.y[dt.reg.y, on=c("year", "region")]

dt.meteo.reg.y <- dt.dis.y[, .(area = area %>% sum(na.rm=T),
                               prec.m3 = prec.m3 %>% sum(na.rm=T),
                               wetn = wetn %>% mean(na.rm=T),
                               wetn.sd = wetn %>% sd(na.rm=T),
                               temp = temp %>% mean(na.rm=T),
                               temp.sd = temp %>% sd(na.rm=T),
                               wind = wind %>% mean(na.rm=T),
                               wind.sd = wind %>% sd(na.rm=T)
),
by=.(region, year)]

dt.reg.y <- dt.meteo.reg.y[dt.reg.y, on=c("region", "year")]

dt.reg.y[, prec := prec.m3 / (area * 1000)]

1.5.1 Computing incidence

La formule utilisée pour le calcul de l’incidence est :

Incidence du paludisme = cas confirmés x 1000 / (population x temps)

Show the code
dt.dis.ym[, inc := case.conf * 1000 * 12 / pop]
dt.dis.y[, inc := case.conf * 1000 / pop]
dt.reg.ym[, inc := case.conf * 1000 * 12/ pop]
dt.reg.y[, inc := case.conf * 1000 / pop]

dt.reg.y[, c("inc.ci.inf", "inc.ci.sup") := apply(
  dt.reg.y[, .(case.conf, pop, inc)], 1,
  function(x){
    prop.test(x[1], x[2])$conf.int * 1000
  }) %>% t %>% as.data.table %>% round(1)
]

dt.reg.y[, inc.lab := paste(inc %>% round(1),
                            " (",
                            inc.ci.inf,
                            "-",
                            inc.ci.sup,
                            ")",
                            sep="")]

1.5.2 Computing risk transmission

Show the code
int.labels <- c("Très faible transmission (< 100 cas)",
                "Faible transmission (entre 100 et 250 cas)",
                "Transmission modérée (entre 250 et 450 cas)",
                "Forte transmission (> 450 cas)")

dt.dis.ym[, int.trans := inc %>% cut(breaks = c(0, 100, 250, 450, max(inc, na.rm=T)),
                                     include.lowest = T,
                                     labels = int.labels
                                     )]

dt.dis.y[, int.trans := inc %>% cut(breaks = c(0, 100, 250, 450, max(inc, na.rm=T)),
                                    include.lowest = T,
                                    labels = int.labels
                                    )]
Show the code
dt.dis.ym %>% fwrite("data/final/data.district.year.month.csv")

dt.dis.y %>% fwrite("data/final/data.district.year.csv")

dt.reg.ym %>% fwrite("data/final/data.region.year.month.csv")

dt.reg.y %>% fwrite("data/final/data.region.year.csv")

1.6 Modeling

Nous avons tout d’abord cherché à décrire et mesurer la force de l’association entre l’incidence mensuelle du paludisme et les différentes variables météorologiques au niveau régional.

Show the code
# Data subset for North region
dt.dlnm.n <- dt.reg.ym[region=="Region Nord"]
dt.dlnm.n[, pop := pop %>% ceiling %>% as.integer]

# Data subset for Extreme North region
dt.dlnm.en <- dt.reg.ym[region=="Region Extreme Nord"]
dt.dlnm.en[, pop := pop %>% ceiling %>% as.integer]

Nous avons ensuite utilisé les modèles non linéaires à décalage distribué (DLNM) (Gasparrini 2011). Cette méthodologie repose sur une base croisée, c’est à dire un espace bidimensionnel qui spécifient les relations dans les dimensions du prédicteur et des décalages temporels (ici en mois). Afin d’établir cette base croisée, nous avons choisi une fonction spline cubique naturel pour chaque variable météorologique ainsi que pour les décalages temporels. Aucun noeud n’a été utilisé dans le paramétrage des splines. Le nombre de décalages a été fixé à 6 afin de mesurer l’effet des variables métérologiques dans les 6 mois précédant la survenue des cas de paludisme.

Show the code
# Crossbasis for north region
cb.prec.n <- dt.dlnm.n$prec %>% crossbasis(lag=6, argvar=list(fun="ns"), arglag=list(fun="ns"))
cb.wetn.n <- dt.dlnm.n$wetn %>% crossbasis(lag=6, argvar=list(fun="ns"), arglag=list(fun="ns"))
cb.temp.n <- dt.dlnm.n$temp %>% crossbasis(lag=6, argvar=list(fun="ns"), arglag=list(fun="ns"))
cb.wind.n <- dt.dlnm.n$wind %>% crossbasis(lag=6, argvar=list(fun="ns"), arglag=list(fun="ns"))

# Crossbasis for extreme north region
cb.prec.en <- dt.dlnm.en$prec %>% crossbasis(lag=6, argvar=list(fun="ns"), arglag=list(fun="ns"))
cb.wetn.en <- dt.dlnm.en$wetn %>% crossbasis(lag=6, argvar=list(fun="ns"), arglag=list(fun="ns"))
cb.temp.en <- dt.dlnm.en$temp %>% crossbasis(lag=6, argvar=list(fun="ns"), arglag=list(fun="ns"))
cb.wind.en <- dt.dlnm.en$wind %>% crossbasis(lag=6, argvar=list(fun="ns"), arglag=list(fun="ns"))

Un modèle additif généralisé (Wood 2004) de quasipoisson a été utilisé pour prendre en compte la surdispersion du nombre de cas. La variable explicative était le nombre de cas confirmés. Le logarithme de la population a été placé en offset. Un modèle a été construit pour chaque variable météorologique. La qualité des modèles a été présentée graphiquement à l’aide de la distribution des résidus et d’un q-q plot.

Show the code
# Models for north region
dlnm.n.prec <- gam(case.conf ~ cb.prec.n, offset= log(pop), data = dt.dlnm.n, family = quasipoisson, trace = F, maxit = 100)
dlnm.n.wetn <- gam(case.conf ~ cb.wetn.n, offset= log(pop), data = dt.dlnm.n, family = quasipoisson, trace = F, maxit = 100)
dlnm.n.temp <- gam(case.conf ~ cb.temp.n, offset= log(pop), data = dt.dlnm.n, family = quasipoisson, trace = F, maxit = 100)
dlnm.n.wind <- gam(case.conf ~ cb.wind.n, offset= log(pop), data = dt.dlnm.n, family = quasipoisson, trace = F, maxit = 100)

# Models for extreme north region
dlnm.en.prec <- gam(case.conf ~ cb.prec.en, offset= log(pop), data = dt.dlnm.en, family = quasipoisson, trace = F, maxit = 100)
dlnm.en.wetn <- gam(case.conf ~ cb.wetn.en, offset= log(pop), data = dt.dlnm.en, family = quasipoisson, trace = F, maxit = 100)
dlnm.en.temp <- gam(case.conf ~ cb.temp.en, offset= log(pop), data = dt.dlnm.en, family = quasipoisson, trace = F, maxit = 100)
dlnm.en.wind <- gam(case.conf ~ cb.wind.en, offset= log(pop), data = dt.dlnm.en, family = quasipoisson, trace = F, maxit = 100)

Le DLNM nous a permis d’obtenir les risques relatifs de paludisme en fonction des décalages temporels et des valeurs prises par les variables météorologiques. Les intervalles de confiance à 95% des risques relatifs sont également représentés. Un risque relatif strictement supérieur à 1 correspond à une probabilité plus importante de développer le paludisme dans des conditions données par rapport à une situation de référence. Les valeurs de référence d’exposition, pour les effets prédits par le DLNM, sont présentés dans le tableau ci-dessous. Le choix des valeurs de référence n’affecte pas l’adéquation du modèle et différentes valeurs peuvent être retenues en fonction des hypothèses de l’étude. Nous avons décidé de prendre comme valeurs de référence (Table 2) des valeurs observées lors de la saison non épidémique (mois où l’incidence diminue). Les effets des décalages temporels des variables météorologiques sur le risque relatif seront ensuites analysés pour des valeurs observées lors des mois d’avril à juin, mois qui précèdent le retour de la saison épidémique (augmentation des cas).

Show the code
dt.cen.val <- data.table(Variable = c("Precipitations (mm/day)", "Soil Wetness (%)", "Temperature (°C)", "Wind (m/s)"),
                         `North` = c(0, 20, 32, 3),
                         `Extreme North` = c(0, 20, 32, 3)
)

dt.cen.val %>% kable %>% kable_styling %>%
  add_header_above(c("", "Reference values"=2))
Table 2: Reference values for meteorological factors.
Reference values
Variable North Extreme North
Precipitations (mm/day) 0 0
Soil Wetness (%) 20 20
Temperature (°C) 32 32
Wind (m/s) 3 3
Show the code
pred.n.prec <- crosspred(cb.prec.n, dlnm.n.prec, cumul=T, cen=0, by=0.5)
pred.n.wetn <- crosspred(cb.wetn.n, dlnm.n.wetn, cumul=T, cen=0.2, by=0.1)
pred.n.temp <- crosspred(cb.temp.n, dlnm.n.temp, cumul=T, cen=33)
pred.n.wind <- crosspred(cb.wind.n, dlnm.n.wind, cumul=T, cen=3, by=0.1)

pred.en.prec <- crosspred(cb.prec.en, dlnm.en.prec, cumul=T, cen=0, by=0.5)
pred.en.wetn <- crosspred(cb.wetn.en, dlnm.en.wetn, cumul=T, cen=0.2, by=0.1)
pred.en.temp <- crosspred(cb.temp.en, dlnm.en.temp, cumul=T, cen=32)
pred.en.wind <- crosspred(cb.wind.en, dlnm.en.wind, cumul=T, cen=3, by=0.1)
Show the code
# Get overall RR
dt.rr.all <- lapply(
  list(pred.n.prec, pred.n.wetn, pred.n.temp, pred.n.wind,
       pred.en.prec, pred.en.wetn, pred.en.temp, pred.en.wind),
  function(x){
    data.table(
      value = x$allRRfit %>% names %>% as.numeric,
      RRfit = x$allRRfit,
      RRlow = x$allRRlow,
      RRhigh = x$allRRhigh
    ) %>% round(1)
  })

names(dt.rr.all) <- c("pred.n.prec", "pred.n.wetn", "pred.n.temp", "pred.n.wind",
                      "pred.en.prec", "pred.en.wetn", "pred.en.temp", "pred.en.wind")

dt.rr.all <- dt.rr.all %>%
  rbindlist(idcol="model") %>%
  .[, RR := paste(RRfit, " (", RRlow, "-", RRhigh, ")", sep="")]
Show the code
# Get lag-specific RR
x <- c("Precipitation (mm/day)"="2",
       "Soil surface wetness (%)"="0.4",
       "Temperature (°C)"="26",
       "Wind (m/s)"="2")

dt.rr.n <- mapply(function(x, y){
  list(
    data.table(
      RRfit = c(y$matRRfit[x,], y$cumRRfit[x,]), 
      RRlow = c(y$matRRlow[x,], y$cumRRlow[x,]),
      RRhigh = c(y$matRRhigh[x,], y$cumRRhigh[x,])
    ) %>%
      round(2) %>%
      .[, Lag := paste("Lag", 0:6) %>% rep(each = 2)] %>%
      .[, effect := c("Lag-specific", "Cumulative lag-specific") %>% rep(7)]
  )
},
x = x,
y = list(pred.n.prec, pred.n.wetn, pred.n.temp, pred.n.wind)
) %>%
  rbindlist(idcol="variable") %>%
  .[, region := "Region Nord"]

dt.rr.en <- mapply(function(x, y){
  list(
    data.table(
      RRfit = c(y$matRRfit[x,], y$cumRRfit[x,]), 
      RRlow = c(y$matRRlow[x,], y$cumRRlow[x,]),
      RRhigh = c(y$matRRhigh[x,], y$cumRRhigh[x,])
    ) %>%
      round(2) %>%
      .[, Lag := paste("Lag", 0:6) %>% rep(each = 2)] %>%
      .[, effect := c("Lag-specific", "Cumulative lag-specific") %>% rep(7)]
  )
},
x = x,
y = list(pred.en.prec, pred.en.wetn, pred.en.temp, pred.en.wind)
) %>%
  rbindlist(idcol="variable") %>%
  .[, region := "Region Extreme Nord"]

dt.rr.lag <- rbind(dt.rr.n, dt.rr.en)

dt.rr.lag[, RR := paste(RRfit, " (", RRlow, "-", RRhigh, ")", sep="")]

rm(dt.rr.n, dt.rr.en)

dt.rr.lag.max <- dt.rr.lag[order(RRfit)][effect == "Cumulative lag-specific" , lapply(.SD, tail, 1), by=.(region, variable)]

1.7 Software

Toutes les analyses statistiques ont été effectuées avec le logiciel R version 4.5.2 (2025-10-31) (R Core Team 2018).

2 Results

2.1 Spatio-temporal dynamics of incidence

Show the code
tot.case.conf <- dt.reg.y[, .(inc = case.conf %>% sum %>% format(big.mark=","))]

region.summary <- dt.reg.y[, .(tot.pop = pop %>% sum,
                               tot.case.conf = case.conf %>% sum,
                               mean.case.conf = case.conf %>% mean,
                               sd.case.conf = case.conf %>% sd,
                               min.inc.lab = inc.lab[which.min(inc)],
                               max.inc.lab = inc.lab[which.max(inc)]
),
by=region]

#region.summary[, prop := (tot.case.conf *100 / sum(tot.case.conf)) %>% round(1)]

region.summary <- region.summary[, lapply(.SD, format, big.mark=","), by=.(region, min.inc.lab, max.inc.lab)]

Un total de 1,528,967 cas de paludisme ont été enregistrés pour les deux régions sur la période de l’étude. De 2015 à 2018, l’incidence était plus élevée dans la région Nord que dans la région Extrême Nord, tendance qui s’est inversée à partir de 2019 (Figure 3). L’incidence maximale enregistrée était de 190.6 (189.5-191.8) pour 1000 personnes-années sur la région Nord et de 243.8 (242.9-244.7)sur la région Extreme Nord. L’incidence minimale était de 90.8 (90-91.6) et 82 (81.5-82.6) pour 1000 personnes-années sur la région Nord et Extreme Nord respectivement.

Show the code
dt.reg.y %>%
  ggplot() +
  geom_line(aes(x=year, y=inc, color=region)) +
  ylab("Incidence (1000 person-year)")
Figure 3: Evolution de l’incidence sur les deux régions de 2015 à 2022.

L’évolution des incidences mensuelles (Figure 4) montre une augmentation des cas de paludisme de juillet à octobre puis une diminution d’octobre à mai-juin. En saison de haute épidémie, l’incidence dépasse les 200 personnes-année sur la région Extreme Nord alors qu’elle reste majoritairement comprise entre 100 et 200 personnes-année sur la région Nord.

Show the code
dt.reg.ym %>%
  ggplot(aes(x=month %>% as.factor, y=inc)) +
  geom_boxplot(color='#CD4F39') +
  ylab("Incidence (1000 person-year)") +
  xlab("Month") +
  facet_grid(~region)
Figure 4: Monthly incidence of malaria, North and Extreme North, Cameroon, 2015-2022.

Conformément aux recommandations de l’OMS, l’incidence du paludisme pour 1 000 personnes-année de 2015 à 2022 a été classée en 4 catégories d’intensité de transmission (Table 3) :

Show the code
dt.dis.y %>% 
  tbl_strata(
    strata = region,
    .tbl_fun =
      ~ .x %>%
      tbl_summary(
        include = "year",
        by = int.trans,
        type = year ~ "categorical",
        percent = "row",
        #statistic = list(
        #  all_categorical() ~ "{n} / {N} ({p}%)"
        #),
        missing = "ifany"
      ) %>%
      add_overall(last = T)
  ) %>%
  modify_header(label ~ "")
Table 3: Nombre de districts de santé par intensité de transmission selon l’année et la région.
Region Extreme Nord
Region Nord
Très faible transmission (< 100 cas)
N = 851
Faible transmission (entre 100 et 250 cas)
N = 1201
Transmission modérée (entre 250 et 450 cas)
N = 311
Forte transmission (> 450 cas)
N = 81
Overall
N = 2441
Très faible transmission (< 100 cas)
N = 521
Faible transmission (entre 100 et 250 cas)
N = 631
Transmission modérée (entre 250 et 450 cas)
N = 51
Forte transmission (> 450 cas)
N = 01
Overall
N = 1201
year









    2015 8 (27%) 16 (53%) 5 (17%) 1 (3.3%) 30 (100%) 1 (6.7%) 11 (73%) 3 (20%) 0 (0%) 15 (100%)
    2016 16 (53%) 13 (43%) 0 (0%) 1 (3.3%) 30 (100%) 4 (27%) 10 (67%) 1 (6.7%) 0 (0%) 15 (100%)
    2017 21 (70%) 8 (27%) 1 (3.3%) 0 (0%) 30 (100%) 9 (60%) 6 (40%) 0 (0%) 0 (0%) 15 (100%)
    2018 9 (30%) 18 (60%) 2 (6.7%) 1 (3.3%) 30 (100%) 2 (13%) 12 (80%) 1 (6.7%) 0 (0%) 15 (100%)
    2019 13 (42%) 17 (55%) 0 (0%) 1 (3.2%) 31 (100%) 11 (73%) 4 (27%) 0 (0%) 0 (0%) 15 (100%)
    2020 11 (35%) 17 (55%) 3 (9.7%) 0 (0%) 31 (100%) 10 (67%) 5 (33%) 0 (0%) 0 (0%) 15 (100%)
    2021 2 (6.5%) 14 (45%) 12 (39%) 3 (9.7%) 31 (100%) 8 (53%) 7 (47%) 0 (0%) 0 (0%) 15 (100%)
    2022 5 (16%) 17 (55%) 8 (26%) 1 (3.2%) 31 (100%) 7 (47%) 8 (53%) 0 (0%) 0 (0%) 15 (100%)
1 n (%)

Sur la région Nord, on constate qu’au moins 80% des districts de santé possèdent une très faible ou faible transmission du paludisme chaque année et qu’aucun district ne montre de forte transmission. Le nombre de districts ayant un très faible transmission augmentait depuis 2015 mais tend à diminuer depuis 2020 au profit d’un risque de transmission faible. Sur la région Extrême-nord, le nombre de districts à très faible transmission diminue depuis 2017 tandis que celui à transmission modérée augmente. De plus, en 2021, 3 districts (Koza, Mokolo et Moutourwa) montraient une forte transmission contre au maximum 1 sur les autres années (Gazawa de 2015 à 2019 et Koza en 2022). La Figure 5 ci-dessous montre la distribution géographique de la transmission du paludisme en fonction des années et des districts de santé. On remarque que les zones de transmission modérée et forte sont principalement situées dans la partie sud de la région Extrême Nord.

Show the code
ds.cam <- inner_join(ds.cam, dt.dis.y, by=c("Nom_DS"="district"))

levels(ds.cam$int.trans) <- c(
  "Très faible\n(< 100 cas)",
  "Faible\n(entre 100 et 250 cas)",
  "Modérée\n(entre 250 et 450 cas)",
  "Forte\n(> 450 cas)"
)
Show the code
ggplot() +
  geom_sf(data = ds.cam, aes(geometry = geometry, fill=int.trans)) +
  scale_fill_manual(values=c("white", "green3", "orange", "red")) +
  facet_wrap( ~ year, ncol=4) +
  labs(fill='Intensité de transmission\n(pour 1000 personnes-années)')+
  theme(#axis.ticks=element_blank(),
    #axis.text.x=element_blank(),
    #axis.text.y=element_blank(),
    axis.text.x=element_text(size=5),
    axis.text.y=element_text(size=5),
    panel.background=element_rect(fill = "white"),
    legend.position = "bottom",
    legend.title = element_text(size=8), #change legend title font size
    legend.text = element_text(size=8) #change legend text font size
    #legend.key.size = unit(0.2, 'cm')
  ) +
  guides(color=guide_legend(nrow=2, byrow=TRUE)) +
  annotation_scale(location = "bl", width_hint = 0.1) +
  annotation_north_arrow(location = "tl", which_north = "true",
                         height = unit(0.5, "cm"),
                         width = unit(0.5, "cm"),
                         pad_x = unit(0, "in"), pad_y = unit(0.1, "in"),
                         style = north_arrow_nautical(text_size = 5))
Figure 5: Intensité de transmission du paludisme par district de santé sur les régions Nord et Extrême Nord du Cameroun de 2015 à 2022.

2.2 Relation between incidence and meteorological factors

L’analyse descriptive des séries chronologiques de l’incidence mensuelle du paludisme et des variables météorologiques a montré une saisonnalité typique, avec un décalage entre les cas de paludisme et la pluviométrie dans les deux régions (See Figure 6).

Show the code
ggplot(dt.reg.ym, aes(x = date)) +
  #geom_col(aes(y = prec), color="blue") +
  geom_step(aes(y = prec*10, color="Precipitation (mm/day)")) +
  geom_line(aes(y = inc, color="Incidence (1000 person-year)"), linewidth=1) +
  geom_line(aes(y = wetn*1000, color="Surface soil wetness (%)"), linetype = "dotted") +
  geom_line(aes(y = temp*10, color="Temperature (°C)")) +
  geom_line(aes(y = wind*100, color="Wind speed (dm/s)")) +
  scale_x_date(date_breaks = "1 year", date_labels =  "%Y", date_minor_breaks = "3 months") +
  scale_y_continuous(
    # Features of the first axis
    name = "Incidence (1000 person-year)",
    # Add a second axis and specify its features
    sec.axis = sec_axis(transform=~.*0.1, name="Scale for meteorological factors")
  ) +
  
  scale_color_manual(name='',
                     breaks=c('Incidence (1000 person-year)',
                              'Precipitation (mm/day)',
                              'Surface soil wetness (%)',
                              'Temperature (°C)',
                              'Wind speed (dm/s)'),
                     values=c('Incidence (1000 person-year)'='#CD4F39',
                              'Precipitation (mm/day)'='blue',
                              'Surface soil wetness (%)'='#1b98e0',
                              'Temperature (°C)'='green3',
                              'Wind speed (dm/s)' = 'orange')) +
  
  theme(panel.background=element_rect(fill = "white"),
        legend.position = "bottom",
        legend.key = element_rect(fill = "white"),
        #legend.box="vertical",
        #legend.margin=margin()
  ) +
  guides(color=guide_legend(nrow=2, byrow=TRUE)) +
  facet_wrap(region ~ ., nrow=2)
Figure 6: Séries chronologiques de l’incidence du paludisme et des variables météorologiques, Nord et Extrême-nord, 2015-2022.

2.2.1 Precipitation and incidence

L’évolution des incidences mensuelles du paludisme (Figure 4) et des précipitations mensuelles (Figure 7) montre une augmentation des cas de paludisme de juillet à octobre tandis que les précipitations augmentent principalement d’avril à août ce qui suggérerait un décalage d’environ 3-4 mois entre le début de l’augmentation des précipitations et le début de l’augmentation de l’incidence du paludisme dans les deux régions.

Show the code
dt.reg.ym %>%
  ggplot(aes(x=month %>% as.factor, y=prec)) +
  geom_boxplot(color="blue") +
  ylab("Precipitation (mm/day)") +
  xlab("Month") +
  facet_grid(~region)
Figure 7: Monthly precipitation, North and Extreme North, Cameroon, 2015-2022.
Show the code
par(mfrow = c(1,2))
pred.n.prec %>% plot("overall", col=2, xlab="Precipitation (mm/day)", ylab="RR", main="North", exp=T)
pred.en.prec %>% plot("overall", col=2, xlab="Precipitation (mm/day)", ylab="RR", main="Extreme North", exp=T, ylim=c(1, 12))
#pred.en.prec %>% plot("overall", col=2, xlab="Precipitation (mm/day)", ylab="RR", main="Extreme North", exp=T)
Figure 8: Overall effect of precipitation on malaria incidence, with reference at 0 mm/day. North and Extreme North, Cameroon, 2015-2022.

Les graphiques ci-dessus montrent l’augmentation exponentielle du risque relatif de l’incidence du paludisme avec l’augmentation des précipitations sur les deux régions. Dès 1 mm/jour de précipitations le risque relatif est de 1.2 (1.1-1.2) sur la région Nord et 1.4 (1.3-1.5) sur la région Extreme Nord. En milieu de saison des pluies, lorsque 6 mm/jour sont observés, le risque relatif atteint 2.5 (1.8-3.4) sur la région Nord et 7.4 (4.1-13.4) sur la région Extreme Nord.

Show the code
par(mfrow = c(2,2))
pred.n.prec %>% plot("slices", var=2, col=2, cumul=T, ylab="RR", main="North", exp=T, ylim=c(1, 2.5))
pred.en.prec %>% plot("slices", var=2, col=2, cumul=T, ylab="RR", main="Extreme North", exp=T, ylim=c(1, 2.5))
pred.n.prec %>% plot("slices", var=2, col=2, cumul=F, ylab="RR", main="North", exp=T, ylim=c(1, 1.2))
pred.en.prec %>% plot("slices", var=2, col=2, cumul=F, ylab="RR", main="Extreme North", exp=T, ylim=c(1, 1.2))
Figure 9: Cumulative lag-specific effect (top) and lag-specific effect (bottom) on relative risk of malaria incidence at 2 mm/day of precipitation, with reference at 0 mm/day. North and Extreme North, Cameroon, 2015-2022.

Les graphiques du haut correspondent à une situation de début de saison des pluies, où 2 mm/jour de précipitations sont cumulées sur plusieurs mois consécutifs. Dès le premier mois où 2 mm/jour de pluies sont observées, le risque relatif est de 1.06 (1.04-1.08) et augmente pendant les 6 prochains mois pour atteindre 1.35 (1.21-1.51). Les graphiques du bas correspondent à une situation de fin de saison des pluies où les précipitations s’estompent au cours du temps. On y observe une diminution du risque relatif qui devient égal à un 5 mois après l’arrêt des pluies sur la région Nord et sur la région Extreme Nord.

2.2.2 Soil Surface Wetness and incidence

Show the code
dt.reg.ym %>%
  ggplot(aes(x=month %>% as.factor, y=wetn)) +
  geom_boxplot(color="#1b98e0") +
  ylab("Surface soil wetness (%)") +
  xlab("Month") +
  facet_grid(~region)
Figure 10: Monthly surface soil wetness, North and Extreme North, Cameroon, 2015-2022.
Show the code
par(mfrow = c(1,2))
pred.n.wetn %>% plot("overall", col=2, xlab="Surface Soil Wetness (%)", ylab="RR", main="North", exp=T, ylim=c(1, 5))
pred.en.wetn %>% plot("overall", col=2, xlab="Surface Soil Wetness (%)", ylab="RR", main="Extreme North", exp=T, ylim=c(1, 5))
Figure 11: Overall effect of soil wetness on malaria incidence, with reference at 20%. North and Extreme North, Cameroon, 2015-2022.

Les graphiques ci-dessus montrent l’augmentation exponentielle du risque relatif de l’incidence du paludisme avec l’augmentation de l’humidité du sol sur les deux régions. Cette relation est similaire à celle observée pour les précipitations. En milieu de saison des pluies, où une humidité de 70% est observée, le risque relatif peut atteindre 2 (1.4-2.8) sur la région Nord et 3.1 (2-4.6) sur la région Extreme Nord.

Show the code
par(mfrow = c(2,2))
pred.n.wetn %>% plot("slices", var=0.4, col=2, cumul=T, ylab="RR", main="North", exp=T, ylim=c(1, 2.3))
pred.en.wetn %>% plot("slices", var=0.4, col=2, cumul=T, ylab="RR", main="Extreme North", exp=T, ylim=c(1, 2.3))
pred.n.wetn %>% plot("slices", var=0.4, col=2, cumul=F, ylab="RR", main="North", exp=T, ylim=c(0.9, 1.3))
pred.en.wetn %>% plot("slices", var=0.4, col=2, cumul=F, ylab="RR", main="Extreme North", exp=T, ylim=c(0.9, 1.3))
Figure 12: Cumulative Lag-specific effect (top) and lag-specific effect (bottom) on relative risk of malaria incidence at 40% of soil wetness, with reference at 20%. North and Extreme North, Cameroon, 2015-2022.

Dès que l’humidité du sol atteint 40% sur plusieurs mois consécutif (début de saison des pluies), on observe l’augmentation du risque relatif sur les 5 prochains mois (graphiques du haut) et ce dès le premier mois où 40% d’humidité est observé. Le risque relatif atteint son maximum de 1.35 (1.21-1.51) au bout de 5 mois sur la région Nord et de 1.61 (1.42-1.83) au bout de 5 mois sur la région Extreme Nord. En saison sèche, lorsque une humidité du sol de 40% n’est plus observée au fil des mois, on observe une diminution du risque relatif (graphiques du bas). Le risque relatif devient égal à 1 après 3 mois sur les deux régions.

2.2.3 Temperature and incidence

Show the code
dt.reg.ym %>%
  ggplot(aes(x=month %>% as.factor, y=temp)) +
  geom_boxplot(color="green3") +
  ylab("Temperature (°C)") +
  xlab("Month") +
  facet_grid(~region)
Figure 13: Monthly temperature, North and Extreme North, Cameroon, 2015-2022.
Show the code
par(mfrow = c(1,2))
pred.n.temp %>% plot("overall", col=2, xlab="Temperature (°C)", ylab="RR", main="North", exp=T, ylim=c(0.5, 2))
pred.en.temp %>% plot("overall", col=2, xlab="Temperature (°C)", ylab="RR", main="Extreme North", exp=T, ylim=c(0.5, 2))
Figure 14: Overall effect of temperature on malaria incidence, with reference at 32°C. North and Extreme North, Cameroon, 2015-2022.

La Figure 14 montre un effet global significatif de la température sur le risque relatif d’incidence pour la région Extrême Nord où le risque de transmission augmente en même temps que la température. Cet effet n’est cependant pas observé sur la région Nord.

Show the code
par(mfrow = c(2,2))
pred.n.temp %>% plot("slices", var="26", col=2, cumul=T, ylab="RR", main="North", exp=T, ylim=c(0.6, 2.2))
pred.en.temp %>% plot("slices", var="26", col=2, cumul=T, ylab="RR", main="Extreme North", exp=T, ylim=c(0.6, 2.2))
pred.n.temp %>% plot("slices", var="26", col=2, cumul=F, ylab="RR", main="North", exp=T, ylim=c(0.8, 1.5))
pred.en.temp %>% plot("slices", var="26", col=2, cumul=F, ylab="RR", main="Extreme North", exp=T, ylim=c(0.8, 1.5))
Figure 15: Cumulative lag-specific effect (top) and lag-specific effect (bottom) on relative risk of malaria incidence at 26°C of temperature, with reference at 32°C. North and Extreme North, Cameroon, 2015-2022.

Lorsque la température descend à 26°C sur plusieurs mois consécutif (graphiques du haut), le risque relatif est strictement supérieur à 1 pendant 4 mois avec un maximum de 1.64 (1.3-2.05) au 3ème mois sur la région Nord. Pour la région Extreme Nord, le risque relatif est strictement supérieur à 1 pendant 3 mois et atteint son maximum de 1.51 (1.22-1.87) au 2ème mois. Une fois que les températures redeviennent supérieures à 26°C, le risque relatif diminue pour atteindre 1 après 2 mois sur la région Nord et après 1 mois sur la région Extreme Nord.

2.2.4 Wind and incidence

Show the code
dt.reg.ym %>%
  ggplot(aes(x=month %>% as.factor, y=wind)) +
  geom_boxplot(color="orange") +
  ylab("Wind speed (dm/s)") +
  xlab("Month") +
  facet_grid(~region)
Figure 16: Monthly wind speed, North and Extreme North, Cameroon, 2015-2022.
Show the code
par(mfrow = c(1,2))
pred.n.wind %>% plot("overall", col=2, xlab="Wind speed (m/s)", ylab="RR", main="North", exp=T, ylim=c(0.5, 5))
pred.en.wind %>% plot("overall", col=2, xlab="Wind speed (m/s)", ylab="RR", main="Extreme North", exp=T, ylim=c(0.5, 5))
Figure 17: Overall effect of wind on malaria incidence, with reference at 3 m/s. North and Extreme North, Cameroon, 2015-2022.

Les graphiques ci-dessus montrent la diminution exponentielle du risque relatif de l’incidence du paludisme avec l’augmentation de la vitesse du vent sur les deux régions. Globalement, le risque relatif est supérieur à 1 dès que la vitesse du vent devient inférieur à 3 m/s.

Show the code
par(mfrow = c(2,2))
pred.n.wind %>% plot("slices", var="2", col=2, cumul=T, ylab="RR", main="North", exp=T, ylim=c(1, 4))
pred.en.wind %>% plot("slices", var="2", col=2, cumul=T, ylab="RR", main="Extreme North", exp=T, ylim=c(1, 4))
pred.n.wind %>% plot("slices", var="2", col=2, cumul=F, ylab="RR", main="North", exp=T, ylim=c(0.9, 1.5))
pred.en.wind %>% plot("slices", var="2", col=2, cumul=F, ylab="RR", main="Extreme North", exp=T, ylim=c(0.9, 1.5))
Figure 18: Cumulative lag-specific effect (top) and lag-specific effect (bottom) on relative risk of malaria incidence at 1.5 m/s of wind, with reference at 3 m/s. North and Extreme North, Cameroon, 2015-2022.

Quand une vitesse du vent de 2 m/s est observée sur plusieurs mois consécutif (saison des pluies), on observe l’augmentation du risque relatif sur les 5 prochains mois (graphiques du haut) et ce dès le premier mois où cette vitesse est observée. Le risque relatif atteint son maximum au bout de 5 mois, 2.05 (1.67-2.53) pour le Nord et 2.52 (2.05-3.1) pour l’Extreme Nord. Quand la saison sèche recommence et que la vitesse du vent ne diminue plus en-dessous de 2 m/s au fil des mois, on observe une diminution du risque relatif (graphiques du bas). Le risque relatif n’est plus strictement supérieur à 1 après 4 mois sur les deux régions.

3 Appendices

3.1 Missing case data

Show the code
dt.inc %>%
  dcast(district ~ year, value.var="case.conf", fun.agg = function(x){x %>% is.na %>% sum}) %>%
  kable %>% kable_styling
Table 4: Nombre de mois manquants par année et par district.
district 2015 2016 2017 2018 2019 2020 2021 2022
Bibemi 0 0 0 0 0 0 0 0
Bogo 0 0 0 0 0 0 0 0
Bourha 0 0 0 0 0 0 0 0
Figuil 0 0 0 0 0 0 0 0
Fotokol 0 0 0 0 0 0 0 0
Garoua 1 0 0 0 0 0 0 0 0
Garoua 2 0 0 0 0 0 0 0 0
Gaschiga 0 0 0 0 0 0 0 0
Gazawa 0 0 0 0 0 0 0 0
Golombe 0 0 0 0 0 0 0 0
Goulfey 0 0 0 0 0 0 0 0
Guere 0 0 0 0 0 0 0 0
Guider 0 0 0 0 0 0 0 0
Guidiguis 0 0 0 0 0 0 0 0
Hina 0 0 0 0 0 0 0 0
Kaele 0 0 0 0 0 0 0 0
Kar hay 0 0 0 0 0 0 0 0
Kolofata 0 0 0 0 0 0 0 0
Kousseri 0 0 0 0 0 0 0 0
Koza 0 0 0 0 0 0 0 0
Lagdo 0 0 0 0 0 0 0 0
Mada 0 0 0 0 0 0 0 0
Maga 0 0 0 0 0 0 0 0
Makary 0 0 0 0 0 0 0 0
Maroua 1 0 0 0 0 0 0 0 0
Maroua 2 0 0 0 0 0 0 0 0
Maroua 3 0 0 0 0 0 0 0 0
Mayo oulo 0 0 0 0 0 0 0 0
Meri 0 0 0 0 0 0 0 0
Mindif 0 0 0 0 0 0 0 0
Mogode 0 0 0 0 0 0 0 0
Mokolo 0 0 0 0 0 0 0 0
Mora 0 0 0 0 0 0 0 0
Moulvoudaye 0 0 0 0 0 0 0 0
Moutourwa 0 0 0 0 0 0 0 0
Ngong 0 0 0 0 0 0 0 0
Pette 0 0 0 0 0 0 0 0
Pitoa 0 0 0 0 0 0 0 0
Poli 0 0 0 0 0 0 0 0
Rey bouba 0 0 0 0 0 0 0 0
Roua 0 0 0 0 0 0 0 0
Tchollire 0 0 0 0 0 0 0 0
Tokombere 0 0 0 0 0 0 0 0
Touboro 0 0 0 0 0 0 0 0
Vele 0 0 0 0 0 0 0 0
Yagoua 0 0 0 0 0 0 0 0

3.2 Incidence and meterological data per region and year

Show the code
dt.temp <- dt.reg.y

dt.temp <- dt.temp[, lapply(.SD, round, 2), by=.(region, year, inc.lab)]

dt.temp[, "Incidence (1000 person-year)" := inc.lab]
dt.temp[, "Precipitation (mm/day)" := prec]
dt.temp[, "Soil wetness (%)" := paste(wetn * 100, " (", wetn.sd, ")", sep="")]
dt.temp[, "Temperature (°C)" := paste(temp, " (", temp.sd, ")", sep="")]
dt.temp[, "Wind (m/s)" := paste(wind, " (", wind.sd, ")", sep="")]

keep.var <- c("Incidence (1000 person-year)", "Precipitation (mm/day)", "Soil wetness (%)", "Temperature (°C)", "Wind (m/s)")

cbind(
  dt.temp[region=="Region Nord", c("year", ..keep.var), with=F],
  dt.temp[region=="Region Extreme Nord", ..keep.var]
) %>%
  kable %>% kable_styling %>%
  add_header_above(c(" ", "North" = 5, "Extreme North" = 5))
Table 5: Données du paludisme et des variables météorologiques par région et par année.
North
Extreme North
year Incidence (1000 person-year) Precipitation (mm/day) Soil wetness (%) Temperature (°C) Wind (m/s) Incidence (1000 person-year) Precipitation (mm/day) Soil wetness (%) Temperature (°C) Wind (m/s)
2015 190.6 (189.5-191.8) 2.88 42 (0.03) 28.36 (1.7) 2.07 (0.42) 164.3 (163.5-165.1) 0.00 37 (0.04) 28.76 (0.82) 2.52 (0.19)
2016 121.2 (120.3-122.2) 4.43 49 (0.02) 27.88 (1.63) 1.96 (0.42) 94.6 (93.9-95.2) 0.89 43 (0.05) 28.57 (1.02) 2.4 (0.2)
2017 103.4 (102.6-104.3) 3.86 47 (0.03) 28.2 (1.63) 1.98 (0.48) 82 (81.5-82.6) 0.00 41 (0.05) 28.76 (1.01) 2.45 (0.22)
2018 142.6 (141.6-143.6) 4.88 49 (0.02) 27.78 (1.88) 1.9 (0.38) 134.3 (133.5-135) 1.56 44 (0.05) 28.47 (0.92) 2.3 (0.17)
2019 90.8 (90-91.6) 4.97 51 (0.02) 28.01 (1.61) 1.91 (0.42) 128.7 (128-129.4) 1.56 42 (0.05) 28.8 (0.96) 2.33 (0.16)
2020 91.2 (90.5-92) 1.97 45 (0.05) 28.02 (1.98) 2.11 (0.4) 127.7 (127-128.4) 0.00 37 (0.03) 29.08 (0.87) 2.52 (0.12)
2021 103.8 (103-104.6) 2.89 45 (0.03) 28.49 (1.85) 2.09 (0.41) 243.8 (242.9-244.7) 1.45 35 (0.04) 29.74 (0.79) 2.47 (0.17)
2022 94.2 (93.5-95) 3.63 50 (0.03) 27.32 (1.47) 2.09 (0.44) 183.6 (182.9-184.4) 2.22 41 (0.04) 28.31 (0.8) 2.49 (0.17)

3.3 Models quality

Show the code
dlnm.n.prec %>% summary

Family: quasipoisson 
Link function: log 

Formula:
case.conf ~ cb.prec.n

Parametric coefficients:
               Estimate Std. Error t value Pr(>|t|)    
(Intercept)    -5.12733    0.10520 -48.738  < 2e-16 ***
cb.prec.nv1.l1  0.64508    0.11766   5.482 4.04e-07 ***
cb.prec.nv1.l2 -0.17552    0.09452  -1.857   0.0667 .  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


R-sq.(adj) =  0.133   Deviance explained = 33.7%
GCV = 769.68  Scale est. = 914.36    n = 90
Show the code
dlnm.n.prec %>% gam.check


Method: GCV   Optimizer: outer newton
Model required no smoothing parameter selectionModel rank =  3 / 3 
Show the code
dlnm.n.wetn %>% summary

Family: quasipoisson 
Link function: log 

Formula:
case.conf ~ cb.wetn.n

Parametric coefficients:
               Estimate Std. Error t value Pr(>|t|)    
(Intercept)    -5.15654    0.14105 -36.558  < 2e-16 ***
cb.wetn.nv1.l1  0.36740    0.09163   4.010 0.000128 ***
cb.wetn.nv1.l2 -0.39263    0.07909  -4.964  3.4e-06 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


R-sq.(adj) =   0.18   Deviance explained = 36.8%
GCV = 734.22  Scale est. = 851.12    n = 90
Show the code
dlnm.n.wetn %>% gam.check


Method: GCV   Optimizer: outer newton
Model required no smoothing parameter selectionModel rank =  3 / 3 
Show the code
dlnm.n.temp %>% summary

Family: quasipoisson 
Link function: log 

Formula:
case.conf ~ cb.temp.n

Parametric coefficients:
               Estimate Std. Error t value Pr(>|t|)    
(Intercept)    -4.64503    0.12058 -38.523  < 2e-16 ***
cb.temp.nv1.l1 -0.11259    0.11966  -0.941    0.349    
cb.temp.nv1.l2  0.65388    0.09464   6.909 7.67e-10 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


R-sq.(adj) =  0.191   Deviance explained = 40.1%
GCV = 695.45  Scale est. = 802.96    n = 90
Show the code
dlnm.n.temp %>% gam.check


Method: GCV   Optimizer: outer newton
Model required no smoothing parameter selectionModel rank =  3 / 3 
Show the code
dlnm.n.wind %>% summary

Family: quasipoisson 
Link function: log 

Formula:
case.conf ~ cb.wind.n

Parametric coefficients:
               Estimate Std. Error t value Pr(>|t|)    
(Intercept)    -4.10772    0.11177 -36.753  < 2e-16 ***
cb.wind.nv1.l1 -0.56120    0.10039  -5.590 2.57e-07 ***
cb.wind.nv1.l2  0.44554    0.08563   5.203 1.29e-06 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


R-sq.(adj) =  0.266   Deviance explained =   44%
GCV = 650.49  Scale est. = 728.26    n = 90
Show the code
dlnm.n.wind %>% gam.check


Method: GCV   Optimizer: outer newton
Model required no smoothing parameter selectionModel rank =  3 / 3 
Show the code
dlnm.en.prec %>% summary

Family: quasipoisson 
Link function: log 

Formula:
case.conf ~ cb.prec.en

Parametric coefficients:
                Estimate Std. Error t value Pr(>|t|)    
(Intercept)      -5.1101     0.1352 -37.787  < 2e-16 ***
cb.prec.env1.l1   1.2400     0.1806   6.867 9.27e-10 ***
cb.prec.env1.l2  -0.4282     0.1335  -3.207  0.00188 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


R-sq.(adj) =  0.419   Deviance explained = 47.2%
GCV = 3087.9  Scale est. = 3452.2    n = 90
Show the code
dlnm.en.prec %>% gam.check


Method: GCV   Optimizer: outer newton
Model required no smoothing parameter selectionModel rank =  3 / 3 
Show the code
dlnm.en.wetn %>% summary

Family: quasipoisson 
Link function: log 

Formula:
case.conf ~ cb.wetn.en

Parametric coefficients:
                Estimate Std. Error t value Pr(>|t|)    
(Intercept)     -5.20121    0.16031 -32.446  < 2e-16 ***
cb.wetn.env1.l1  0.66894    0.11438   5.848 8.52e-08 ***
cb.wetn.env1.l2 -0.63328    0.09717  -6.517 4.49e-09 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


R-sq.(adj) =   0.48   Deviance explained = 51.6%
GCV = 2831.4  Scale est. = 3022.7    n = 90
Show the code
dlnm.en.wetn %>% gam.check


Method: GCV   Optimizer: outer newton
Model required no smoothing parameter selectionModel rank =  3 / 3 
Show the code
dlnm.en.temp %>% summary

Family: quasipoisson 
Link function: log 

Formula:
case.conf ~ cb.temp.en

Parametric coefficients:
                Estimate Std. Error t value Pr(>|t|)    
(Intercept)      -4.9644     0.1872 -26.515   <2e-16 ***
cb.temp.env1.l1   0.2688     0.1497   1.795   0.0761 .  
cb.temp.env1.l2   1.2609     0.1134  11.116   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


R-sq.(adj) =  0.599   Deviance explained = 63.9%
GCV = 2109.5  Scale est. = 2211.3    n = 90
Show the code
dlnm.en.temp %>% gam.check


Method: GCV   Optimizer: outer newton
Model required no smoothing parameter selectionModel rank =  3 / 3 
Show the code
dlnm.en.wind %>% summary

Family: quasipoisson 
Link function: log 

Formula:
case.conf ~ cb.wind.en

Parametric coefficients:
                Estimate Std. Error t value Pr(>|t|)    
(Intercept)      -3.4142     0.1638 -20.840  < 2e-16 ***
cb.wind.env1.l1  -0.9069     0.1312  -6.910 7.62e-10 ***
cb.wind.env1.l2   0.8216     0.1169   7.026 4.49e-10 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


R-sq.(adj) =  0.552   Deviance explained = 57.1%
GCV = 2510.3  Scale est. = 2610.6    n = 90
Show the code
dlnm.en.wind %>% gam.check


Method: GCV   Optimizer: outer newton
Model required no smoothing parameter selectionModel rank =  3 / 3 

3.4 RR summary

3.4.1 Overall effect

Show the code
dt.rr.all[, c("region", "variable") := tstrsplit(model, ".", keep=2:3, fixed=T)]
dt.rr.all[, region := ifelse(region == "n", "Nord", "Extreme Nord")]
dt.rr.all[, variable := variable %>% factor(labels = c("Precipitation (mm/day)",
                                                       "Soil surface wetness (%)",
                                                       "Temperature (°C)",
                                                       "Wind (m/s)")
)]

dt.rr.all[, .(region, variable, value, RR)] %>%
  kable %>% kable_styling
Table 6: Relative risk for overall effects.
region variable value RR
Nord Precipitation (mm/day) 0.0 1 (1-1)
Nord Precipitation (mm/day) 0.5 1.1 (1-1.1)
Nord Precipitation (mm/day) 1.0 1.2 (1.1-1.2)
Nord Precipitation (mm/day) 1.5 1.3 (1.2-1.4)
Nord Precipitation (mm/day) 2.0 1.4 (1.2-1.5)
Nord Precipitation (mm/day) 2.5 1.5 (1.3-1.7)
Nord Precipitation (mm/day) 3.0 1.6 (1.3-1.9)
Nord Precipitation (mm/day) 3.5 1.7 (1.4-2.1)
Nord Precipitation (mm/day) 4.0 1.8 (1.5-2.3)
Nord Precipitation (mm/day) 4.5 2 (1.5-2.5)
Nord Precipitation (mm/day) 5.0 2.1 (1.6-2.8)
Nord Precipitation (mm/day) 5.5 2.3 (1.7-3.1)
Nord Precipitation (mm/day) 6.0 2.5 (1.8-3.4)
Nord Precipitation (mm/day) 6.5 2.7 (1.9-3.8)
Nord Precipitation (mm/day) 7.0 2.9 (1.9-4.2)
Nord Precipitation (mm/day) 7.5 3.1 (2-4.7)
Nord Precipitation (mm/day) 8.0 3.3 (2.1-5.2)
Nord Precipitation (mm/day) 8.5 3.6 (2.2-5.7)
Nord Precipitation (mm/day) 9.0 3.9 (2.3-6.4)
Nord Precipitation (mm/day) 9.5 4.2 (2.5-7.1)
Nord Precipitation (mm/day) 10.0 4.5 (2.6-7.8)
Nord Precipitation (mm/day) 10.5 4.8 (2.7-8.7)
Nord Precipitation (mm/day) 11.0 5.2 (2.8-9.6)
Nord Precipitation (mm/day) 11.5 5.6 (3-10.6)
Nord Temperature (°C) 0.2 1 (1-1)
Nord Temperature (°C) 0.3 1.1 (1.1-1.2)
Nord Temperature (°C) 0.4 1.3 (1.1-1.5)
Nord Temperature (°C) 0.5 1.5 (1.2-1.9)
Nord Temperature (°C) 0.6 1.7 (1.3-2.3)
Nord Temperature (°C) 0.7 2 (1.4-2.8)
Nord Temperature (°C) 0.8 2.2 (1.5-3.4)
Nord Soil surface wetness (%) 24.4 1.1 (0.7-1.9)
Nord Soil surface wetness (%) 24.6 1.1 (0.7-1.9)
Nord Soil surface wetness (%) 24.8 1.1 (0.7-1.8)
Nord Soil surface wetness (%) 25.0 1.1 (0.7-1.8)
Nord Soil surface wetness (%) 25.2 1.1 (0.7-1.8)
Nord Soil surface wetness (%) 25.4 1.1 (0.7-1.8)
Nord Soil surface wetness (%) 25.6 1.1 (0.7-1.7)
Nord Soil surface wetness (%) 25.8 1.1 (0.7-1.7)
Nord Soil surface wetness (%) 26.0 1.1 (0.7-1.7)
Nord Soil surface wetness (%) 26.2 1.1 (0.7-1.7)
Nord Soil surface wetness (%) 26.4 1.1 (0.8-1.6)
Nord Soil surface wetness (%) 26.6 1.1 (0.8-1.6)
Nord Soil surface wetness (%) 26.8 1.1 (0.8-1.6)
Nord Soil surface wetness (%) 27.0 1.1 (0.8-1.6)
Nord Soil surface wetness (%) 27.2 1.1 (0.8-1.5)
Nord Soil surface wetness (%) 27.4 1.1 (0.8-1.5)
Nord Soil surface wetness (%) 27.6 1.1 (0.8-1.5)
Nord Soil surface wetness (%) 27.8 1.1 (0.8-1.5)
Nord Soil surface wetness (%) 28.0 1.1 (0.8-1.4)
Nord Soil surface wetness (%) 28.2 1.1 (0.8-1.4)
Nord Soil surface wetness (%) 28.4 1.1 (0.8-1.4)
Nord Soil surface wetness (%) 28.6 1.1 (0.8-1.4)
Nord Soil surface wetness (%) 28.8 1.1 (0.8-1.4)
Nord Soil surface wetness (%) 29.0 1.1 (0.8-1.3)
Nord Soil surface wetness (%) 29.2 1.1 (0.8-1.3)
Nord Soil surface wetness (%) 29.4 1.1 (0.9-1.3)
Nord Soil surface wetness (%) 29.6 1.1 (0.9-1.3)
Nord Soil surface wetness (%) 29.8 1 (0.9-1.3)
Nord Soil surface wetness (%) 30.0 1 (0.9-1.2)
Nord Soil surface wetness (%) 30.2 1 (0.9-1.2)
Nord Soil surface wetness (%) 30.4 1 (0.9-1.2)
Nord Soil surface wetness (%) 30.6 1 (0.9-1.2)
Nord Soil surface wetness (%) 30.8 1 (0.9-1.2)
Nord Soil surface wetness (%) 31.0 1 (0.9-1.2)
Nord Soil surface wetness (%) 31.2 1 (0.9-1.1)
Nord Soil surface wetness (%) 31.4 1 (0.9-1.1)
Nord Soil surface wetness (%) 31.6 1 (0.9-1.1)
Nord Soil surface wetness (%) 31.8 1 (0.9-1.1)
Nord Soil surface wetness (%) 32.0 1 (1-1.1)
Nord Soil surface wetness (%) 32.2 1 (1-1.1)
Nord Soil surface wetness (%) 32.4 1 (1-1)
Nord Soil surface wetness (%) 32.6 1 (1-1)
Nord Soil surface wetness (%) 32.8 1 (1-1)
Nord Soil surface wetness (%) 33.0 1 (1-1)
Nord Soil surface wetness (%) 33.2 1 (1-1)
Nord Soil surface wetness (%) 33.4 1 (1-1)
Nord Soil surface wetness (%) 33.6 1 (1-1)
Nord Soil surface wetness (%) 33.8 1 (0.9-1)
Nord Soil surface wetness (%) 34.0 1 (0.9-1)
Nord Soil surface wetness (%) 34.2 1 (0.9-1.1)
Nord Soil surface wetness (%) 34.4 1 (0.9-1.1)
Nord Soil surface wetness (%) 34.6 1 (0.9-1.1)
Nord Soil surface wetness (%) 34.8 1 (0.9-1.1)
Nord Soil surface wetness (%) 35.0 1 (0.9-1.1)
Nord Soil surface wetness (%) 35.2 1 (0.9-1.1)
Nord Wind (m/s) 1.2 3.6 (2.2-5.8)
Nord Wind (m/s) 1.3 3.3 (2.1-5.3)
Nord Wind (m/s) 1.4 3.1 (2-4.8)
Nord Wind (m/s) 1.5 2.9 (1.9-4.3)
Nord Wind (m/s) 1.6 2.7 (1.9-3.9)
Nord Wind (m/s) 1.7 2.5 (1.8-3.6)
Nord Wind (m/s) 1.8 2.3 (1.7-3.2)
Nord Wind (m/s) 1.9 2.2 (1.6-2.9)
Nord Wind (m/s) 2.0 2 (1.6-2.7)
Nord Wind (m/s) 2.1 1.9 (1.5-2.4)
Nord Wind (m/s) 2.2 1.8 (1.4-2.2)
Nord Wind (m/s) 2.3 1.6 (1.4-2)
Nord Wind (m/s) 2.4 1.5 (1.3-1.8)
Nord Wind (m/s) 2.5 1.4 (1.2-1.6)
Nord Wind (m/s) 2.6 1.3 (1.2-1.5)
Nord Wind (m/s) 2.7 1.2 (1.1-1.3)
Nord Wind (m/s) 2.8 1.2 (1.1-1.2)
Nord Wind (m/s) 2.9 1.1 (1-1.1)
Nord Wind (m/s) 3.0 1 (1-1)
Nord Wind (m/s) 3.1 0.9 (0.9-1)
Nord Wind (m/s) 3.2 0.9 (0.8-0.9)
Extreme Nord Precipitation (mm/day) 0.0 1 (1-1)
Extreme Nord Precipitation (mm/day) 0.5 1.2 (1.1-1.2)
Extreme Nord Precipitation (mm/day) 1.0 1.4 (1.3-1.5)
Extreme Nord Precipitation (mm/day) 1.5 1.7 (1.4-1.9)
Extreme Nord Precipitation (mm/day) 2.0 2 (1.6-2.4)
Extreme Nord Precipitation (mm/day) 2.5 2.3 (1.8-3)
Extreme Nord Precipitation (mm/day) 3.0 2.7 (2-3.7)
Extreme Nord Precipitation (mm/day) 3.5 3.2 (2.3-4.6)
Extreme Nord Precipitation (mm/day) 4.0 3.8 (2.6-5.7)
Extreme Nord Precipitation (mm/day) 4.5 4.5 (2.9-7)
Extreme Nord Precipitation (mm/day) 5.0 5.3 (3.2-8.7)
Extreme Nord Precipitation (mm/day) 5.5 6.3 (3.6-10.8)
Extreme Nord Precipitation (mm/day) 6.0 7.4 (4.1-13.4)
Extreme Nord Precipitation (mm/day) 6.5 8.8 (4.6-16.7)
Extreme Nord Precipitation (mm/day) 7.0 10.4 (5.2-20.7)
Extreme Nord Precipitation (mm/day) 7.5 12.2 (5.8-25.7)
Extreme Nord Precipitation (mm/day) 8.0 14.5 (6.5-32)
Extreme Nord Precipitation (mm/day) 8.5 17.1 (7.4-39.7)
Extreme Nord Precipitation (mm/day) 9.0 20.2 (8.3-49.3)
Extreme Nord Precipitation (mm/day) 9.5 23.9 (9.3-61.2)
Extreme Nord Precipitation (mm/day) 10.0 28.2 (10.5-76)
Extreme Nord Temperature (°C) 0.1 0.8 (0.7-0.9)
Extreme Nord Temperature (°C) 0.2 1 (1-1)
Extreme Nord Temperature (°C) 0.3 1.3 (1.2-1.4)
Extreme Nord Temperature (°C) 0.4 1.6 (1.3-1.8)
Extreme Nord Temperature (°C) 0.5 2 (1.5-2.5)
Extreme Nord Temperature (°C) 0.6 2.4 (1.8-3.4)
Extreme Nord Temperature (°C) 0.7 3.1 (2-4.6)
Extreme Nord Temperature (°C) 0.8 3.8 (2.3-6.2)
Extreme Nord Soil surface wetness (%) 23.6 0.5 (0.3-0.9)
Extreme Nord Soil surface wetness (%) 23.8 0.5 (0.3-0.9)
Extreme Nord Soil surface wetness (%) 24.0 0.5 (0.3-0.9)
Extreme Nord Soil surface wetness (%) 24.2 0.5 (0.3-0.9)
Extreme Nord Soil surface wetness (%) 24.4 0.5 (0.3-0.9)
Extreme Nord Soil surface wetness (%) 24.6 0.6 (0.3-0.9)
Extreme Nord Soil surface wetness (%) 24.8 0.6 (0.4-0.9)
Extreme Nord Soil surface wetness (%) 25.0 0.6 (0.4-0.9)
Extreme Nord Soil surface wetness (%) 25.2 0.6 (0.4-0.9)
Extreme Nord Soil surface wetness (%) 25.4 0.6 (0.4-0.9)
Extreme Nord Soil surface wetness (%) 25.6 0.6 (0.4-0.9)
Extreme Nord Soil surface wetness (%) 25.8 0.6 (0.4-0.9)
Extreme Nord Soil surface wetness (%) 26.0 0.6 (0.4-0.9)
Extreme Nord Soil surface wetness (%) 26.2 0.6 (0.4-0.9)
Extreme Nord Soil surface wetness (%) 26.4 0.6 (0.4-0.9)
Extreme Nord Soil surface wetness (%) 26.6 0.6 (0.5-0.9)
Extreme Nord Soil surface wetness (%) 26.8 0.7 (0.5-0.9)
Extreme Nord Soil surface wetness (%) 27.0 0.7 (0.5-0.9)
Extreme Nord Soil surface wetness (%) 27.2 0.7 (0.5-0.9)
Extreme Nord Soil surface wetness (%) 27.4 0.7 (0.5-0.9)
Extreme Nord Soil surface wetness (%) 27.6 0.7 (0.5-0.9)
Extreme Nord Soil surface wetness (%) 27.8 0.7 (0.5-0.9)
Extreme Nord Soil surface wetness (%) 28.0 0.7 (0.6-0.9)
Extreme Nord Soil surface wetness (%) 28.2 0.7 (0.6-0.9)
Extreme Nord Soil surface wetness (%) 28.4 0.7 (0.6-0.9)
Extreme Nord Soil surface wetness (%) 28.6 0.8 (0.6-0.9)
Extreme Nord Soil surface wetness (%) 28.8 0.8 (0.6-0.9)
Extreme Nord Soil surface wetness (%) 29.0 0.8 (0.7-1)
Extreme Nord Soil surface wetness (%) 29.2 0.8 (0.7-1)
Extreme Nord Soil surface wetness (%) 29.4 0.8 (0.7-1)
Extreme Nord Soil surface wetness (%) 29.6 0.8 (0.7-1)
Extreme Nord Soil surface wetness (%) 29.8 0.8 (0.7-1)
Extreme Nord Soil surface wetness (%) 30.0 0.9 (0.8-1)
Extreme Nord Soil surface wetness (%) 30.2 0.9 (0.8-1)
Extreme Nord Soil surface wetness (%) 30.4 0.9 (0.8-1)
Extreme Nord Soil surface wetness (%) 30.6 0.9 (0.8-1)
Extreme Nord Soil surface wetness (%) 30.8 0.9 (0.8-1)
Extreme Nord Soil surface wetness (%) 31.0 0.9 (0.9-1)
Extreme Nord Soil surface wetness (%) 31.2 0.9 (0.9-1)
Extreme Nord Soil surface wetness (%) 31.4 1 (0.9-1)
Extreme Nord Soil surface wetness (%) 31.6 1 (0.9-1)
Extreme Nord Soil surface wetness (%) 31.8 1 (1-1)
Extreme Nord Soil surface wetness (%) 32.0 1 (1-1)
Extreme Nord Soil surface wetness (%) 32.2 1 (1-1)
Extreme Nord Soil surface wetness (%) 32.4 1 (1-1.1)
Extreme Nord Soil surface wetness (%) 32.6 1 (1-1.1)
Extreme Nord Soil surface wetness (%) 32.8 1.1 (1-1.1)
Extreme Nord Soil surface wetness (%) 33.0 1.1 (1-1.2)
Extreme Nord Soil surface wetness (%) 33.2 1.1 (1-1.2)
Extreme Nord Soil surface wetness (%) 33.4 1.1 (1-1.2)
Extreme Nord Soil surface wetness (%) 33.6 1.1 (1-1.3)
Extreme Nord Soil surface wetness (%) 33.8 1.2 (1-1.3)
Extreme Nord Soil surface wetness (%) 34.0 1.2 (1-1.3)
Extreme Nord Soil surface wetness (%) 34.2 1.2 (1-1.4)
Extreme Nord Soil surface wetness (%) 34.4 1.2 (1-1.4)
Extreme Nord Soil surface wetness (%) 34.6 1.2 (1-1.5)
Extreme Nord Soil surface wetness (%) 34.8 1.3 (1-1.5)
Extreme Nord Soil surface wetness (%) 35.0 1.3 (1.1-1.5)
Extreme Nord Soil surface wetness (%) 35.2 1.3 (1.1-1.6)
Extreme Nord Soil surface wetness (%) 35.4 1.3 (1.1-1.6)
Extreme Nord Soil surface wetness (%) 35.6 1.3 (1.1-1.7)
Extreme Nord Soil surface wetness (%) 35.8 1.4 (1.1-1.7)
Extreme Nord Soil surface wetness (%) 36.0 1.4 (1.1-1.8)
Extreme Nord Soil surface wetness (%) 36.2 1.4 (1.1-1.8)
Extreme Nord Wind (m/s) 1.2 4.8 (3-7.9)
Extreme Nord Wind (m/s) 1.3 4.4 (2.8-7)
Extreme Nord Wind (m/s) 1.4 4.1 (2.6-6.3)
Extreme Nord Wind (m/s) 1.5 3.7 (2.5-5.6)
Extreme Nord Wind (m/s) 1.6 3.4 (2.3-5)
Extreme Nord Wind (m/s) 1.7 3.1 (2.2-4.4)
Extreme Nord Wind (m/s) 1.8 2.9 (2.1-4)
Extreme Nord Wind (m/s) 1.9 2.6 (2-3.5)
Extreme Nord Wind (m/s) 2.0 2.4 (1.8-3.1)
Extreme Nord Wind (m/s) 2.1 2.2 (1.7-2.8)
Extreme Nord Wind (m/s) 2.2 2 (1.6-2.5)
Extreme Nord Wind (m/s) 2.3 1.8 (1.5-2.2)
Extreme Nord Wind (m/s) 2.4 1.7 (1.4-2)
Extreme Nord Wind (m/s) 2.5 1.6 (1.4-1.8)
Extreme Nord Wind (m/s) 2.6 1.4 (1.3-1.6)
Extreme Nord Wind (m/s) 2.7 1.3 (1.2-1.4)
Extreme Nord Wind (m/s) 2.8 1.2 (1.1-1.3)
Extreme Nord Wind (m/s) 2.9 1.1 (1.1-1.1)
Extreme Nord Wind (m/s) 3.0 1 (1-1)
Extreme Nord Wind (m/s) 3.1 0.9 (0.9-0.9)
Extreme Nord Wind (m/s) 3.2 0.8 (0.8-0.9)
Extreme Nord Wind (m/s) 3.3 0.8 (0.7-0.8)
Extreme Nord Wind (m/s) 3.4 0.7 (0.6-0.8)
Extreme Nord Wind (m/s) 3.5 0.6 (0.6-0.7)
Extreme Nord Wind (m/s) 3.6 0.6 (0.5-0.7)
Extreme Nord Wind (m/s) 3.7 0.5 (0.4-0.7)
Extreme Nord Wind (m/s) 3.8 0.5 (0.4-0.6)

3.4.2 Lag-specific effect

Show the code
dt.rr.lag %>%
  dcast(region + variable + effect ~ Lag, value.var="RR") %>%
  .[order(variable, -region, effect)] %>%
  kable %>% kable_styling
Table 7: Relative risk for lag-specific effects.
region variable effect Lag 0 Lag 1 Lag 2 Lag 3 Lag 4 Lag 5 Lag 6
Region Nord Precipitation (mm/day) Cumulative lag-specific 1.06 (1.04-1.08) 1.04 (1.03-1.06) 1.03 (1.01-1.05) 1.07 (1.04-1.09) 1.19 (1.12-1.25) 1.28 (1.18-1.39) 1.35 (1.21-1.51)
Region Nord Precipitation (mm/day) Lag-specific 1.07 (1.04-1.09) 1.05 (1.03-1.07) 1.04 (1.02-1.05) 1.02 (1-1.05) 1.13 (1.08-1.18) 1.24 (1.15-1.33) 1.32 (1.2-1.45)
Region Extreme Nord Precipitation (mm/day) Cumulative lag-specific 1.14 (1.11-1.18) 1.1 (1.07-1.13) 1.06 (1.02-1.1) 1.16 (1.12-1.21) 1.49 (1.35-1.64) 1.77 (1.53-2.04) 1.95 (1.6-2.38)
Region Extreme Nord Precipitation (mm/day) Lag-specific 1.16 (1.12-1.21) 1.12 (1.09-1.15) 1.08 (1.05-1.11) 1.04 (1-1.08) 1.33 (1.24-1.42) 1.64 (1.45-1.85) 1.87 (1.58-2.22)
Region Nord Soil surface wetness (%) Cumulative lag-specific 1.08 (1.06-1.11) 1.04 (1.02-1.06) 1 (0.97-1.02) 1.11 (1.07-1.14) 1.28 (1.18-1.38) 1.35 (1.21-1.51) 1.31 (1.13-1.51)
Region Nord Soil surface wetness (%) Lag-specific 1.11 (1.07-1.14) 1.06 (1.04-1.09) 1.02 (1-1.04) 0.97 (0.94-1) 1.2 (1.13-1.27) 1.33 (1.2-1.46) 1.34 (1.18-1.52)
Region Extreme Nord Soil surface wetness (%) Cumulative lag-specific 1.14 (1.1-1.17) 1.07 (1.04-1.09) 1 (0.97-1.03) 1.17 (1.13-1.21) 1.47 (1.34-1.6) 1.61 (1.42-1.83) 1.56 (1.33-1.84)
Region Extreme Nord Soil surface wetness (%) Lag-specific 1.17 (1.13-1.21) 1.1 (1.07-1.13) 1.03 (1.01-1.06) 0.97 (0.94-1) 1.33 (1.25-1.42) 1.56 (1.4-1.74) 1.61 (1.4-1.86)
Region Nord Temperature (°C) Cumulative lag-specific 1.18 (1.09-1.27) 1.02 (0.96-1.08) 0.87 (0.82-0.94) 1.27 (1.16-1.39) 1.64 (1.3-2.05) 1.56 (1.13-2.16) 1.11 (0.74-1.68)
Region Nord Temperature (°C) Lag-specific 1.27 (1.16-1.39) 1.09 (1.03-1.17) 0.94 (0.89-1) 0.81 (0.75-0.88) 1.5 (1.27-1.77) 1.66 (1.26-2.19) 1.37 (0.95-1.97)
Region Extreme Nord Temperature (°C) Cumulative lag-specific 1.15 (1.07-1.23) 0.93 (0.88-0.99) 0.76 (0.72-0.81) 1.27 (1.17-1.39) 1.51 (1.22-1.87) 1.19 (0.88-1.61) 0.62 (0.42-0.9)
Region Extreme Nord Temperature (°C) Lag-specific 1.27 (1.17-1.39) 1.03 (0.97-1.1) 0.84 (0.8-0.89) 0.69 (0.64-0.74) 1.46 (1.25-1.71) 1.41 (1.08-1.83) 0.9 (0.64-1.27)
Region Nord Wind (m/s) Cumulative lag-specific 1.2 (1.15-1.27) 1.11 (1.07-1.15) 1.02 (0.97-1.07) 1.26 (1.18-1.33) 1.75 (1.51-2.03) 2.05 (1.67-2.53) 2.04 (1.56-2.66)
Region Nord Wind (m/s) Lag-specific 1.26 (1.18-1.33) 1.15 (1.11-1.2) 1.06 (1.02-1.1) 0.97 (0.92-1.03) 1.51 (1.36-1.69) 1.94 (1.62-2.32) 2.09 (1.65-2.64)
Region Extreme Nord Wind (m/s) Cumulative lag-specific 1.28 (1.21-1.34) 1.13 (1.09-1.18) 1.01 (0.96-1.06) 1.36 (1.28-1.44) 2.08 (1.79-2.42) 2.52 (2.05-3.1) 2.4 (1.84-3.14)
Region Extreme Nord Wind (m/s) Lag-specific 1.36 (1.28-1.44) 1.2 (1.15-1.25) 1.07 (1.03-1.11) 0.95 (0.89-1.01) 1.73 (1.55-1.93) 2.36 (1.97-2.83) 2.54 (2-3.21)

4 References

Boelle, Pierre-Yves, and Thomas Obadia. 2023. R0: Estimation of R0 and Real-Time Reproduction Number from Epidemics. https://github.com/tobadia/R0.
Cauchemez, Simon, Pierre-Yves Boëlle, Guy Thomas, and Alain-Jacques Valleron. 2006. Estimating in Real Time the Efficacy of Measures to Control Emerging Communicable Diseases.” American Journal of Epidemiology 164 (6): 591–97. https://doi.org/10.1093/aje/kwj274.
Gasparrini, A. 2011. “Distributed Lag Linear and Non-Linear Models in R: The Package dlnm.” Journal of Statistical Software 43 (8): 1–20. https://doi.org/10.18637/jss.v043.i08.
R Core Team. 2018. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/.
Taylor, Sean, and Ben Letham. 2021. Prophet: Automatic Forecasting Procedure. https://github.com/facebook/prophet.
Wallinga, Jacco, and Peter Teunis. 2004. Different Epidemic Curves for Severe Acute Respiratory Syndrome Reveal Similar Impacts of Control Measures.” American Journal of Epidemiology 160 (6): 509–16. https://doi.org/10.1093/aje/kwh255.
Wood, S. N. 2004. “Stable and Efficient Multiple Smoothing Parameter Estimation for Generalized Additive Models.” Journal of the American Statistical Association 99 (467): 673–86.

Reuse

Citation

BibTeX citation:
@online{beneteau2024,
  author = {Beneteau, Samuel and Mouliom, Abas},
  title = {Modélisation de La Prévalence Du Paludisme Par Des Facteurs
    Météorologiques à Effets Décalés Dans Les Régions {Nord} Et
    {Extrême-nord} Du {Cameroun} de 2015 à 2024.},
  date = {2024-09-01},
  url = {https://malaria-lag-model-fd6eec.gitlab.io},
  langid = {en}
}
For attribution, please cite this work as:
Beneteau, Samuel, and Abas Mouliom. 2024. “Modélisation de La Prévalence Du Paludisme Par Des Facteurs Météorologiques à Effets Décalés Dans Les Régions Nord Et Extrême-Nord Du Cameroun de 2015 à 2024.” Unpublished. September 1, 2024. https://malaria-lag-model-fd6eec.gitlab.io.