Code Review of Ferguson’s Model

9 min read

by Sue Denim

[Please note: a follow-up analysis is now available here.]

Imperial finally released a derivative of Ferguson’s code. I figured I’d do a review of it and send you some of the things I noticed. I don’t know your background so apologies if some of this is pitched at the wrong level.

My background. I have been writing software for 30 years. I worked at Google between 2006 and 2014, where I was a senior software engineer working on Maps, Gmail and account security. I spent the last five years at a US/UK firm where I designed the company’s database product, amongst other jobs and projects. I was also an independent consultant for a couple of years. Obviously I’m giving only my own professional opinion and not speaking for my current employer.

The code. It isn’t the code Ferguson ran to produce his famous Report 9. What’s been released on GitHub is a heavily modified derivative of it, after having been upgraded for over a month by a team from Microsoft and others. This revised codebase is split into multiple files for legibility and written in C++, whereas the original program was “a single 15,000 line file that had been worked on for a decade” (this is considered extremely poor practice). A request for the original code was made 8 days ago but ignored, and it will probably take some kind of legal compulsion to make them release it.  Clearly, Imperial are too embarrassed by the state of it ever to release it of their own free will, which is unacceptable given that it was paid for by the taxpayer and belongs to them.

The model.  What it’s doing is best described as “SimCity without the graphics”. It attempts to simulate households, schools, offices, people and their movements, etc. I won’t go further into the underlying assumptions, since that’s well explored elsewhere.

Non-deterministic outputs. Due to bugs, the code can produce very different results given identical inputs. They routinely act as if this is unimportant.

This problem makes the code unusable for scientific purposes, given that a key part of the scientific method is the ability to replicate results. Without replication, the findings might not be real at all – as the field of psychology has been finding out to its cost. Even if their original code was released, it’s apparent that the same numbers as in Report 9 might not come out of it.

Non-deterministic outputs may take some explanation, as it’s not something anyone previously floated as a possibility. 

The documentation says:

The model is stochastic. Multiple runs with different seeds should be undertaken to see average behaviour.

“Stochastic” is just a scientific-sounding word for “random”. That’s not a problem if the randomness is intentional pseudo-randomness, i.e. the randomness is derived from a starting “seed” which is iterated to produce the random numbers. Such randomness is often used in Monte Carlo techniques. It’s safe because the seed can be recorded and the same (pseudo-)random numbers produced from it in future. Any kid who’s played Minecraft is familiar with pseudo-randomness because Minecraft gives you the seeds it uses to generate the random worlds, so by sharing seeds you can share worlds.

Clearly, the documentation wants us to think that, given a starting seed, the model will always produce the same results.

Investigation reveals the truth: the code produces critically different results, even for identical starting seeds and parameters.

I’ll illustrate with a few bugs. In issue 116 a UK “red team” at Edinburgh University reports that they tried to use a mode that stores data tables in a more efficient format for faster loading, and discovered – to their surprise – that the resulting predictions varied by around 80,000 deaths after 80 days:

That mode doesn’t change anything about the world being simulated, so this was obviously a bug.

The Imperial team’s response is that it doesn’t matter: they are “aware of some small non-determinisms”, but “this has historically been considered acceptable because of the general stochastic nature of the model”. Note the phrasing here: Imperial know their code has such bugs, but act as if it’s some inherent randomness of the universe, rather than a result of amateur coding. Apparently, in epidemiology, a difference of 80,000 deaths is “a small non-determinism”.

Imperial advised Edinburgh that the problem goes away if you run the model in single-threaded mode, like they do. This means they suggest using only a single CPU core rather than the many cores that any video game would successfully use. For a simulation of a country, using only a single CPU core is obviously a dire problem – as far from supercomputing as you can get. Nonetheless, that’s how Imperial use the code: they know it breaks when they try to run it faster. It’s clear from reading the code that in 2014 Imperial tried to make the code use multiple CPUs to speed it up, but never made it work reliably. This sort of programming is known to be difficult and usually requires senior, experienced engineers to get good results. Results that randomly change from run to run are a common consequence of thread-safety bugs. More colloquially, these are known as “Heisenbugs“.

But Edinburgh came back and reported that – even in single-threaded mode – they still see the problem. So Imperial’s understanding of the issue is wrong.  Finally, Imperial admit there’s a bug by referencing a code change they’ve made that fixes it. The explanation given is “It looks like historically the second pair of seeds had been used at this point, to make the runs identical regardless of how the network was made, but that this had been changed when seed-resetting was implemented”. In other words, in the process of changing the model they made it non-replicable and never noticed.

Why didn’t they notice? Because their code is so deeply riddled with similar bugs and they struggled so much to fix them that they got into the habit of simply averaging the results of multiple runs to cover it up… and eventually this behaviour became normalised within the team.

In issue #30, someone reports that the model produces different outputs depending on what kind of computer it’s run on (regardless of the number of CPUs). Again, the explanation is that although this new problem “will just add to the issues” …  “This isn’t a problem running the model in full as it is stochastic anyway”.

Although the academic on those threads isn’t Neil Ferguson, he is well aware that the code is filled with bugs that create random results. In change #107 he authored he comments: “It includes fixes to InitModel to ensure deterministic runs with holidays enabled”.  In change #158 he describes the change only as “A lot of small changes, some critical to determinacy”.

Imperial are trying to have their cake and eat it.  Reports of random results are dismissed with responses like “that’s not a problem, just run it a lot of times and take the average”, but at the same time, they’re fixing such bugs when they find them. They know their code can’t withstand scrutiny, so they hid it until professionals had a chance to fix it, but the damage from over a decade of amateur hobby programming is so extensive that even Microsoft were unable to make it run right.

No tests. In the discussion of the fix for the first bug, Imperial state the code used to be deterministic in that place but they broke it without noticing when changing the code.

Regressions like that are common when working on a complex piece of software, which is why industrial software-engineering teams write automated regression tests. These are programs that run the program with varying inputs and then check the outputs are what’s expected. Every proposed change is run against every test and if any tests fail, the change may not be made.

The Imperial code doesn’t seem to have working regression tests. They tried, but the extent of the random behaviour in their code left them defeated. On 4th April they said:  “However, we haven’t had the time to work out a scalable and maintainable way of running the regression test in a way that allows a small amount of variation, but doesn’t let the figures drift over time.”

Beyond the apparently unsalvageable nature of this specific codebase, testing model predictions faces a fundamental problem, in that the authors don’t know what the “correct” answer is until long after the fact, and by then the code has changed again anyway, thus changing the set of bugs in it. So it’s unclear what regression tests really mean for models like this – even if they had some that worked.

Undocumented equations. Much of the code consists of formulas for which no purpose is given. John Carmack (a legendary video-game programmer) surmised that some of the code might have been automatically translated from FORTRAN some years ago.

For example, on line 510 of SetupModel.cpp there is a loop over all the “places”  the simulation knows about. This code appears to be trying to calculate R0 for “places”. Hotels are excluded during this pass, without explanation.

This bit of code highlights an issue Caswell Bligh has discussed in your site’s comments: R0 isn’t a real characteristic of the virus. R0 is both an input to and an output of these models, and is routinely adjusted for different environments and situations. Models that consume their own outputs as inputs is problem well known to the private sector – it can lead to rapid divergence and incorrect prediction. There’s a discussion of this problem in section 2.2 of the Google paper, “Machine learning: the high interest credit card of technical debt“.

Continuing development. Despite being aware of the severe problems in their code that they “haven’t had time” to fix, the Imperial team continue to add new features; for instance, the model attempts to simulate the impact of digital contact tracing apps.

Adding new features to a codebase with this many quality problems will just compound them and make them worse. If I saw this in a company I was consulting for I’d immediately advise them to halt new feature development until thorough regression testing was in place and code quality had been improved.

Conclusions. All papers based on this code should be retracted immediately. Imperial’s modelling efforts should be reset with a new team that isn’t under Professor Ferguson, and which has a commitment to replicable results with published code from day one. 

On a personal level, I’d go further and suggest that all academic epidemiology be defunded. This sort of work is best done by the insurance sector. Insurers employ modellers and data scientists, but also employ managers whose job is to decide whether a model is accurate enough for real world usage and professional software engineers to ensure model software is properly tested, understandable and so on. Academic efforts don’t have these people, and the results speak for themselves.

My identity. Sue Denim isn’t a real person (read it out). I’ve chosen to remain anonymous partly because of the intense fighting that surrounds lockdown, but there’s also a deeper reason. This situation has come about due to rampant credentialism and I’m tired of it. As the widespread dismay by programmers demonstrates, if anyone in SAGE or the Government had shown the code to a working software engineer they happened to know, alarm bells would have been rung immediately. Instead, the Government is dominated by academics who apparently felt unable to question anything done by a fellow professor. Meanwhile, average citizens like myself are told we should never question “expertise”. Although I’ve proven my Google employment to Toby, this mentality is damaging and needs to end: please, evaluate the claims I’ve made for yourself, or ask a programmer you know and trust to evaluate them for you.

Comments

This week across the site:

Email me alerts for this discussion
Notify of

To join in with the discussion please make a donation to the Daily Sceptic.

Profanity and abuse will be removed and may lead to a permanent ban.

648 Comments
Newest
Oldest Most Voted
pbrosnan
pbrosnan
4 years ago

written in C++
Ah, I think I see the problem …

mojo
mojo
4 years ago

The Government have known that Imperial College modelling has been an utter scam since its inception in 2008. Every single model it has produced has been deliberately wrong. No MP has asked searching questions and they must know the history of Ferguson’s modelling. I do not trust any current MP. Steve Baker should have done his research and called this scam out at the beginning . Why didn’t he. Rees Mogg is an utter embarrassment to this country too. He knew what was going on and as a hard core Brexiteer would understand what we all did. The Bankers/Globalists needed to stop Brexit and Trump in order to bring in the Great Reset.

If these politicians were intelligent or patriotic they would know what is treachery and they would call it out. It seems to me they are no more than leftwing Globalist shills waiting for crumbs from the Piper.

Chakra
Chakra
5 years ago

Thanks Sue – Geeks like this just tax my brain (not a coder but installed networks) I could only read half way through it and wanted to hurt someone lol frankly these types should just stick to writing code for online sports games,,,,

DSmith
DSmith
5 years ago

It’s not good if course, but none of these errors make a policy difference.

Bont Boy
Bont Boy
5 years ago

I only just found L/S/ form reading <<< https://www.thetruthseeker.co.uk/?p=220897 >>>
The Future Shape of Things by Sebastian Friebel

I think the World is Fast Changing for the Better .

( Sorry about this Formatting , don’t know why … )

I don’t really understand Software , but I do know it is sometimes a real pain. When I switch on my ‘ Smart Phone ‘ (Only ever used for its Camera ! )

it takes forever to play annoying sounds, and be ready to use …

Denim’s Article here displays expertise, not too ‘ Heavy ‘, and gives simple Folk like me a better ubderstanding why idiots (?) such as Ferguson should spent time behind Bars…

( And , I don’t mean pulling Pint’s ! )

A Great Artice, much obliged Denim !

Mikeymater
Mikeymater
5 years ago

“This bit of code highlights an issue Caswell Bligh has discussed in your site’s comments: R0 isn’t a real characteristic of the virus. R0 is both an input to and an output of these models, and is routinely adjusted for different environments and situations. Models that consume their own outputs as inputs is problem well known to the private sector – it can lead to rapid divergence and incorrect prediction. There’s a discussion of this problem in section 2.2 of the Google paper, “Machine learning: the high interest credit card of technical debt“.”
Can somebody explain what they mean here? The google paper is talking about real life feedback loops for machine learning (something regularly taught at any university I might add). This would only apply to this model if it didn’t counter for this (which it does by the addition of new features for the new control measures(wise or not)). If the input R0 values are priors this isn’t even relevant (as long as sensitivity analysis is given. Have I misunderstood?

Alison Grant
Alison Grant
5 years ago

Thank you….unforgivable….pride….academic pride affecting us all

Nell Pursey
Nell Pursey
6 years ago

Well researched essay and thanks. Time for Boris Govt to be made accoubtavble for betraying and failing the country.

Nell Pursey
Nell Pursey
6 years ago

All too late, we are where we are and all that needs to happen is for a change of Tory Govt Leader, for him to DECLARE in no uncertain terms the fake Covid pandemic scamdemic is well and truly over and the UK is now returning back to OLD NORMAL, is ALL Covid19 secure plastic paraphernalia to be BINNED forever! Free at last Free at last! UK Plab back to business back in business everyone back to OUR NORMAL LIVES! Ah I can but dream!

MadKangaroo
MadKangaroo
6 years ago

So…based on a garbage model from a guy with a history of garbage models, and a lockdown “protocol” developed by a teenager and adopted over the objections of experienced epidemiologists, and the rejection of HCQ treatments for early COVID symptoms because “OrangeManBad”, we have devastated 10’s of millions of lives and possibly killed 10’s of thousands of people.

We might just as well have employed spell casting and Voodoo dolls.

Never again.

oldschoolwithoutkliberal
oldschoolwithoutkliberal
6 years ago

On a personal level, I’d go further and suggest that all academic epidemiology be defunded. 

I joined to respond to this statement because the rest of the analysis is very good.

To arrive at that conclusion from one model is extreme and makes precisely the same mistake as SAGE, namely relying on a single model. The model in question is that this one example of an epidemiological model exhibits very poor coding standards. It’s very wrong to extrapolate that to all epidemiological models.

There are lot’s of very talented and experienced computer scientists and developers from commerce and industry who are now teaming up with epidemiologists and geneticists to exploit the vast computing power of relatively new massively parallel computational architectures. To throw them all under the bus with Prof Ferguson’s team is a terrible conclusion to an otherwise very good analysis.

Andrew Mather
6 years ago

“On a personal level, I’d go further and suggest that all academic epidemiology be defunded.”

Interesting. I came to the same conclusion (Peerless Reads, YouTube) based on the following:

The SI/SIR/SEIR models do not model viruses. They do not ‘analyse’ a contagion but merely return the input population entirely (SI) or the vast majority of it (SIR, 90%+ typical, SEIR 80%+ typical) as affected (removed from Susceptible) Their trajectories have embedded exponentials, being indistinguishable from exponential on both ascent and descent, and only departing from exponential close to peak, to turn around and head back down equally rapidly. All graphics for ebola, flu (1918), seasonal flu, show humped curves typical of a normal distribution; as do covid-19 infographics, as do daily reported cases and deaths. Farr started epidemiology noting the common appearance of normal distributions for epidemics. Normal distributions provide very reasonable fits for covid-19 reported data. The SI/SIR/SEIR models do not in any way generate normal but rather exponential trajectories for the virus. The time-delayed handling is absurd, specifying a rate based on dividing the time for the process. eg: if the disease lasts seven days, 1/7th of the infected recover on the first day. It is like saying… Read more »

Mikeymater
Mikeymater
5 years ago
Reply to  Andrew Mather

Because one type of model in a small field of epidemiology, all epidemiology is worthless? Clearly you’ve not done half the research you think you’ve done.

Geegnome
Geegnome
6 years ago

I’m a computational biologist, not an epidemiologist. I work in biotech now, but have done time in the academy. Prof. Ferguson has my sympathy because very likely he has spent thousands of hours writings grants begging for funds to support robust code — a savage struggle for resources that the computational soldier loses every time, flashy robots and mass spectrometers always winning out over the added programmer FTE. I would be surprised if there were even one dedicated developer on that team. Hard to hold an agile scrum in an empty cubicle.

vorlic
vorlic
5 years ago
Reply to  Geegnome

Maybe, maybe, but then the worthy professor should stop pretending that his house is in order.

Bruce Page
Bruce Page
6 years ago

Thank you for a very perceptive and useful analysis. For what it is worth, a few additional thoughts. I am completely astounded at the complete lack of understanding of the acceptable use of models by persons in positions of authority. I hesitate to call them leaders. Equally astounding is how poor at modeling the entire field of epidemiology appears to be. Are our education systems really so poor that almost no-one appears to understand that a model is at best an hypothesis and more often pure speculation, until it has been evaluated and tested using rigorous and valid logic. A major aspect of this testing is openness and public scrutiny. So far as I can tell, none of the models have been purpose built. Many appear to be modifications of standard textbook epidemiology. Most also seem to describe the dynamics of the virus-human system very inadequately. What politicians and their advisers seem not to realize is that when a scientist uses the output of an untested, unvalidated model to make predictions, especially if that model has not been exposed to public scrutiny, he or she is doing nothing more than expressing an opinion. It is not a scientific opinion any… Read more »

Iain Strachan
Iain Strachan
6 years ago

This is both fascinating and appalling. I also have run models using random number generators, and am very familiar with the concept of using the same seed to produce the same results. Initially I skim read the article and couldn’t understand how even on a single core it gave different results with the same seed. I came to the conclusion that there must have been a separate stream of random numbers elsewhere in the program that wasn’t seeded (and presumably would have taken the seed from the clock time, which is the normal thing). Then I re-read and found that is exactly what you described!
 
One point I would make. I agree that a bug would not necessarily produce random errors but might introduce systematic errors that would not average out over multiple runs. However, this example, with the accidental re-seeding, would of course introduce only random differences, which would indeed average out over multiple runs.
 
I guess the real issue is how far out the predictions are – and how much of the difference is due to programming errors, and how much to correct programming but with incorrect underlying assumptions. It is sobering to note that the… Read more »

TFS
TFS
6 years ago

I wonder if the compiler caused any further issues?
 
You can set the compiler flags for various things and I wouldn’t be surprised if some flags are determined to be critical in modelling situations at the expense of speed.
 
 
 
 

Hilly
Hilly
6 years ago

This review is by a software engineer who very clearly doesn’t understand large scale stochastic models. They are not the same profession. The “review” is biased and misleading but then you knew that because of the site name. The Monte Carlo approach of the model version referenced and the confidence intervals provided reflect the model uncertainty. It is common in large scale simulation models to have one file representing the models equations – it’s not email security software which the author worked on. The equations don’t care what language they are written in – after the code is compiled all code runs the same way.

rob
rob
6 years ago

‘Sue Denim’

C++ 30 years also.

Have you ever thought about Mensa?

https://www.youtube.com/watch?v=UvLQMMaVmzU

👍❤️

Henry Story
6 years ago

The state of the code is one thing. The fact that it did not get a proper peer review another. But the real thing to consider is how much more could be done by building an open source platform to run such models, that would make it usable internationally, be able to build in local particularities that we have found to make such a difference in how the virus spread, and so have a lot of engineering talent able to participate in its development.

I develop this here a little more at length https://medium.com/@bblfish/i-agree-that-since-a-pandemic-in-this-case-covid-19-is-not-only-a-biological-phenomenon-233ddca3352a

scxy1234
scxy1234
6 years ago

I’m sure the climate change models are as fully reliable as this one. The fundamental problem here is not that the model is crap from a programming reliability perspective, but that it’s impossible to create a meaningful model for something with so many variables and such a vast amount of data. This is exactly the problem with climate change. We don’t have computers anywhere near capable of processing the information involved and producing a reasonable result. But, because of human hubris and desire to make money off of giving answers, answers are given. It’s basically snake oil writ large. Does this mean modeling doesn’t work? No, of course not–machine learning is excellent at solving relatively simple problems such as pattern recognition (of course it’s only recent taken huge strides in this). Someday we may have supercomputers that can handle the amount of data needed to model something like this (although acquiring the needed data may then be the problem) but we are nowhere near that today. Human reasoning and a phased iterative approach to response to a situation are actually a better way to avoid catastrophes like the one we’ve just visited on ourselves unnecessarily. What we really need is… Read more »

Phil G
Phil G
6 years ago

I understand you’re an experienced software engineer, and I know that scientists write terrible code and their ignorance of engineering practices is often frustrating. But the thing is, working on “Maps, Gmail and account security” and “the company’s database product” doesn’t give you any experience working on massive numerical simulations. This post, to those who understand such things, is just a long confession of ignorance.

There may be bugs in the code, but non-determinism isn’t a bug. Having replicability given a pseudo-random seed is very helpful for automated regression tests and for debugging, but is not what we mean by “scientific” replicability. All scientific experiments in the real world are non-replicable; you will never get the same results if you run them again. Scientific claims are statistical, based not on experiments being deterministic, but on measuring the variability and computing your confidence that the outcome is within some distance of the “true” average result.

Neither is there any problem with writing algorithms that use their own outputs as inputs, though I understand why you would think so. Most Western culture has been based on “foundationalist” epistemology, which claims that you must begin with some assumptions, intuitions, or divinely revealed truths,… Read more »

Aunt Inem
Aunt Inem
6 years ago

I hate to roll a bomb into this discussion but I think the author’s conclusions are likely just as valid for the climate models.

steve__m
steve__m
6 years ago
Reply to  Aunt Inem

The author’s conclusions are wrong, and also don’t apply to climate models. The one I work with has a team of more than 10 software engineers testing, validating and code reviewing it.

Henry Story
6 years ago

I wrote up a blog post that puts the above into a larger philosophical context that should make the discovery more amenable to people with less technical experience. https://medium.com/@bblfish/open-source-and-covid-19-models-5e638f785514

Useful Idiot
Useful Idiot
6 years ago

Anyone, who has done any real research into this pandemic, particularly listened to those who have worked on the frontline…
Virologists, Doctors who have A&E experience, with infectious diseases, and/or a great deal of surgical experience, not those who last worked in the frontline, 30 years previously, will know:
A. This pandemic has been planned
B. It has been supported by biased, bought and paid for media.
C. That it is only a serious illness for those whose immune system is compromised,
D. That the end goal is totalitarian control of the whole planet.

Dr. Judy Mikovits, who worked on HIV, EBOLA, and whose work, kept Magic Johnson alive, is also a whistleblower, and was jailed for failing to hand over her research data.
Wuhan Co-vid 19?  Was it a Bio-weapon? .
https://youtu.be/3bXWGxhd7ic
This clinical study seems to suggest it was…
https://files.catbox.moe/n36xny.pdf

http://Www.bitchute.com

Search for Dr. Judy.
Look and Learn…

buddyglass
buddyglass
6 years ago

I think you’ve misunderstood the IC team’s responses where they excuse the non-determinism bugs as non-issues.

Stochastic models are intended to be run many, many times and the results aggregated. So long as any non-determinism introduced due to platform, compiler, multi-threading, or pulling additional values from the RNG before beginning the simulation (as was the case for Issue 116) is itself sufficiently random, i.e. it doesn’t skew the results in one particular direction, then it’s more or less meaningless. Over many thousands of runs, the contours of the aggregated data should be the same.

Barney McGrew
Barney McGrew
6 years ago
Reply to  buddyglass

You have no idea what you’re talking about. The program can be stochastic, yet deterministic – the pseudo random number generator can be/is seeded with the same number at the start of the runs in order to repeat the pseudo random sequence on demand.

But an uninitialised variable can be holding *any* value. So on the first run you might get 100 billion people dying. On the second 3000 billion. And on the third -3.06. Is that OK? Or maybe the uninitialised variable always gives you between 999 and 1000 billion dead.

How many runs do you think you’d have to do to average away the error? And how would you know you’d ‘averaged it away’? That isn’t how averaging and randomness works. Computer memory isn’t filled with ‘noise’ that results in values that average to zero – that would be an amazingly naive view. If it’s uninitialised you have no idea whether it’s random or biased or what it is.

steve__m
steve__m
6 years ago
Reply to  Barney McGrew

But IC explicitly say that the issue in question causes variations within the normal range, and not differences of a factor of 30.

Barney McGrew
Barney McGrew
6 years ago
Reply to  steve__m

Prove it. Every time. On every computer. You’re proposing to observe a computer as though it is part of the natural world. It isn’t and you don’t have to. You merely have to initialise the variable! If you don’t, the result is anyone’s guess. For sure, depending where it is in the model, it may just result in a tiny error even at the extremes of its range. If you can work that out and demonstrate it then that’s good. But it would have been a lot easier not to have made the error. If there’s one such error, there are probably others.

It’s like a publisher saying to an author: “We use a printing company that’s very good value, but their printing press occasionally makes small errors. On average it produces about ten random characters in a book. Most of the time, people don’t even spot them. So is that OK with you?”

Sure, most of the time. Until the day it creates a libellous sentence or whatever.

Robin Sharp
Robin Sharp
6 years ago

So … I’ve been writing trading / algo trading systems in investment banks for over 30 years. Here’s my take on the problem.

In the real world things happen in spacetime. That is to say a virus has a lifecycle (ie created, spawning, death) and that virus has interactions on objects and in people inside different contexts which and the virus can only affect human health. (ie a human lifecycle of healthy, mild-illness, severe-illness, death)

You can model a virus lifecycle by breaking the model down into contexts, eg a home, hospital, care home, car, train that contains a number of people and objects with different effects on the virus lifecycle.

You can have different modelling scales. So you would have three scales of days, hours and minutes.

You can get performance improvements by running contexts once with the same inputs. For example a person in a home with a specific set of values needs only be run once for all homes. Once the output had been gained it would not need to be run again. You can also run contexts in parallel for each timescale.

Every iteration would update the contexts, people, things and virus.… Read more »

Cooper Smout
Cooper Smout
6 years ago

I agree that more checks and bounds need to be put in place in academia, but this implies MORE funding not less. As it stands, academics are so poorly underfunded that they are expected to be all things to everybody: programmers, managers, secretaries, grant writers, etc., all the while retaining their integrity as a scientist. Of course some of those roles are going to suffer — to expect an epidemiology professor to also be a perfect software engineer is paramount to expecting you, a software engineer, to perfectly understand the science underlying the code. No one person can do everything, and I absolutely agree that we should strive to get software engineers and scientists working together to solve these problems. But we should also strive to eliminate bias while doing so, and your proposal to defund academia will not achieve this. Insurance companies — by their very nature — are heavily biased by the profit motive. Insurance premiums effectively amount to a tax on society: the difference between the premium and the true level of incidents ultimately becomes revenue, which allows them to pay employees (software engineers included) but also profit for shareholders. If you defund academic epidemiology, who will… Read more »

LorenzoValla
LorenzoValla
6 years ago
Reply to  Cooper Smout

@Cooper Smout: Well, who is auditing the academics??? No one, obviously, so your argument does’t hold up.

ANY institution that provides information and opinions to make public policy needs to be auditable. I don’t care if that’s the academy, the private sector, or magicians. No hiding behind the curtain.

Mars-in-Aries
Mars-in-Aries
6 years ago
Reply to  Cooper Smout

I think that from now on academics who publish research on the basis of modelling are going to have to show that the model works. I assume that there are standard benchmark tests to which model can be subjected to show that it is basically competent? I have seen nothing in the discussion here about any such standard testing, but I assume that it exists…?

Concerned Physicist
Concerned Physicist
6 years ago

This article misses the point of implementing and running these kinds of models. Its not about accurately trying to predict the future!! Things are far too complex and chaotic.

You don’t need a computer program to tell you that a lockdown was required.

Its a highly infectious (~10x more than ‘flu), has a long incubation period, is asymptomatic in the young and kills a decent percentage of the old and middle aged. Its a perfect storm and would overwhelm our healthcare system leading to far higher percentage of deaths of people in the middle age. Given enough time without major social distancing and lockdown we would all get it. This was about saving the people who have chronic health conditions but could still live for another 30 years if they can be supported while their bodies fight the virus.

If we hadn’t closed the schools then this would have infected everyone pretty quickly. This sort of model allows you to probe what effect something like keeping the kids at home does to the spread.

Ski_Tennis
Ski_Tennis
6 years ago

I was linked to this forum from Spectator.
While i am not great programmer (albeit starting with PDP11) , I spent many years working in network security.
What puzzles me, from programming perspective, is total lack of interest by anyone in government and civil service including Security to evaluate prof Ferguson work.
Even hardware installed below Top Secret level was in my days assessed by relevant departments.
We might have issues with process like common criteria etc, at least there was some attempt to analyse the code.
Here we have code which is considered poorly written even by people providing explanation as to why it is so, being used to justify measures costing country hundred of billions economically without anyone even checking it properly.
We have people who claim to have written over 2000 lines of serious code in 24 hrs saying that evaluating it would take too long, when whole programme is 15000 lines long.
However, my main concern is not so much code but modelling and conclussions derived from it.
Many people mention previous attempts by prof Ferguson to model epidemics with actual autcomes being completely different from model predictions.
What about Swedish University using prof Ferguson model… Read more »

Thx1138
Thx1138
6 years ago

The more that modellers respond failing to understand the importance of repeatability given the same seed, the less confidence I have in modellers. Having had my fixes to other peoples DEs published, having fixed iterative models, and also been a software engineer, it is obvious that people who do not understand things shouldn’t be let loose with them. There is no random number generator in a typical PC. There is a PRBS generator. This was invented along with game theory, stochastic models, quantum mechanics and indeed the cpu architecture we use, by John von Neumann. A program however it is written (unreadable usually indicates lack of understanding by the author, seemingly simple is evidence of a master) if given a fixed set of inputs and it is not dependent on the state of any external variable, should give the same results. If not it has horrendous bugs. It’s a matter of correctness of the model. You cannot asume averaging multiple runs will correct and not compound these errors.
The model is either correct or it isn’t. I think the model needs to be corrected and all work based on it republished. There is a chance that the same recommendations will… Read more »

Thx1138
Thx1138
6 years ago
Reply to  Thx1138

You could probably estimate the results based on aggregating a series of gompertz functions.

earthflattener
earthflattener
6 years ago
Reply to  Thx1138

Actually, modelers are responding saying it WAS repeatable at the time it was run. The bug came later and is only associated with restart states using the random number splitter. This was not used by the imperial team as far as the documentation shows in the github discussions.
Secondly, the new answers seem to give the same results as the old answers….
The more comments I read like this, the less confidence I have that people make an effort to do their research before jumping to conclusions that are dangerous or that fit some political preconceptions

Mike Whittaker
Mike Whittaker
6 years ago

Am now waiting for the climate change deniers/ Brexiters/ Y2k deniers to pile in …

earthflattener
earthflattener
6 years ago
Reply to  Mike Whittaker

Are you joking me? The thread is full of them…particularly the ones who come in and downvote anything that challenges the author’s continual exaggeration about the fairly harmless bug.

Thank you for reading. Please help us keep the Daily Sceptic going by becoming a donor.