Anders Lie Brenna
Oljeprisen Anders Lie Brenna

Slik sjekker vi oljeprisen opp mot statsbudsjettet hver måned

Dette er en artikkel for spesielt interesserte, og med det mener jeg folk som liker å jobbe med tall, analytikere med interesse for oljeprisen, journalister med interesse for datastøttet journalistikk og programmerere som er nysgjerrige på programmeringsspråket R.

I enerWE er vi glad i fakta. Tørre tall og konkrete saksopplysninger er sjeldent spennende i seg selv, men et godt faktagrunnlag utgjør et godt fundament for en saklig og opplyst debatt. Så kan kildene vi intervjuer få lov til å boltre seg med hva de mener er årsaker til – og konsekvenser av – disse faktaopplysningene.

Som en nettavis som skriver mye om og for oljebransjen, er oljeprisen og Norges inntekter fra oljebransjen noe vi naturlig nok er veldig opptatt av. Vi følger nyhetsbildet fortløpende, men vi bruker også tid og spalteplass på å finne frem og formidle hvordan det står til med nøkkeltallene bak nyhetene. Dette kan ta mye tid, og når vi skal gjøre det regelmessig må vi bruke teknikker og verktøy for å gjøre det så effektivt som mulig.

Et eksempel på det er våre tilnærmet månedlige artikler om hvordan oljeprisen påvirker inntektene til statsbudsjettet:

Vi bruker derfor en del tid på å få på plass løsninger for det som gjerne kalles datastøttet journalistikk. Det går i korte trekk ut på å utvikle programvareløsninger for å automatisk samle inn, analysere og bearbeide og presentere data.

Slike programvareløsninger kan være alt fra små og enkle scripts til store omfattende løsninger. Vi foretrekker førstnevnte, og har derfor lagt vår elsk på programmeringsspråket R.

R er et programmeringsspråk og utviklingsmiljø for statistikk orientert utvikling, samt grafisk presentasjon av data. Det har en litt spesiell syntaks som kan være litt uvant for erfarne programmerere, men det har noen store fortrinn som gjør det godt egnet for journalister og andre som ikke nødvendigvis kan sitte og programmere på fulltid.

Mens andre programmeringsspråk fort kan bli både kompliserte og ganske langdryge, er R et programmeringsspråk der man kan få til veldig mye med veldig korte kodesnutter. Det gjør det perfekt til småjobber som man bruker alt fra moen få minutter til et par dager på å utvikle.

Som journalist og redaktører går jobben min først og fremst ut på å drive og organisere vanlig journalistikk, og det jeg gjør av programmering må jeg gjøre innimellom alt annet. Da nytter det ikke å sperre alt ute og grave meg dypt inn i store omfattende problemstillinger. Når jeg setter i gang med noe, bør det helst gi konkrete resultater i løpet av kort tid. Her er R i sitt ess.

Nedenfor er en av R-løsningene vi har utviklet.

Med kun 24 linjer kode kan vi samle inn oljekurs og dollarkurs, for så å regne ut prisen på oljefat i norske kroner og sette det opp i mot forventningene i statsbudsjettet.
Med kun 24 linjer kode kan vi samle inn oljekurs og dollarkurs, for så å regne ut prisen på oljefat i norske kroner og sette det opp i mot forventningene i statsbudsjettet.

Det er en kodesnutt som tar for seg følgende oppgaver:

  1. Samle inn data
  2. Bearbeide data
  3. Presentere data

Først kobler vi oss opp mot en databank som heter Quandl. Der ligger det veldig mye interessant statistikk, og et bredt utvalg av datagrunnlag som kan være nyttig for forskjellige typer journalistikk. Vi bruker det til å hente ned oppdaterte kurser med historikk for oljeprisen og dollarkursen.

library(Quandl)
brent = Quandl(«CHRIS/ICE_B1″, collapse=»daily», start_date=»2017-01-01″, end_date=»2017-08-31″)
dollar <- Quandl(«BOE/XUDLNKD»)

Deretter filtrerer vi informasjonen slik at vi får historiske valutakurser for dollar mot kroner, og priser for Nordsjøoljen, for så å gange historiske dollarkurser opp mot historiske oljepriser. Dermed får vi oljeprisen pr. fat målt i norske kroner for hver eneste dag i perioden vi har valgt oss.

oiltable <- merge(dollar,brent, by.x = «Date», by.y = «Date»)
oiltable$dayofmonth <- substr(as.Date(oiltable$Date),9,11)
oiltable$Oljepris <- oiltable$Value*oiltable$Settle

Så lager vi grafer. Den første er for å vise oljeprisen i kroner:

jpeg(«Oljepris2017.jpg», width=650, height=400)
plot(main=»Oljepris», oiltable$Oljepris,ylab=»Oljepris (kr)», xaxt=’n’, xlab=»Januar-august 2017″, type=»l», col=»blue»,ylim=c(350,500), las=1)
abline(h=425,col=»red»)
abline(h=444,col=»green»)
#abline(h=451,col=»purple»)
axis(1, at=1:length(oiltable$dayofmonth), labels=oiltable$dayofmonth)
dev.off()

Selv om oljeprisen har tatt seg opp og ligger der den normalt sett burde ligge, har dollarkursen ødelagt for de norske inntektene fra oljen.
Her ser vi hvordan oljekrisen målt i norske kroner har utviklet seg. Den røde streken viser en pris på 425 kroner, som er det det opprinnelige statsbudsjettet la til grunn. Den grønne streken viser en pris på 444 kroner, prisen som ligger til grunn for det reviderte statsbudsjettet.

Her har vi også lagt inn to linjer som viser hva det opprinnelige statsbudsjettet og det reviderte statsbudsjettet har som forutsetning at oljeprisen skal ligge på.

Den andre grafen viser oljeprisen i dollar:

jpeg(«OljeprisDollar2017.jpg», width=650, height=400)
plot(main=»Oljepris», oiltable$Settle,ylab=»Oljepris ($)», xaxt=’n’, xlab=»Januar-august 2017″, type=»l», col=»blue»,ylim=c(45,60), las=1)
axis(1, at=1:length(oiltable$dayofmonth), labels=oiltable$dayofmonth)
dev.off()

Oljeprisen har tatt seg opp igjen.
Her ser vi oljeprisen for nordsjøolje så langt i år.

Og den tredje grafen viser dollarkusens utvikling:

jpeg(«Dollarkurs2017.jpg», width=650, height=400)
plot(main=»Dollarkurs», oiltable$Value,ylab=»Dollarkurs», xaxt=’n’, xlab=»Januar-august 2017″, type=»l», col=»blue»,ylim=c(7.5,9), las=1)
axis(1, at=1:length(oiltable$dayofmonth), labels=oiltable$dayofmonth)
dev.off()

Dollarkursen er fortsatt på et relativt høyt nivå, men den har falt ganske markant.
Dollarkursen er fortsatt på et relativt høyt nivå, men den har falt ganske markant.

Alt som skulle til får å få til dette er altså 24 linjer med kode. Den kan også enkelt justeres for å endre tidsperspektivet.Vi kan for eksempel sette et annet start- og stopptidspunkt for å få tilsvarende grafer og tall for hver enkelt måned eller for flere tiår.

Det eneste som gjenstår etter å ha kjørt denne kodesnutten, er å skrive selve artikkelen. Det kan også automatiseres, men foreløpig har vi ikke tatt seriøse steg for å komme dit. Det ville svart seg hvis vi ønsket å kjøre en slik sak hver eneste dag, men når vi kjører den en gang i måneden blir det mer effektivt å heller skrive den manuelt og legge til litt menneskelig vurdering avhengig av hvordan måneden har gått.

Vi bruker imidlertid en del andre enkle kodesnutter for å regne ut nøkkeltall som for eksempel gjennomsnitt, og hvor stort utslag dette gir for statsinntektene.

Selv om kildekoden er kort og relativt enkel, tar det fortsatt litt tid å lære seg R. Det ville nok ikke svart seg hvis det bare kunne blitt brukt på denne saken, men slik er det heldigvis ikke. Vi bruker nesten den samme kildekoden på flere andre dataområder, blant annet på vår ukentlige oppdatering av fyllingsgraden i de norske vannmagasinene:

Datastøttet journalistikk er et spennende fagfelt, og det har skjedd veldig mye de siste årene. Det er likevel opplagt at vi bare er helt i tidlig startfasen.

Hvis du er interessert i å høre mer om dette kan jeg anbefale dagsseminaret DATA-Skup som arrangeres lørdag 28. oktober.

Og hvis du ble nysgjerrig på R, er det mange gode kilder for dette rundt på nettet. Du kan begynne med å laste det programmeringsspråket her, og installere utviklingsverktøyet R Studio herfra.

Lykke til!