UBI cost comparison in Norway

It started with a simple question, a friend of mine asked me, “If you were handed a salary each month, no strings attached, what would you do?”. After some back and forth of dreaming out loud about what I could do, it circled back to that I would still continue my education and find a job in my field. I would even consider taking more courses in mathematics if I was not pressured to start earning soon. I might be one of the lucky few who actually love their occupation and were given an opportunity and means to get it. So why should not others get a possibility to find their passion without juggling between poverty and purpose as well?

This question from my friend came from the topic about UBI (Universal Basic Income). To gain more insight, I was recommended to read “Utopia for Realists” by Rutger Bregman (2014) and it has changed my mind even further that it was a good idea. But I was still unsure on how much money are we talking about and how feasible is it for a country to pull it off. As a mortal who does not usually work with big numbers, millions and billions seem far away and hard to visualize. So my curiosity took the upper hand and I decided to find out:

How much would UBI for every living person in Norway cost per year compared to how much government in Norway spends on healthcare, military and etc. ?

Norway is in the top 10 richest² and most spending on healthcare³ countries in the world. So I expected to see UBI costs would be around those spent on healthcare and other social purposes. So in order to find an answer I needed to find out:

  • How much should UBI be?
  • Norwegian government spending in 2019
  • How many people are there in Norway?
  • What is a good way to visualize this data?

Now to the questions. To find out an appropriate approximation for UBI per person, I decided to start with “Grunnbeløpet i Folketrygden” which roughly translates to “Basic amount in Social Insurance”. This value is tweaked each year and helps the government to find out the amount needed for students or those who cannot find work. Those last years it has been around 100k NOK. So this is the value I will be using.

Government spending can be found at the official web-site Statsregnskapet⁵, summarized data for each department can be downloaded as .csv file:

Data from Statsregnskapet⁵, translated from Norwegian to English. Expenses are in NOK.

According to Data Commons⁶ the population of Norway in 2019 was 5,326,212 people. And last but not least, for how to visualize the information, I did not go far and got inspired by a graph by SSB⁷:

From SSB⁷, data source

Now for the exciting part — to code it I decided to go with python as it has useful libraries such as pandas and matplotlib. I wrote in Google Colab Research notebook. For the installs and imports:

!pip install — upgrade gspread
# algorithm for treemap
!pip install squarify
# To log in and load spreadsheet
from google.colab import auth
import gspread
# to open spreadsheet and load data
import pandas as pd
# For the graph
import squarify
import matplotlib
from matplotlib import style
import matplotlib.pyplot as plt
import seaborn as sns
# Activate Seaborn
%matplotlib inline# Large Plot
matplotlib.rcParams['figure.figsize'] = (16.0, 9.0)
# Use ggplot style

Here I authorize user to be able to load the spreadsheet I downloaded:

from oauth2client.client import GoogleCredentials
gc = gspread.authorize(GoogleCredentials.get_application_default())

To load and show the data:

worksheet = gc.open(‘NAME_OF_THE_SPREADSHEET’).sheet1# get_all_values gives a list of rows.
rows = worksheet.get_all_values()
df = pd.DataFrame.from_records(rows)#Use first row as column names
df.columns = df.iloc[0]
df = df.drop(df.index[0])
# Cast to float
df[“Expenses”] = pd.to_numeric(df[“Expenses”], downcast=”float”)

Some helper functions for conversions and plotting the graph:

def draw_plot(df, title, label = None):
full_labels = label if label is not None else df["Category"]
# Changed code from https://mubaris.com/posts/dataviz-treemaps/
# Get Axis and Figure
fig, ax = plt.subplots()
# Our Colormap
cmap = matplotlib.cm.coolwarm
# Min and Max Values
mini = min(df["Expenses"])
maxi = max(df["Expenses"])
# Finding Colors for each tile
norm = matplotlib.colors.Normalize(vmin=mini, vmax=maxi)
colors = [cmap(norm(value)) for value in df["Expenses"]]
# Plotting
squarify.plot(sizes=df["Expenses"], label=full_labels, alpha=0.8, color=colors)
# Removing Axis
# Invert Y-Axis
# Title
plt.title(title, fontsize=32)
# Title Positioning
ttl = ax.title
ttl.set_position([.5, 1.05])
def get_NOK_milliard(exp: float) -> int:
return int(exp/10**9)
# Adds amount to the category names
def get_full_labels(df):
full_labels = []
for cat, exp in zip(df["Category"], df["Expenses"]):
full_labels.append(cat + " [" + str(get_NOK_milliard(exp)) + "]")
return full_labels

This line results in a graph showing the government spending in 2019.

draw_plot(df, get_full_labels(df))
Amount in [] is in NOK and Milliards

To plot together with UBI, first it is needed to calculate how much it will cost per year:

UBI_year = 0.0001 * 10**9 # around 100k per year per one person in Norway
population = 5.328 * 10**6
UBI_cost = UBI_year * population # cost in milliards NOK# Create new dataframe with UBI cost attached
df2 = pd.DataFrame({“Category”: [“UBI”], “Expenses”: [UBI_cost]})
df2 = df2.append(df)
draw_plot(df2, “Norway Government Spending in 2019 with UBI”, get_full_labels(df2))
Amount in [] is in NOK and Milliards

This result has cooled my head a bit as it shows just how much it costs to just give the absolute minimum to every single person in Norway. Only if the majority of “Health & Care” and “Social purposes, social insurance“ shrink substantially, would it be viable to introduce something like that. And that is with the assumption that the income will not become less. This would be an interesting topic to look into further: how much of the government income can be affected and which departments.

Hopefully this gives a better visualization of the sums needed to give people freedom from poverty.

[1]: Arin Basu. (April 16, 2017). How to add footnotes https://medium.com/@arinbasu/you-can-use-footnotes-thus-babus%C2%B9-6c485c4eff1e

[2]: Global Finance. (August 03, 2020). Richest Countries in the World 2020 https://www.gfmag.com/global-data/economic-data/richest-countries-in-the-world

[3]: Investopedia. (Sep 28, 2020). What Country Spends the Most on Healthcare? https://www.investopedia.com/ask/answers/020915/what-country-spends-most-healthcare.asp

[4]: NAV. (Sep 04, 2020). Grunnbeløpet i folketrygden https://www.nav.no/no/nav-og-samfunn/kontakt-nav/utbetalinger/grunnbelopet-i-folketrygden

[5]: Statsregnskapet. (Feb 01, 2021). Statsregnskapet 2019 https://statsregnskapet.dfo.no/

[6] Data Commons. (Feb 01, 2021). Norway 2019 https://datacommons.org/place/country/NOR

[7] Statistisk sentralbyrå. (Feb 01, 2021). Fakta om slik brukes skattepengene https://www.ssb.no/offentlig-sektor/faktaside/slik-brukes-skattepengene

In total this project took around 6 hours of focused work, tracked by track.toggl.com. This is not included the talk with the friend and reading the book.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store