Figures
Abstract
Disease mapping models help create disease risk maps, which public health policymakers can use to design disease control and monitoring programmes. These models are now routinely implemented using spatial statistical software packages that use frequentist estimation methods, such as SaTScan and HDSpatialScan, and Bayesian estimation methods, such as the Windows version of Bayesian inference using Gibbs sampling (WinBUGS) and R integrated nested Laplace approximation (INLA). We aimed to develop a user-friendly joint disease spatiotemporal modelling and mapping application (JSTMapp) for epidemiologists and health statistics analysts based on Bayesian methods. Using the R package Shiny and utilising the proven and embedded joint spatial modelling technology in the Bayesian statistical software INLA, we developed the JSTMapp. To illustrate its usage, we used cattle bovine tuberculosis (BTB) and human extrapulmonary tuberculosis (EPTB) data in Africa. The application enables the estimation, mapping, and visualisation of both disease-specific and general spatial and temporal risk factors. It also can evaluate spatial, temporal and spatiotemporal correlations. Additionally, exploratory analyses can be performed, such as mapping the standardised disease incidence ratio. The application showed improved performance when launched from GitHub R as opposed to online from the Shiny server. Improving performance from online servers may seek to use personal servers other than Shiny.
Citation: Ngwira A, Manda SO, Karimuribo ED, Kimera SI (2025) JSTMapp: A web-based joint spatiotemporal modelling and mapping application for epidemiologists. PLoS One 20(12): e0332607. https://doi.org/10.1371/journal.pone.0332607
Editor: Rebecca Lee Smith, University of Illinois College of Veterinary Medicine, UNITED STATES OF AMERICA
Received: March 14, 2025; Accepted: September 2, 2025; Published: December 2, 2025
Copyright: © 2025 Ngwira et al. This is an open access article distributed under the terms of the Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original author and source are credited.
Data Availability: The data are available from figshare at https://doi.org/10.6084/m9.figshare.30172651.v1.
Funding: This study was supported by the Regional Scholarship and Innovation Fund (RSIF) of the Partnership for Skills in Applied Sciences, Engineering and Technology (PASET) (Project Grant No. P165581) grant to SACIDS Africa Centre of Excellence for Infectious Diseases of Humans and Animals in Southern and East Africa (SACIDS-ACE) at the Sokoine University of Agriculture (SUA). Alfred Ngwira was a recipient of an RSIF-PASET doctoral scholarship at SUA.
Competing interests: The authors have declared that no competing interests exist.
Introduction
Joint spatiotemporal modelling involves analysing multiple outcome data collected at the exact geographical location and time. The purpose is to establish the spatiotemporal distribution and correlation between diseases. This information is vital for investigating aetiological factors and designing integrated disease control and surveillance programmes. In this context, the risk factors of one disease are inferred from the risk factors of another disease that exhibits a similar pattern [1]. Most of the data is typically areal, aggregated at a geographic unit such as a county, although point-level data is also employed [2]. Common joint spatial modelling approaches include the multivariate conditional autoregressive (MCAR) model and the shared component construction [3,4]. The MCAR model aims to estimate and test for pairwise disease correlation, whereas the latter assumes correlation exists but does not test for it [4]. The commonly used software for joint disease modelling and mapping includes the Windows version of Bayesian inference using Gibbs sampling (WinBUGS) and R integrated nested Laplace approximation (INLA) [2].
Challenges faced by epidemiologists in joint disease modelling and mapping include knowledge of the theory behind models [5], as they are not part of the conventional statistics. Another challenge is the availability of data, particularly in animal health, which is hindered by poor disease surveillance systems, lack of political will, and insufficient funding for research [6]. Inadequate data analytical skills, especially in programming languages, are further issues faced by many epidemiologists [7,8]. Consequently, using frequently used software for joint disease modelling and mapping [2] requires programming knowledge that most epidemiologists lack.
One way to assist ordinary epidemiologists with limited analytical skills is the development of a user-friendly analytical interface that does not require much programming knowledge. Additionally, the interface may also simplify teaching for students with no or minimal programming background [9]. This may be facilitated by the interest students develop when statistics are embedded into technology [9]. While there has been progress in the development of user-friendly applications for spatiotemporal disease modelling and mapping [10,11], limitations remain in the area of mapping multiple diseases. We set out to develop a joint spatiotemporal modelling and mapping application (JSTMapp) based on the R-INLA code. Cattle bovine tuberculosis (BTB) and human extrapulmonary tuberculosis (EPTB) data in Africa were used for illustration. The JSTMapp may also be applicable for non-health-related outcomes.
Materials and methods
Modelling
The number of disease cases of disease
from region
and time
are assumed to be distributed as Poisson with mean
, where
is the expected number of cases and
is the relative risk. The
are computed by multiplying the population at risk in each region by the disease incidence rate in the standard population [12], where the standard population is the population for the entire study area, including all regions. If at time
,
is the population at risk in the region
, and
is the disease incidence rate in the standard population, the expected value in the region
is defined as
. The disease incidence rate in the standard population at a given time is estimated by the ratio of the total observed cases to the total population at risk. The joint spatiotemporal model of multiple diseases [13,14] is defined as:
where are the disease-specific intercepts, and
and
are disease-specific spatial, temporal and spatiotemporal effects, respectively. The
and
are the shared spatial, temporal and spatiotemporal effects, respectively. Parameters
are the weights of the shared effects. Currently, the JSTMapp is designed to permit the user enter cases of two diseases
.
The prior distribution of the shared and disease-specific spatial effects is the intrinsic conditional autoregressive (ICAR) [15]:
The are the spatial effects other than
, while
and
are the spatial variance and spatial neighbourhood matrix, respectively. The elements of the neighbourhood matrix are the binary indicators:
The shared and disease-specific temporal effects are assigned the first-order random walk (RW1) with a weight matrix , which defines the temporal neighbourhood structure. For a set of temporal effects
at equally spaced time points
, the first-order random walk [16] is specified as:
The are the temporal effects apart from
, and
is the temporal variance. The expression for RW1 (4) can also be written as an ICAR [14,16]:
, where
are temporal weights forming the adjacency matrix and
is the precision of
. The spatiotemporal term is assigned the normal distribution
, where
is the variance and
is the precision. The log-Normal distribution with zero mean and 1/5.9 precision is used to model weights of the shared effects [14]. The precision or inverted variance parameters are assigned either a logGamma (0.5,0.0005), uniform (0,10) or half-Cauchy with a scale parameter equal to 25 [14,17]. While the uniform is considered to be less informative than the log-Gamma, the half-Cauchy is robust to changes in the hyperparameters compared to the log-Gamma [14,17,18]. The fixed effects such as the intercepts are assigned a normal distribution with zero mean and 0.001 precision.
Model estimation involves estimating a vector of the main parameters , such as spatial, temporal and spatiotemporal effects, including weights of the shared effects [19]. It also involves estimating the vector of variance or precision parameters
for all outcomes. This is done by computing the joint posterior distribution of the two sets of parameters given the stacked data
for all outcomes defined as:
where is the conditional data likelihood,
is the conditional prior of
given
and
is the prior of
. Estimation of the joint posterior is through the integrated nested Laplace approximation (INLA) [20], where the marginal distributions of specific parameters
for
and
for
are computed. The expressions for the posterior marginals are specified as:
Once the posterior marginals are obtained, posterior summaries such as the mean and standard deviation are computed.
To have smooth model-based risk maps, the inverse distance weighting (IDW) interpolation is implemented [21], where the estimated risk values from the fitted model are used as input observed values during spatial interpolation. Assuming for each time point
,
for
are the centroids of grid locations that have model-based risk
, the estimate of the risk at unobserved grid location
for
by IDW is defined as:
where is the weight of each data point in estimating the unknown value and is specified as:
The quantity is the Euclidean distance between the known
and unknown grid point
, where
is the power for control and is set to 2, which is considered to be the frequently used value [21]. The dimension of the prediction grid is set at 10000 × 10000, since this tends to produce a smoother risk surface [21].
Components of JSTMapp
Input bar.
This bar has input tabs where the disease case data in csv format is uploaded. Data variables such as area and time are also selected from this sidebar. The shapefile data file with extension shp and all associated files are also uploaded in this input bar. The input sidebar has additional input tabs, which are conditional to the model estimation tab, where the user can select the number of covariates, and model type, including specifying the prior for precision parameters.
Output bar.
The output bar has six tabs, which include “Explore”, “Model estimation”, “Spatial and temporal risk”, “Spatiotemporal risk”, “Prediction” and “Correlation”. In the “Explore” tab, a map of the standardised raw incidence ratios and a time series of the observed cases are plotted. Model estimation is performed under the “Model estimation” tab, while spatial, temporal and spatiotemporal risk is displayed under the “Spatial and temporal risk” and “Spatiotemporal risk” tabs, respectively. The “Prediction” tab is designed to show the predicted raw incidence ratio and the model-based risk. Evaluation of spatial, temporal and spatiotemporal correlation of weights of the shared effects using Pearson correlation is conducted under the “Correlation” tab. Displaying of outputs from the tabs after the “Model estimation” tab is dependent on the outputs from the “Model estimation” tab, otherwise, they do not show.
Installation.
The JSTMapp can be run in R/RStudio software by launching it from the GitHub repository at https://github.com/alfredngwira/JSTMapp. This can be done by running the following command:
>shiny::runGitHub(“alfredngwira/JSTMapp”,subdir=”inst/JSTMapp”)
Alternatively, the user can access the JSTMapp’s interface in R/RStudio by executing the following commands:
>install.packages(“devtools”)
>devtools::install_github(“alfredngwira/JSTMapp”, ref=”main”)
>library(JSTMapp)
>run_app()
To use the JSTMapp in R/RStudio, the R packages shiny, INLA, ggplot2, gridExtra, RColorBrewer, Hmisc, shinyjs, dplyr, spdep, raster, tmap, gstat, dotwhisker and sn must be installed. A description of these R packages in terms of how they function when using JSTMapp is shown in Table 1.
The JSTMapp user interface can also be accessed online from the Shiny server at https://alfredngwira.shinyapps.io/JSTMapp. The online version uses the server computer and it tends to be associated with memory problems, especially when the free payment plan is utilised. We recommend using the application in R/RStudio by launching it from GitHub, where the local computer performs the computation, thereby minimising system memory issues.
Illustrative example
Sources of data
In this section, we demonstrated the usage of JSTMapp by analysing cattle bovine tuberculosis (BTB) and human extrapulmonary tuberculosis (EPTB) case data for African countries from 2005 to 2018. The choice of cattle BTB and human EPTB was due to their epidemiological relationship [35] and the scarcity of laboratory-diagnosed human zoonotic TB cases. We considered the study period 2005–2018 since case data for cattle BTB were available only during this time frame. The cattle BTB data were accessed from the World Organisation for Animal Health Information System (WAHIS) [36], while human TB data were obtained from the World Health Organisation (WHO) [37]. From the human TB data file, in addition to EPTB, we also collated the total number of human TB cases per country and per year, which served as the total population at risk. Data were also compiled on total cattle population, including number of slaughtered cattle for each country and year from the Food and Agriculture Organisation (FAO) [38]. The data on the number of slaughtered cattle was used as cattle population at risk of BTB, considering that most BTB cases are diagnosed at abattoirs through postmortem examination. We also collected human population data for each country and year from the World Bank [39], including the average temperature and precipitation data for each country from WorldClim [40]. Using land area in km2 [41], cattle and human population for each country, we calculated densities by dividing population by land area. Population density, average temperature and precipitation were used as covariates. Our approach in modelling national and annual level outcome data on climatic and weather variables was based on the literature [42]. The shapefile data for Africa was downloaded from the ArcGIS hub website [43]. The objective in this case study was to examine the joint spatiotemporal trends of cattle BTB and human EPTB so as to determine potential countries where zoonosis was likely. The results would be useful to the African Centers for Disease Control and Prevention (CDCP) in aiding policy guidance regarding countries that need to strengthen integrated One Health strategies to reduce the TB burden in both humans and animals.
Exploratory analysis
Fig 1 displays the “Explore” tab presenting a map of the standardised raw incidence ratio, alongside a time series of the number of cases for cattle BTB and human EPTB in Africa from 2005 to 2018. A few isolated countries in the central, southeastern and northern parts of Africa exhibited a high incidence ratio concerning cattle BTB. A few countries with high incidence ratio concerning human EPTB were in the central eastern and central northern Africa. High incidence ratio patterns common to both cattle and humans were observed in Algeria and Tunisia. The temporal distribution of cattle BTB and human EPTB cases demonstrated a similar trend, peaking in 2011.
Model estimation
The raw summaries of the estimated model, including the dot and whiskers plot of the estimated parameters are displayed in the “Model estimation” tab (Fig 2). The intercepts on the exponential scale indicated a significant reduced overall risk of cattle BTB (0.371; 95% credible interval (CI): 0.184, 0.742) and a significantly greater than average risk of human EPTB (1.209; 95% CI: 1.027, 1.423). Based on the inverse of the estimated precision parameters (1/precision), the disease-specific spatial random variation of cattle BTB was greater than that of human EPTB. The weights of the shared spatial risk indicated a greater contribution of cattle BTB random factors to the shared spatial risk compared to human EPTB random factors. Similarly, there was a greater contribution of cattle BTB temporal random factors than human EPTB temporal random factors to the shared temporal risk. Incorporation of covariates is demonstrated in a supplementary figure S1 Fig. Cattle density was negatively associated with bovine tuberculosis, while human density was positively associated with bovine tuberculosis. Average annual temperature was negatively associated with human extrapulmonary tuberculosis.
Spatial and temporal risk
Results from the “Spatial and temporal risk” tab are shown in Fig 3. In this tab, the spatial risk pattern for cattle BTB indicates that few countries in the central, southeast and northwest of Africa were at high risk. The spatial risk pattern for human EPTB reveals that countries in the central east, north and west of Africa were at high risk. The shared risk patterns between cattle BTB and human EPTB were descending from north to south. There was a decreased pattern in the temporal risk of cattle BTB from 2005 to 2013, followed by an increased pattern thereafter. The risk for human EPTB remained consistently on average throughout the study period.
Spatiotemporal risk
Model-based spatiotemporal risk patterns of cattle BTB and human EPTB are shown in the “Spatiotemporal risk” tab (Fig 4). The patterns for BTB in cattle indicated that countries such as Algeria, Tunisia, Democratic Republic of Congo (DRC) and Mozambique were consistently at higher risk over time, and similar patterns were observed for human EPTB.
Prediction
The “Prediction” tab (Fig 5) shows the spatially predicted patterns in terms of both the raw incidence ratio and the model-based estimated risk. The predicted risk of human EPTB was higher in the east and north of Africa, while the predicted risk pattern for cattle BTB was generally descending from north to south of Africa.
Correlation
Spatial, temporal and spatiotemporal correlation between cattle BTB and human EPTB are displayed in the “Correlation” tab (Fig 6). There was significant positive spatial and temporal correlation between cattle BTB and human EPTB.
Discussion
This study has developed and implemented a user-friendly interface JSTMapp for joint spatiotemporal modelling and mapping of two diseases. The web-based spatial application JSTMapp uses the R packages Shiny and INLA to implement a bivariate spatial random-effects model. This model is specifically designed to analyse spatial lattice count data, which are modelled as Poisson random variables. The case study involved a retrospective analysis of cattle bovine tuberculosis and human extrapulmonary tuberculosis cases for Africa from 2005 to 2018. The JSTMapp facilitates exploratory data analysis and fitting of the multivariate shared component spatiotemporal model, including displaying the estimated risk as spatially interpolated patterns. The application has shown better performance when run in R/RStudio from GitHub as opposed to online from the Shiny server.
The advantage of using JSTMapp over the traditional R programming approaches is the ease of data analysis, especially for non-experts in programming. This makes it simpler for epidemiologists to analyse data and for university lecturers to teach students [9]. Another benefit of using JSTMapp is the interactive experience, where the user can dynamically change the data input and instantly see the results. This is not the case with the traditional use of programming, where changes in the code have to be made for any new data input to produce the output. Additionally, unlike previous web-based spatial model applications [10,11], that only fit univariate models, our web application can accommodate multivariate spatial random effects models using shared component methods. Furthermore, JSTMapp is capable of implementing spatial prediction to create smooth risk surfaces, a feature that previous applications do not offer.
The findings and resulting conclusions from the case study should be treated with caution due to various factors that may impact the validity and reliability of the results. The higher risk of individual cattle BTB and human EPTB, as well as the shared cattle BTB and human EPTB in north Africa, may be due to the prolonged dry environmental conditions, which tend to be associated with a higher risk of tuberculosis [44]. According to Xiao et al. [44], dry conditions tend to limit the production of the protective mucus layer in the respiratory tract, thereby increasing vulnerability to tuberculosis infection. Furthermore, the dry conditions in north Africa may result in cattle competing for fewer food and water resources, which, in turn, may increase the risk of cattle tuberculosis infection [45]. A higher risk of human EPTB in east and north Africa may be attributed to the risky practice of drinking cattle blood by Maasai people in east Africa with the aim of supplementing milk and to cure diseases [46]. Furthermore, other tribes in east and north Africa tend to drink sour milk for food and medicine [47], which poses a risk of zoonotic TB infection that often turns into EPTB. The higher burden trends of human EPTB in east Africa correspond with the literature [48]. The observed high-risk patterns of bovine tuberculosis in low-cattle density areas, such as the central African countries, could imply the influence of other factors, including warm and moist environments which favor M. bovis [49]. The positive effect of human density on cattle BTB may be attributed to increased animal movements and trade activities by many people, which, in turn, due to close contacts, risk BTB infection in cattle. The finding of human density as a positive risk factor of cattle BTB in Africa is in agreement with the literature [50], where human density was indirectly and positively correlated with bovine tuberculosis. The negative correlation between temperature and human EPTB may be explained by the longer exposure time when temperatures are low, since individuals tend to stay indoors [51].
Despite the strengths of the application, it lacks flexibility in certain model parameterisations and graphic outputs. Additionally, the application can handle a limited number of predictors. The functionality of forecasting was not incorporated due to implementation challenges. The fact that the application does not function properly from the Shiny server, but performs well in R from GitHub, implies that minimal programming skills are required for installation. This appears to be a common issue with applications hosted online by the Shiny server, as a similar application by Moraga [11] also operates from R. Additionally, for a better spatial and temporal resolution, example data in the case study did not involve a smaller spatial and temporal scale, such as district and month or week, respectively. We aim to improve our efforts by adding more features that will help analyse different outcomes and geostatistical spatial models. Additionally, we plan to expand the variety of spatial distribution options available, moving beyond just the Gaussian conditional autoregressive spatial models.
Conclusion
Our web-based application, the JSTMapp, improves accessibility to spatial data analysis for epidemiologists by reducing the need for coding skills. With its user-friendly interface, the platform allows users to easily upload their datasets and perform advanced spatial analyses. The visualisation of results is designed to be clear, enabling professionals of all technical levels to quickly identify and interpret areas of high disease risk. This feature greatly supports the generation of public health insights that can inform policy interventions and resource planning.
Supporting information
S1 Fig. “Model estimation” tab showing summaries of the estimated model of cattle BTB and human EPTB in Africa.
https://doi.org/10.1371/journal.pone.0332607.s001
(TIF)
References
- 1. Tzala EH, Marshall C, Best N. Multivariate analysis of spatial and temporal variation in cancer mortality in greece. Epidemiology. 2003;14(Supplement):S79–80.
- 2. Tesema GA, Tessema ZT, Heritier S, Stirling RG, Earnest A. A Systematic review of joint spatial and spatiotemporal models in health research. Int J Environ Res Public Health. 2023;20(7):5295. pmid:37047911
- 3. Corberán-Vallet A. Prospective surveillance of multivariate spatial disease data. Stat Methods Med Res. 2012;21(5):457–77. pmid:22534429
- 4. Vicente G, Adin A, Goicoa T, Ugarte MD. High-dimensional order-free multivariate spatial disease mapping. Stat Comput. 2023;33(5):104.
- 5. Carvalho MS, Souza-Santos R. Analysis of spatial data in public health: methods, problems, and perspectives. Cad Saude Publica. 2005;21(2):361–78. pmid:15905899
- 6. Ngwira A, Manda S, Karimuribo ED, Kimera SI, Stanley C. Spatial analysis of livestock disease data in sub-Saharan Africa: A scoping review. Scientific African. 2024;23:e02113.
- 7. Musa SM, Haruna UA, Manirambona E, Eshun G, Ahmad DM, Dada DA, et al. Paucity of health data in Africa: An obstacle to digital health implementation and evidence-based practice. Public Health Rev. 2023;44:1605821. pmid:37705873
- 8. Aliyu MH, Sani MU, Ingles DJ, Tsiga-Ahmed FI, Musa BM, Byers MS, et al. Building physician-scientist skills in R programming:A short workshop report. Int J Transl Med Res Public Health. 2022;6(1):e418. pmid:35854710
- 9. Johnson O, Fronterre C, Diggle PJ, Amoah B, Giorgi E. MBGapp: A Shiny application for teaching model-based geostatistics to population health scientists. PLoS One. 2021;16(12):e0262145. pmid:34972193
- 10. Adin A, Goicoa T, Ugarte MD. Online relative risks/rates estimation in spatial and spatio-temporal disease mapping. Comput Methods Programs Biomed. 2019;172:103–16. pmid:30846296
- 11. Moraga P. SpatialEpiApp: A Shiny web application for the analysis of spatial and spatio-temporal disease data. Spat Spatiotemporal Epidemiol. 2017;23:47–57. pmid:29108690
- 12.
Moraga P. Spatial statistics for data science: theory and practice with R. Chapman & Hall/CRC Data Science Series; 2023.
- 13. Odhiambo JN, Sartorius B. Joint spatiotemporal modelling of adverse pregnancy outcomes sharing common risk factors at sub-county level in Kenya, 2016–2019. BMC Public Health. 2021;21(1):2331.
- 14. Gómez-Rubio V, Palmi-Perales F, Lopez-Abente G, Ramis-Prieto R, Fernández-Navarro P. Bayesian joint spatiotemporal analysis of multiple diseases. SORT. 2019;43(1):51–74.
- 15. Besag J, York J, Mollié A. Bayesian image restoration, with two applications in spatial statistics. Ann Inst Stat Math. 1991;43(1):1–20.
- 16. Otiende VA, Achia TN, Mwambi HG. Bayesian hierarchical modeling of joint spatiotemporal risk patterns for Human Immunodeficiency Virus (HIV) and Tuberculosis (TB) in Kenya. PLoS One. 2020;15(7):e0234456. pmid:32614847
- 17. Jaya IGNM, Kristiani F, Andriyana Y, Chadidjah A. Sensitivity analysis on hyperprior distribution of the variance components of hierarchical bayesian spatiotemporal disease mapping. Mathematics. 2024;12(3):451.
- 18. Gelman A. Prior distributions for variance parameters in hierarchical models. Bayesian Anal. 2006;1(3):515–33.
- 19. Jaya IGNM, Folmer H, Lundberg J. A joint Bayesian spatiotemporal risk prediction model of COVID-19 incidence, IC admission, and death with application to Sweden. Ann Reg Sci. 2022;:1–34. pmid:36465998
- 20. Rue H, Martino S, Chopin N. Approximate Bayesian inference for latent Gaussian models by using integrated nested Laplace approximations. Journal of the Royal Statistical Society Series B: Statistical Methodology. 2009;71(2):319–92.
- 21. Jaya IGNM, Folmer H. Bayesian spatiotemporal mapping of relative dengue disease risk in Bandung, Indonesia. J Geogr Syst. 2019;22(1):105–42.
- 22.
Chang W, Cheng J, Allaire J, Sievert C, Schloerke B, Xie Y, et al. shiny: Web application framework for R [Internet]. 2024. Available from: https://github.com/rstudio/shiny
- 23.
Wickham H. ggplot2: Elegant graphics for data analysis. New York: Springer-Verlag; 2016.
- 24.
Auguie B. gridExtra: Miscellaneous functions for “grid” graphics [Internet]. 2015. Available from: http://cran.r-project.org/package=gridExtra
- 25. Neuwirth E. Package “RColorBrewer”. Phys Rev D-Particles, Fields, Gravit Cosmol. 2011;84(2):1–5.
- 26.
Harrell J. Hmisc: Harrell miscellaneous [Internet]. 2023. Available from: https://hbiostat.org/R/Hmisc
- 27.
Attali D. shinyjs: Easily improve the user experience of your shiny apps in seconds [Internet]. 2022. Available from: https://deanattali.com/shinyjs
- 28.
Wickham H, François R, Henry L, Müller K. dplyr: A grammar of data manipulation [Internet]. 2022. Available from: https://github.com/tidyverse/dplyr
- 29. Bivand R, Piras G. Comparing implementations of estimation methods for spatial econometrics. J Stat Softw. 2015;63(18):1–36.
- 30.
Hijmans R. raster: Geographic data analysis and modelling [Internet]. 2024. Available from: https://rspatial.org/raster
- 31. Tennekes M. tmap: Thematic maps in R. J Stat Softw. 2018;84(6):1–39.
- 32. Pebesma EJ. Multivariable geostatistics in S: the gstat package. Comput Geosci. 2004;30(7):683–91.
- 33.
Solt F, Hu Y. dotwhisker: Dot-and-whisker plots of regression results [Internet]. 2024. Available from: https://fsolt.org/dotwhisker
- 34.
Adelchi A. The R package “sn”: The skew-normal and related distributions such as the skew-t and the SUN [Internet]. 2023. Available from: http://azzalini.stat.unipd.it/SN
- 35. Silva MR, Rocha A da S, Araújo FR, Fonseca-Júnior AA, Alencar AP de, Suffys PN, et al. Risk factors for human Mycobacterium bovis infections in an urban area of Brazil. Mem Inst Oswaldo Cruz. 2018;113(8):e170445. pmid:29898014
- 36.
WAHIS. World Animal Health Information System [Internet]. [cited 2024 Sep 22]. Available from: https://wahis.woah.org/#/home
- 37.
WHO. World Health Organisation [Internet]. [cited 2024 Jul 7]. Available from: https://www.who.int/teams/global-tuberculosis-programme/data
- 38.
FAOSTAT. Food and agriculture organisation [Internet]. [cited 2024 Aug 3]. Available from: https://www.fao.org/faostat/en/#data/QCL
- 39.
World Bank. Population, total [Internet]. [cited 2025 Jun 28]. Available from: https://data.worldbank.org/indicator/SP.POP.TOTL
- 40.
WorldClim. Global climate and weather data [Internet]. [cited 2025 Jun 29]. Available from: https://www.worldclim.org/data/index.html
- 41. Kaba AJ. A survey of the geographic area, altitude, coastline, and climate of African countries and regions: implications for Africa’s development. J Sustain Dev. 2024;17(3):57.
- 42. Arab A, Jackson MC, Kongoli C. Modelling the effects of weather and climate on malaria distributions in West Africa. Malar J. 2014;13:126. pmid:24678602
- 43.
ArcGis Hub. Africa boundaries [Internet]. [cited 2024 Aug 20]. Available from: https://hub.arcgis.com/datasets/07610d73964e4d39ab62c4245d548625/explore
- 44. Xiao Y, He L, Chen Y, Wang Q, Meng Q, Chang W, et al. The influence of meteorological factors on tuberculosis incidence in Southwest China from 2006 to 2015. Sci Rep. 2018;8(1):10053. pmid:29968800
- 45. Herrero-García G, Barroso P, Preite L, Relimpio D, Vaz-Rodrigues R, Balseiro A. Waterhole characteristics in tuberculosis positive and negative beef cattle farms from endemic regions in Spain. Rangel Ecol Manag. 2024;92.
- 46. Pal M, Zenebe N, Rahman MT. Growing significance of Mycobacterium bovis in human health. Microbes & Health. 2014;3(1):29–34.
- 47. Carruth L, Roess AA, Mekonnen YT, Melaku SK, Nichter M, Salman M. Zoonotic tuberculosis in Africa: challenges and ways forward. Lancet. 2016;388(10059):2460–1. pmid:27871735
- 48. Hailu S, Hurst C, Cyphers G, Thottunkal S, Harley D, Viney K, et al. Prevalence of extra-pulmonary tuberculosis in Africa: A systematic review and meta-analysis. Trop Med Int Health. 2024;29(4):257–65. pmid:38263374
- 49. Gong Q-L, Chen Y, Tian T, Wen X, Li D, Song Y-H, et al. Prevalence of bovine tuberculosis in dairy cattle in China during 2010-2019: A systematic review and meta-analysis. PLoS Negl Trop Dis. 2021;15(6):e0009502. pmid:34138867
- 50. Huang ZYX, Boer WFD, Langevelde FV, Xu C, Jebara KB, Berlingieri F. Dilution effect in bovine tuberculosis: risk factors for regional disease occurrence in Africa. Proc R Soc B. 2013;280:20130624.
- 51. Li Z, Liu Q, Zhan M, Tao B, Wang J, Lu W. Meteorological factors contribute to the risk of pulmonary tuberculosis: A multicenter study in eastern China. Sci Total Environ. 2021;793:148621. pmid:34328976