Labber

Nå skal vi øve litt med ekte datasett, vi begynner med data om oljeproduksjon fra norske felt.

Olje

Vi kan laste inn data direkt fra webben - her direkt fra min webside.

oil_fields<-read.csv("http://jmaurit.github.io/data/oil_fields_cross.csv", header=T, sep=",")

Hva har skjedd? I RStudio er det et vindu som heter Environment, der vi nå kan se en fil som heter oil_fields. Prøv å klikke på filen og se hva som skjer. Alternativt, skriv inn i konsolen

oil_fields er en objekt som kalles en data frame - man kan tenke på det som en excel-ark der kolonene er variabler og radene er observasjoner.

I konsolen, tast inn:

oil_fields

Hva skjer? Antakeligvis for mye informasjon.

Prøv isteden:

head(oil_fields, n=10)

Dette vil printe ut kun de første 10 radene av datasettet.

tail(oil_fields, n=10)

Dette vil printe ut de siste 10 radene av datasettet.

Nå, skriv inn:

str(oil_fields)

Dette viser strukturen av data-settet. Vi kan se at formattet til variablen producing_from er en factor faktor - som er vanligvis brukt til å definere en kategori, som bilmerke, eller farge, osv.

$ brukes til å nå individuelle variabler/kolomer

head(oil_fields$recoverable_oil)

Vi kunne også sjekke formattet til variablen ved class kommandoen:

class(oil_fields$producing_from)

Vi vil konvertere variablen fra faktor til dato, dette kan vi gjøre ved å bruke kommandoen as.Date()

oil_fields$producing_from<-as.Date(oil_fields$producing_from,format="%Y-%m-%d")

Dette kan vi sjekke:

Nå kan vi begynne å plotte. Først kan vi se på størrelsen av oljefeltene, definert som utvinnbarolje (“recoverable oil”).

plot(oil_fields$producing_from, oil_fields$recoverable_oil)

Hva sier denne figuren om størrelsen på oljefunn over tid?

Vi kan endre titellen på plotten:

plot(oil_fields$producing_from, oil_fields$recoverable_oil, xlab="", ylab="recoverable oil, Mill SM3")

La oss også se på en histogram. Hvordan kan vi tolke denne histogrammen? Hva sier det om oljefelt i norske vann?

hist(oil_fields$recoverable_oil)
hist(oil_fields$recoverable_oil, breaks=50)

Nå kan vi lage noen nye variabler: Forskjellen mellom recoverable oil og remaining oil er hvor mye har allerede blitt pumpet ut. Vi lager denne variablen.

oil_fields$extracted<-oil_fields$recoverable_oil-oil_fields$remaining_oil

Nå kan vi lage en variabel som forteller oss investeringer (i dollar) per enhet utvunnet olje:

oil_fields$invest_per_millsm3<-oil_fields$total.invest/oil_fields$extracted
#eller
#oil_fields["invest_per_millsm3"]<-oil_fields$total.invest/oil_fields$extracted

La oss prøve å plotte dette:

plot(oil_fields$recoverable_oil, oil_fields$invest_per_millsm3)

Kan du forklare mønsteret?

Prøv å plotte relativ til første produksjonsdato:

plot(oil_fields$producing_from,oil_fields$invest_per_millsm3)

La oss se på kun de store feltene: her vil vi vise kun felt som er større en 50 mill sm3,

oil_fields[oil_fields$recoverable_oil>50, ]
##         X         name      lon      lat recoverable_oil remaining_oil
## NA     NA         <NA>       NA       NA              NA            NA
## 5      64       ÅSGARD 6.728537 65.11635           100.4          18.6
## 7      85       BALDER 2.446895 59.30631            72.1          16.2
## 10    121        BRAGE 3.014216 60.58058            59.3           4.0
## 13    190      DRAUGEN 7.756043 64.33243           146.7          14.9
## 15    257      EKOFISK 3.218287 56.54663           569.2         129.8
## 16    301      ELDFISK 3.242870 56.39870           137.9          37.3
## NA.1   NA         <NA>       NA       NA              NA            NA
## 28    504        GRANE 2.506074 59.18574           124.6          36.1
## 30    524     GULLFAKS 2.130364 61.20896           365.5          11.6
## 31    557 GULLFAKS SØR 2.215286 61.10673            58.8          16.6
## 34    620      HEIDRUN 7.306980 65.32944           182.1          40.1
## 54    917        NORNE 8.147307 66.03421            90.8           3.8
## 57    971      OSEBERG 2.722425 60.54786           384.6          22.7
## 59   1020  OSEBERG SØR 2.760004 60.25226            61.0          17.2
## 71   1194       SNORRE 2.193464 61.49258           249.9          64.1
## 72   1220    STATFJORD 1.866338 61.26222           570.4           4.3
## 80   1409       TORDIS 2.117935 61.28220            61.2           6.0
## 81   1432        TROLL 3.552057 60.82293           263.8          36.0
## 85   1491          ULA 2.860582 57.10273            87.9          15.7
## 89   1553      VALHALL 3.393803 56.27577           147.4          41.5
## 92   1616   VESLEFRIKK 2.891658 60.78827            54.1           1.8
## 94   1684       VIGDIS 2.147171 61.40055            66.6          15.0
##      producing_from total.invest extracted invest_per_millsm3
## NA             <NA>           NA        NA                 NA
## 5        1999-05-19        65301      81.8           798.3007
## 7        1999-10-02        23198      55.9           414.9911
## 10       1993-09-23        17062      55.3           308.5353
## 13       1993-10-19        23291     131.8           176.7147
## 15       1971-06-15        94172     439.4           214.3195
## 16       1979-08-08        34963     100.6           347.5447
## NA.1           <NA>           NA        NA                 NA
## 28       2003-09-23        19746      88.5           223.1186
## 30       1986-12-22        74940     353.9           211.7547
## 31       1998-10-10        28340      42.2           671.5640
## 34       1995-10-18        52935     142.0           372.7817
## 54       1997-11-06        23806      87.0           273.6322
## 57       1988-12-01        66622     361.9           184.0895
## 59       2000-02-05        20108      43.8           459.0868
## 71       1992-08-03        65475     185.8           352.3950
## 72       1979-11-24        65264     566.1           115.2871
## 80       1994-06-03        12201      55.2           221.0326
## 81       1995-09-19       130620     227.8           573.3977
## 85       1986-10-06        14700      72.2           203.6011
## 89       1982-10-02        61511     105.9           580.8404
## 92       1989-12-26        16660      52.3           318.5468
## 94       1997-01-28        14829      51.6           287.3837

La merke til bruken av “[ ]” til å få tilgang til en subsett av koloner og rader i formen of mydataframe[rows, columns].

Her vil vi velge ut alle rader hvor oljefeltet er større enn 50 mill sm3.

Vi kan også velge å kun se på en variabel. Her skal vi se på navnene på alle felt som er større enn 50:

big_oil_fields<-oil_fields[oil_fields$recoverable_oil>50, "name"]

Hvis jeg har lyst på både navn og størrelse, bruker jeg c() funksjonen - “combine”:

big_oil_fields<-oil_fields[oil_fields$recoverable_oil>50, c("name", "recoverable_oil")]

Nå til noe litt mer avansert

Hensikten her er å vise hva du kan gjøre med R. Du kommer ikke til å forstå alt som skjer, men det er ingen grunn for bekymring.

Vi har lengdegrad og breddegrad data for alle oljefeltene - nå vil vi prøve å lage kart av oljefeltene.

Først, skal vi installere en package for å lage kart med bruk av google maps.

Vi trenger å installere pakken kun en gang.

install.packages("ggmap") 

Nå får å laste in pakken inn i R:

library(ggmap)
## Loading required package: ggplot2

Først, skal vi laste ned kartdata fra google - dette gjør vi med commandoen fra ggmaps som heter “get_map.”

northsea<-get_map(location = c(lon = 2.74, lat = 59.00), zoom=6, maptype="satellite")
## Map from URL : http://maps.googleapis.com/maps/api/staticmap?center=59,2.74&zoom=6&size=640x640&scale=2&maptype=satellite&language=en-EN&sensor=false

Og da kombinerer vi kartet som vi har lastet ned fra Google Maps med data.

Vi bruker farge som en indikator av hvor mye olje har blitt produsert fra feltet og størrelsen på sirkelen til å vise den estimerte størrelsen på oljefeltet.

ggmap(northsea) +
geom_point(aes(x = lon, y = lat, size=recoverable_oil, color=extracted),alpha=.7, data = oil_fields)+
scale_color_continuous(low="red", high="black")
## Warning: Removed 22 rows containing missing values (geom_point).

Oppgave

oil_fields["invest_per_rec"]<-oil_fields$total.invest/oil_fields$recoverable_oil
plot(oil_fields$producing_from, oil_fields$invest_per_rec)

Her ser vi at kostnaded har generelt økt over tid, særlig rundt 2010. Dette kan forklare nedturen i norsk petroleumindustri de siste årene: oljeselskapene har jobbet med å få ned kostnader.

plot(oil_fields$recoverable_oil, oil_fields$invest_per_rec)

En ting vi kan se her er at større felt har, generelt sett, lave investeringskostnader per sm3.

Nå skal vi sortere i forhold til invest_per_rec og vise fram de billigste 5 feltene.

oil_fields <- oil_fields[order(oil_fields$invest_per_rec), ]
print(oil_fields[1:5,])
##       X          name      lon      lat recoverable_oil remaining_oil
## 9   118         BØYLA 1.848627 59.32033             3.4           3.4
## 42  752         KNARR 2.781421 61.80114            11.9          11.9
## 63 1081 RINGHORNE ØST 2.494802 59.29083            15.5           6.3
## 11  146      BRYNHILD 2.297317 57.49330             3.6           3.6
## 46  802  MARTIN LINGE 2.054545 60.50824             6.0           6.0
##    producing_from total.invest extracted invest_per_millsm3 invest_per_rec
## 9            <NA>           85       0.0                Inf       25.00000
## 42           <NA>          534       0.0                Inf       44.87395
## 63     2006-03-19          738       9.2           80.21739       47.61290
## 11           <NA>          210       0.0                Inf       58.33333
## 46           <NA>          402       0.0                Inf       67.00000

En ting vi kan se her er at mange av disse oljefeltene ikke har begynt å produsere enda, og dermed er investeringene forholdsvis lave. Dette burde bli tatt hensyn til i en analyse.

For å teste vår hypotese om at oljefelt som ligger lengre nord er dyrere, kan vi plotte investeringer per sm3 utvinnbarolje og breddegrad (lat).

plot(oil_fields$lat, oil_fields$invest_per_rec)

Det er ikke noen tydelig trend her. Men vi vet at det er flere ting som bestemmer investeringer. Når vi lærer hvordan å kjøre multiregresjon senere, kan vi prøve å ta hensyn til disse faktorer.