There are many university league tables out there: The Guardian’s, The Complete University Guide’s, The Times Higher Education’s, The Student Hut’s, …. and now there is even a league table where universities from my native Wales take seven of the top ten positions. Congratulations to Aberystwyth on topping that table! It occurred to me that I might as well take this proliferation to its logical conclusion and make league tables so that every university can top at least one table. So without further ado, here is a university league table with Surrey as number one university:

rank University 1 Surrey 2 Oxford 3 Northumbria 4 Edinburgh 5 Glasgow 6 Liverpool John Moores 7 Aston 8 St Andrews 9 Bath 10 Durham

Commiserations to Oxford on just missing out on the top spot. And I don’t want my alma mater, the University of Sheffield to feel left out, so here is one they top:

rank University 1 Sheffield 2 London School of Economics 3 Exeter 4 Kent 5 Keele 6 Newcastle 7 Bristol 8 Sussex 9 York 10 Bath

In both cases I worked with data for the top 50 according to The Guardian’s 2019 league table. The Guardian’s ranking is based on a weighted sum of nine metrics they have for each university. They use a particular set of nine weights to sum up these nine numbers. Then the league table ranking is based on the values of this weighted sum of nine metrics. I simply change these weights to get a different ranking.

So, I can get any ranking I want, I wrote some Python code to implement a simple Monte Carlo maximisation of the league table position of a university you select. The code just changes randomly the weights and (mostly) rejects those that worsen the league table position of the selected university but accepts any change that improves it. After a couple of minutes running, you have a new league table with your selected university as number one*. Easy.

For a small sum, I will be happy to generate a league table with your desired university as number one, for use in whatever marketing material you desire. Now that I have taken the proliferation of league tables to its logical conclusion, I would hope that we won’t get any more of them. I fear I will be disappointed.

* For example, the league table with Surrey as official number one university is produced by the nine weight values: (-0.09, 0.63, 1.41, 1.92, -0.92, -0.61, 2.66, 0.23, -0.22). Data is from The Guardian’s 2019 set. The weights refer to data in columns G to O, in order, and I only use their top 50 universities. Getting a league table with any university you want top out of all 121 is possible but requires longer runs/slightly more creativity. Sheffield is top of the pile with the weight values: (0.18, -0.67, -3.44, 0.46, 0.67, 5.13, -4.36, -0.15, -1.0).

Can you do it with only positive weights?

At least with my simple Monte Carlo optimisation, I was not able to make Surrey number one with only positive weights, some other unis yes. If another uni has higher values for all nine metrics then positive weights won’t get the job done :(, although it can still greatly increase the ranking. Or in other words does my MC code work by penalising unis with higher, for example, student satisfaction with feedback? Yes it does.