// Adds dimensions UUID, Author and Topic into GA4
Wednesday, June 17, 2026
28.9 C
Singapore

Singaporean calls MRT reliability measurements ‘a big joke’

SINGAPORE: A local Reddit user took to the platform in response to a Sep 5 (Friday) article in CNA about how MRT reliability over the past year has fallen to its lowest point since 2020.

In their Sep 6 post on r/Singapore, u/AgileComparison3957 wrote that the Mean Kilometres Between Failure (MKBF) system of the MRT is flawed because its depiction of MRT reliability is overly optimistic.

“The MKBF system has some terrible flaws that make unreliable lines like ours look very reliable on the outside. Even though we are doing well, the problem is that the standards have dropped, but they insist that it is still ok.

“I know it is better than during the signalling change period, where there was always chaos, but after that, we did fine. What happened? Things like distance, average speed, and number of trains significantly influence the numbers, which can skew everything,” the post author wrote.

They added that the official MKBF metric does not reflect passengers’ actual experiences of train delays and suggested a simpler metric that indicates the average number of days between delays that are greater than five minutes would provide commuters with a more accurate sense of reliability.

They provided the following list:

  • NEL: Once in 122 days
  • DTL: Once in 183 days
  • EWL: Once in 46 days
  • SPLRT: Undefined (Welp, that was a good track record)
  • NSL: Once in 37 days
  • CCL: Once in 5 days
  • BPLRT: Once a year
  • TEL: Once in 37 days

The post author’s full explanation may be found here.

Since train disruptions have affected many in Singapore, where public transport is used by around 67% of the population, many cared to weigh in.

“That’s true, but measuring by days is also far more relevant to the average person. It’s just easier for humans to conceptualise X amount of days than Y amount of kilometres,” one agreed.

“Distance travelled contributes to wear and tear, and is an indicator of how well-maintained a system is. It is far more precise than the number of days,” wrote one.

“Engineer uncle here. MKBF is a metric that is useful for engineers. It may be informative for policy planners, but needs to be contextualised,” weighed in another.

“MKBF measures train reliability, but imo what we need to measure is the commuter experience. We need some metric like:

  • trip complete without delay: 1 point
  • trip can complete with <10 min delay: 0.65 points
  • trip can complete with >10 but <30 min delay (taking into account bridging buses): 0.35 points
  • trip cannot complete at all: 0 points

“For every disruption, we have to tally up affected commuters. There might be some math/estimating involved (e.g., EW line disruption for 6 days will have to be 0/0.35 per average ridership of EW line for affected stretches that day (depending on user habits — we need to have very granular data on the station-to-station stats, which the operators definitely have). and overall we can target as close to 100% as possible (e.g., 99%),” wrote another. /TISG

Read also: MRT reliability dips to five-year low, raising questions on system resilience

- Advertisement -

Hot this week

‘If they’re brave, they don’t need to tell me to resign’: Ruling party member challenges leadership to fire him

Anwar Ibrahim is now facing a bigger challenge in party split as a popular MP from Kuala Lumpur challenges the party leadership to fire him. PKR has so far restrained itself from firing MPs who go ...

‘Every day, it’s so noisy we can’t sleep’ — Residents along North-South Corridor construction ask if the decade-long wait while living in noise, dust...

From enduring sleepless nights, dusty homes, and confusing detours, NSC communities question whether it will be even worth it in the end

Popular Categories

document.addEventListener("DOMContentLoaded", () => { const trigger = document.getElementById("ads-trigger"); if ('IntersectionObserver' in window && trigger) { const observer = new IntersectionObserver((entries, observer) => { entries.forEach(entry => { if (entry.isIntersecting) { lazyLoader(); // You should define lazyLoader() elsewhere or inline here observer.unobserve(entry.target); // Run once } }); }, { rootMargin: '800px', threshold: 0.1 }); observer.observe(trigger); } else { // Fallback setTimeout(lazyLoader, 3000); } });
// //
Enable Notifications OK No thanks