Nå skal vi øve litt med ekte datasett, vi begynner med data om oljeproduksjon fra norske felt.
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")]
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).
Skap en en variabel invest_per_rec som er investering per mill sm3 i utvinnbar-olje (recoverable_oil). Plotte denne variablen mot producing_from variabelen og recoverable_oil variabelen. Hvordan kan du tolke disse variablene.
Print en liste over de 5 “billigste” oljefeltene, det vil si de med laveste investeringer per utvinnbareolje. Er det noe felles med disse? (Hint: søk på google etter “sorting in R”).
Jeg har en hypotese om at oljefelt som ligger lengre nord er dyrere å utvikle. Hvordan kan jeg teste og utforske denne hypotesen?
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.