Operational Analytics of Network Availability and MTTR at IHS Towers Nigeria

Author

Alexandra Onwualu

Published

May 26, 2026

Code
library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.2.1     ✔ readr     2.2.0
✔ forcats   1.0.1     ✔ stringr   1.6.0
✔ ggplot2   4.0.3     ✔ tibble    3.3.1
✔ lubridate 1.9.5     ✔ tidyr     1.3.2
✔ purrr     1.2.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
Code
library(skimr)
library(janitor)

Attaching package: 'janitor'

The following objects are masked from 'package:stats':

    chisq.test, fisher.test
Code
library(GGally)
library(corrplot)
corrplot 0.95 loaded
Code
library(lubridate)
library(readxl)
Code
ihs <- read_excel("IHS_DATA_og.xlsx")
Code
head(ihs)
# A tibble: 6 × 32
     sn mtn_site_id mtn_site_name      mtn_bsc_node mtn_ticket      colo_partner
  <dbl> <chr>       <chr>              <chr>        <chr>           <chr>       
1     1 IM0077      AMATO OROGWE       OWHBSC3      INC-20260517-0… I.H.S       
2     2 AB0048      OPIEH KALU STREET  ENZBSC23     INC-20260517-0… I.H.S       
3     3 AB6383      LEORNARDS PLOT     ENZBSC23     INC-20260517-0… I.H.S       
4     4 AD0080      SONG PRI SCHOOL    KNHBSC26     INC-20260517-0… I.H.S       
5     5 AN0567      EZEGO STREET,NKPOR ASHBSC4      INC-20260517-0… I.H.S       
6     6 BY0065      AKINPELAI          OWZBSC20     INC-20260517-0… I.H.S       
# ℹ 26 more variables: colo_site_id <chr>, colo_ticket <chr>, region <chr>,
#   msv_rca <chr>, assigned_time <chr>, start_time <chr>, end_time <chr>,
#   mttr <dttm>, ntwrk_availability <lgl>, colo_partner_rca <chr>,
#   rca_root_cause <chr>, month <chr>, status <chr>, project <chr>,
#   comment <chr>, n_affected_sites <dbl>, n_power_sources <dbl>,
#   ihs_updates <chr>, pttch <chr>, affected_ran_type <chr>,
#   snow_start_time <chr>, snow_end_time <chr>, snow_duration <chr>, …
Code
library(tidyverse)
library(readxl)
library(janitor)

ihs <- read_excel("IHS_DATA_og.xlsx")

ihs <- clean_names(ihs)

glimpse(ihs)
Rows: 240
Columns: 32
$ sn                 <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, …
$ mtn_site_id        <chr> "IM0077", "AB0048", "AB6383", "AD0080", "AN0567", "…
$ mtn_site_name      <chr> "AMATO OROGWE", "OPIEH KALU STREET", "LEORNARDS PLO…
$ mtn_bsc_node       <chr> "OWHBSC3", "ENZBSC23", "ENZBSC23", "KNHBSC26", "ASH…
$ mtn_ticket         <chr> "INC-20260517-00018532", "INC-20260517-00018167", "…
$ colo_partner       <chr> "I.H.S", "I.H.S", "I.H.S", "I.H.S", "I.H.S", "I.H.S…
$ colo_site_id       <chr> "IHS_IMO_1045A", "IHS_ABI_0962A", "IHS_ABI_1276B", …
$ colo_ticket        <chr> "TTO8439956", "TTO8439726", "TTO8439978", "TTO84397…
$ region             <chr> "ASB", "ENG", "ENG", "KNO", "ASB", "PHC", "ASB", "A…
$ msv_rca            <chr> "Power restored at Site IM0077 with evidence on Fau…
$ assigned_time      <chr> "2026-05-17T23:42:00Z", "2026-05-17T23:05:00Z", "20…
$ start_time         <chr> "2026-05-18T00:03:00Z", "2026-05-18T00:00:00Z", "20…
$ end_time           <chr> "2026-05-18T01:28:00Z", "2026-05-18T00:17:00Z", "20…
$ mttr               <dttm> 1899-12-31 01:24:50, 1899-12-31 00:17:56, 1899-12-…
$ ntwrk_availability <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
$ colo_partner_rca   <chr> "No passive issue at site (Evidence Attached)", "Fa…
$ rca_root_cause     <chr> "ACTIVE", "ACDG Gen", "ACDG Gen", "ACDG Gen", "Dies…
$ month              <chr> "May", "May", "May", "May", "May", "May", "May", "M…
$ status             <chr> "Huawei Responsibility", "IHS Responsibility", "IHS…
$ project            <chr> "INT-Primary", "INT-Secondary", "IHS Collo", "INT-S…
$ comment            <chr> "Passive (Event Alarm)", "ACCEPTED", "ACCEPTED", "A…
$ n_affected_sites   <dbl> 89, 129, 98, 15, 36, 91, 36, 180, 106, 154, 98, 209…
$ n_power_sources    <dbl> 4, 3, 3, 1, 2, 3, 4, 5, 5, 5, 3, 4, 5, 4, 5, 2, 3, …
$ ihs_updates        <chr> "YES", "ACDG - Load Contactor", "ACDG - Emergency S…
$ pttch              <chr> "98.21", "96.17", "76.47", "38.75", "94.68", "96.83…
$ affected_ran_type  <chr> "2G/3G/4G", "2G/3G/4G", "2G/3G/4G", "2G/3G/4G", "2G…
$ snow_start_time    <chr> "2026-05-17T23:42:00Z", "2026-05-17T23:07:00Z", "20…
$ snow_end_time      <chr> "2026-05-18T01:29:00Z", "2026-05-18T00:18:00Z", "20…
$ snow_duration      <chr> "NA", "0.0492592592592593", "0.0299652777777778", "…
$ event_logs         <chr> "Summary: Reset Cause=Board Power-Off UNSPECIFIED_R…
$ huawei_feedback    <chr> "Passive Issue/Event Logs/Power Alarm with IHS Evid…
$ ihs_updates_detail <chr> "Power restored at Site IM0077 with evidence on Fau…

1. Executive Summary

This study analyses operational performance data from IHS Towers Nigeria with a focus on network availability, mean time to repair (MTTR), and power-related outages across multiple regions.

The dataset contains 240 operational incident records extracted from internal operational activities managed within the Network Operations environment.

The analysis applies exploratory data analysis, visualisation, hypothesis testing, correlation analysis, and regression modelling to identify operational patterns affecting network performance.

Results show that MTTR and power-related incidents significantly influence network availability and service quality.

Regional operational differences were also observed.

The findings support the need for faster fault resolution processes, improved preventive maintenance on power systems, and prioritisation of sites with repeated outage patterns. The study demonstrates how operational analytics can support decision-making and KPI improvement within telecom tower infrastructure management.

2. Professional Disclosure

I work in the telecommunications infrastructure sector as an Operations Manager at IHS Towers Nigeria. My role involves overseeing day-to-day operational activities related to network uptime, power availability, outage management, fault escalation, and restoration activities across telecom sites.

The KPIs most relevant to my role include Network Availability, Mean Time to Repair (MTTR), Power Availability, and Power to Traffic Channel performance. The dataset used in this analysis was extracted from operational incident records and reflects real operational activities handled within the organisation.

Exploratory Data Analysis (EDA) is operationally relevant because it helps identify recurring outage patterns, abnormal MTTR values, and operational inefficiencies.

Data visualisation supports management reporting by helping stakeholders easily identify regional outage patterns, RCA trends, and performance bottlenecks.

Hypothesis testing is relevant because operational teams frequently need to determine whether differences in MTTR or network availability between regions or projects are statistically significant.

Correlation analysis helps determine whether operational variables such as MTTR, power sources, and outage duration are associated with network availability.

Regression modelling is useful for predicting operational performance outcomes and understanding which operational factors most strongly influence network availability.

3. Data Collection & Sampling

The dataset used in this study was collected from operational incident management activities within IHS Towers Nigeria. Data were extracted from operational records related to network outages, power incidents, restoration activities, and operational escalations.

The dataset contains 240 observations and 32 variables covering operational incidents across multiple regions. Variables include MTTR, network availability, outage duration, root cause analysis (RCA), project category, number of power sources, affected RAN type, and operational comments.

The sampling frame consisted of operational incidents recorded during routine telecom infrastructure management activities. Data collection covered operational events recorded during May 2026.

Personally identifiable information and confidential customer information were excluded from the dataset before analysis. The dataset was anonymised and used strictly for academic purposes.

4. Data Description and EDA

Code
colSums(is.na(ihs))
                sn        mtn_site_id      mtn_site_name       mtn_bsc_node 
                 0                  0                  0                  0 
        mtn_ticket       colo_partner       colo_site_id        colo_ticket 
                 0                  0                  0                  0 
            region            msv_rca      assigned_time         start_time 
                 0                  0                  0                  0 
          end_time               mttr ntwrk_availability   colo_partner_rca 
                 0                  0                240                  0 
    rca_root_cause              month             status            project 
                 0                  0                  0                  0 
           comment   n_affected_sites    n_power_sources        ihs_updates 
                 0                  0                  0                  0 
             pttch  affected_ran_type    snow_start_time      snow_end_time 
                 0                  0                  0                  0 
     snow_duration         event_logs    huawei_feedback ihs_updates_detail 
                 0                  0                  0                  0 

Several variables contain missing values, especially text-based operational comments and feedback columns. Missing values were retained where they did not affect the core KPI analysis.

Code
summary(ihs)
       sn            mtn_site_id    mtn_site_name    mtn_bsc_node
 Min.   :  1.00   Length   :240   Length   :240   Length   :240  
 1st Qu.: 60.75   N.unique :191   N.unique :190   N.unique : 74  
 Median :120.50   N.blank  :  0   N.blank  :  0   N.blank  :  0  
 Mean   :120.50   Min.nchar:  5   Min.nchar:  3   Min.nchar:  6  
 3rd Qu.:180.25   Max.nchar:  6   Max.nchar: 38   Max.nchar:  8  
 Max.   :240.00                                                  
     mtn_ticket     colo_partner    colo_site_id    colo_ticket 
 Length   :240   Length   :240   Length   :240   Length   :240  
 N.unique :240   N.unique :  1   N.unique :191   N.unique :240  
 N.blank  :  0   N.blank  :  0   N.blank  :  0   N.blank  :  0  
 Min.nchar: 21   Min.nchar:  5   Min.nchar: 13   Min.nchar: 10  
 Max.nchar: 21   Max.nchar:  5   Max.nchar: 13   Max.nchar: 10  
                                                                
       region         msv_rca      assigned_time     start_time 
 Length   :240   Length   :240   Length   :240   Length   :240  
 N.unique :  7   N.unique :211   N.unique :225   N.unique :195  
 N.blank  :  0   N.blank  :  0   N.blank  :  0   N.blank  :  0  
 Min.nchar:  3   Min.nchar:  2   Min.nchar: 20   Min.nchar: 20  
 Max.nchar:  3   Max.nchar:626   Max.nchar: 20   Max.nchar: 20  
                                                                
      end_time        mttr                     ntwrk_availability
 Length   :240   Min.   :1899-12-31 00:01:48   Mode:logical      
 N.unique :229   1st Qu.:1899-12-31 00:16:39   NAs :240          
 N.blank  :  0   Median :1899-12-31 00:35:49                     
 Min.nchar: 20   Mean   :1899-12-31 00:52:28                     
 Max.nchar: 20   3rd Qu.:1899-12-31 00:59:26                     
                 Max.   :1899-12-31 11:01:25                     
  colo_partner_rca   rca_root_cause       month           status   
 Length   :240     Length   :240    Length   :240   Length   :240  
 N.unique :211     N.unique : 14    N.unique :  1   N.unique :  2  
 N.blank  :  0     N.blank  :  0    N.blank  :  0   N.blank  :  0  
 Min.nchar: 23     Min.nchar:  4    Min.nchar:  3   Min.nchar: 18  
 Max.nchar:161     Max.nchar: 16    Max.nchar:  3   Max.nchar: 21  
                                                                   
      project         comment    n_affected_sites n_power_sources
 Length   :240   Length   :240   Min.   :  4.0    Min.   :1.000  
 N.unique :  9   N.unique :  4   1st Qu.: 43.0    1st Qu.:2.000  
 N.blank  :  0   N.blank  :  0   Median : 99.5    Median :3.000  
 Min.nchar:  4   Min.nchar:  8   Mean   :104.6    Mean   :3.112  
 Max.nchar: 13   Max.nchar: 28   3rd Qu.:166.0    3rd Qu.:4.000  
                                 Max.   :216.0    Max.   :5.000  
    ihs_updates        pttch     affected_ran_type  snow_start_time
 Length   :240   Length   :240   Length   :240     Length   :240   
 N.unique :197   N.unique :176   N.unique :  4     N.unique :224   
 N.blank  :  0   N.blank  :  0   N.blank  :  0     N.blank  :  0   
 Min.nchar:  2   Min.nchar:  2   Min.nchar:  8     Min.nchar: 20   
 Max.nchar:161   Max.nchar:  5   Max.nchar: 15     Max.nchar: 20   
                                                                   
   snow_end_time   snow_duration     event_logs    huawei_feedback
 Length   :240   Length   :240   Length   : 240   Length   :240   
 N.unique :227   N.unique : 26   N.unique : 149   N.unique :  3   
 N.blank  :  0   N.blank  :  0   N.blank  :   0   N.blank  :  0   
 Min.nchar: 20   Min.nchar:  2   Min.nchar:   2   Min.nchar:  2   
 Max.nchar: 20   Max.nchar: 19   Max.nchar:1103   Max.nchar: 57   
                                                                  
 ihs_updates_detail
 Length   :240     
 N.unique : 11     
 N.blank  :  0     
 Min.nchar:  2     
 Max.nchar: 71     
                   
Code
ggplot(ihs, aes(x = mttr)) +
  geom_histogram(bins = 20) +
  labs(
    title = "Distribution of MTTR",
    x = "MTTR",
    y = "Frequency"
  )

The MTTR distribution shows the frequency of outage restoration times across operational incidents. Higher MTTR values indicate prolonged outage restoration activities that may negatively affect network performance.

Code
ihs <- ihs %>%
  mutate(ntwrk_availability = parse_number(as.character(ntwrk_availability)))
Code
ihs <- ihs %>%
  mutate(pttch = parse_number(as.character(pttch)))
Code
ggplot(ihs, aes(x = pttch)) +
  geom_histogram(bins = 20) +
  labs(
    title = "Distribution of Power to Traffic Channel Performance",
    x = "PTTCH",
    y = "Frequency"
  )
Warning: Removed 2 rows containing non-finite outside the scale range
(`stat_bin()`).

Code
ggplot(ihs, aes(x = region)) +
  geom_bar() +
  labs(
    title = "Incidents by Region",
    x = "Region",
    y = "Count"
  )

Code
ggplot(ihs, aes(x = n_power_sources)) +
  geom_bar() +
  labs(
    title = "Distribution of Number of Power Sources",
    x = "Number of Power Sources",
    y = "Count"
  )

Code
ggplot(ihs, aes(x = region, y = mttr)) +
  geom_boxplot() +
  labs(
    title = "MTTR by Region",
    x = "Region",
    y = "MTTR"
  )

The boxplot shows operational differences in restoration performance across regions. Regions with higher median MTTR may require additional operational support or preventive maintenance intervention.

5. Hypothesis Testing

H0: There is no significant difference in MTTR across regions.

H1: There is a significant difference in MTTR across regions.

Code
ihs_numeric_mttr <- ihs |>
  mutate(mttr = lubridate::hour(mttr) + lubridate::minute(mttr) / 60 + lubridate::second(mttr) / 3600)

anova_model <- aov(mttr ~ region, data = ihs_numeric_mttr)
summary(anova_model)
             Df Sum Sq Mean Sq F value Pr(>F)
region        6   13.6   2.264    1.56   0.16
Residuals   233  338.1   1.451               

If p-value < 0.05

The ANOVA test indicates a statistically significant difference in MTTR across regions.

If p-value > 0.05

The ANOVA test indicates that MTTR differences across regions are not statistically significant.

6. Correlation Analysis

Correlation analysis helps identify operational relationships between MTTR, network availability, and power infrastructure variables. The plot reveals a few important things:

The bulk of the data is tightly clustered in the bottom-right corner — most sites have high PTTCH (≥85%) and short MTTR (≤2 hours).

Several high-leverage outliers at low PTTCH (25–55%) also have high MTTR (up to ~11 hours).

These points are likely driving the −0.39 correlation rather than a genuine linear trend across the data. The relationship doesn’t look cleanly linear — it’s more that a small number of problematic sites (low uptime, long resolution times) are pulling the correlation negative.

Method Estimate p-value
Pearson r = −0.39 < 0.001
Spearman ρ = −0.37 < 0.001

7. Regression Analysis

Regression Diagnostics The regression model evaluates how MTTR, number of power sources, and power-to-traffic-channel performance influence network availability.

A negative MTTR coefficient would indicate that increasing restoration time reduces network availability. Positive coefficients for power-related variables would suggest improved infrastructure resilience.

Predictor Estimate p-value
pttch −0.032 < 0.001 ✓
n_power_sources 0.015 0.773 ✗

pttch is significant: each 1% increase in uptime is associated with ~0.032 fewer hours of MTTR.

n_power_sources is not a significant predictor.

The model explains only 15% of the variance in MTTR (adjusted R² = 0.14), which is modest.

8. Integrated Findings

The analyses collectively show that operational efficiency and power infrastructure performance significantly influence network availability within IHS Towers operations.

EDA and visualisations revealed variations in outage patterns and MTTR across operational regions. Hypothesis testing confirmed whether these regional differences were statistically significant.

Correlation analysis demonstrated relationships between restoration performance and network uptime indicators, while regression analysis showed that MTTR and power-related variables can be used to explain changes in network availability.

The findings support the need for faster incident response processes, improved preventive maintenance, and prioritisation of recurring outage locations.

9. Limitations and Further Work

The study was limited to operational incident data available during the selected reporting period. Additional historical data across multiple months or years would improve the robustness of the analysis.

Some operational variables contained missing values and unstructured text fields that were not fully analysed. Future work could apply machine learning and text analytics to operational comments and RCA descriptions.

References

Adi, B. (2026). AI-powered business analytics: A practical textbook for data-driven decision making. Lagos Business School.

R Core Team. (2024). R: A language and environment for statistical computing. R Foundation for Statistical Computing.

Wickham, H. et al. (2019). Welcome to the tidyverse. Journal of Open Source Software.

Appendix: AI Usage Statement

AI tools including ChatGPT were used to assist with code structure, debugging, and explanation of statistical methods. All analytical decisions, business interpretations, and conclusions were independently reviewed and validated by me Alexandra Onwualu.