I denne labben skal vi lære flere verktøy som skal hjelpe oss å laste inn, behandle og plotte data.

Gjeld, renter og inntekt

For å vurdere spørsmålet om huspriser er for høye, så må man også se på andre faktorer. Det kan være gode og rasjonelle grunner for at huspriser har økt.

Hvilket faktorer påvirker hva folk er villig til å betale for en bolig? Lønn og rente er da to viktige faktorer. Vi kan se på hvordan disse har utviklet seg i norge.

Vi kan laste inn rentedata fra Norges Bank:

renter <- read.csv("http://www.norges-bank.no/WebDAV/stat/en/renter/v2/renter_mnd.csv", na.strings="ND")
head(renter)
##    DATES FOLIO.NOM RESERVE.NOM DLAAN.NOM STATSVKL.3M.EFF STATSVKL.6M.EFF
## 1 Jan-86        NA          NA     12.02              NA              NA
## 2 Feb-86        NA          NA     13.57              NA              NA
## 3 Mar-86        NA          NA     13.00              NA              NA
## 4 Apr-86        NA          NA     13.00              NA              NA
## 5 May-86        NA          NA     19.47              NA              NA
## 6 Jun-86        NA          NA     14.00              NA              NA
##   STATSVKL.9M.EFF STATSVKL.12M.EFF STATSOBL.3Y.EFF STATSOBL.5Y.EFF
## 1              NA               NA              NA           13.62
## 2              NA               NA              NA           13.60
## 3              NA               NA              NA           13.57
## 4              NA               NA              NA           13.48
## 5              NA               NA              NA           13.46
## 6              NA               NA              NA           13.54
##   STATSOBL.10Y.EFF NOWA.RATE NOWA.VOLUME
## 1            13.49        NA          NA
## 2            13.48        NA          NA
## 3            13.37        NA          NA
## 4            13.05        NA          NA
## 5            13.02        NA          NA
## 6            13.27        NA          NA

Vi skal igjen bruke pakkene ggplot2, men vi skal også introdusere pakkene zoo og reshape2, som skal hjelpe oss omformattere datasettet.

library(zoo)
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(reshape2)

Først, skal vi omformattere dato-variablen. Under kan vi se at det er i form av “jan-86”.

head(renter$DATES)
## [1] Jan-86 Feb-86 Mar-86 Apr-86 May-86 Jun-86
## 391 Levels: Apr-00 Apr-01 Apr-02 Apr-03 Apr-04 Apr-05 Apr-06 ... Sep-99

Vi vil formattere til dato-formatt. For å hjelpe oss med dette skal vi bruke noen funksjoner i pakken zoo. zoo er en pakke designet for tidsrekke-data, så vi kommer til å bruke mye av den. Her må vi bruke funksjonen as.yearmon() fra zoo pakken, deretter skal vi formatere variablen til vanlig dato-formatt med funksjonen as.Date()

dates <- as.yearmon(renter$DATES, format="%b-%y") 
renter$DATES <- as.Date(dates)
head(renter$DATES)
## [1] "1986-01-01" "1986-02-01" "1986-03-01" "1986-04-01" "1986-05-01"
## [6] "1986-06-01"

Nå velger vi ut de rente-typene vi vil inkludere: styringsrenten (FOLIO), Statskasseveksler med termin 3, 6 og 12 måneders termin og statsobligasjoner med 5 og 10 års termin.

Kan du forklare hva disse rentene betyr?

colnames(renter)
##  [1] "DATES"            "FOLIO.NOM"        "RESERVE.NOM"     
##  [4] "DLAAN.NOM"        "STATSVKL.3M.EFF"  "STATSVKL.6M.EFF" 
##  [7] "STATSVKL.9M.EFF"  "STATSVKL.12M.EFF" "STATSOBL.3Y.EFF" 
## [10] "STATSOBL.5Y.EFF"  "STATSOBL.10Y.EFF" "NOWA.RATE"       
## [13] "NOWA.VOLUME"
rente_typer <- c( "DATES","FOLIO.NOM", "STATSVKL.3M.EFF","STATSVKL.6M.EFF", "STATSVKL.12M.EFF","STATSOBL.5Y.EFF", "STATSOBL.10Y.EFF")

renter <- renter[,rente_typer]

Nå bruker vi melt() funksjonen fra reshape2 pakken til å omforme dataen så at vi får en “lang” datasett der de ulike rentetype-variablene er blitt gjort om til en lang variabel.

renter_long <- melt(renter, id.vars ="DATES")
head(renter_long)
##        DATES  variable value
## 1 1986-01-01 FOLIO.NOM    NA
## 2 1986-02-01 FOLIO.NOM    NA
## 3 1986-03-01 FOLIO.NOM    NA
## 4 1986-04-01 FOLIO.NOM    NA
## 5 1986-05-01 FOLIO.NOM    NA
## 6 1986-06-01 FOLIO.NOM    NA
colnames(renter_long)<- c("dato", "rente_type", "rente")

Da kan vi plotte:

ggplot(renter_long, aes(x=dato, y=rente, color=rente_type)) +
geom_line()
## Warning: Removed 672 rows containing missing values (geom_path).

Hva kan man si ut i fra rentedataen?

Lønn

Vi kan få data om gjennomsnitlig lønn fra SSB - noen ganger har r problemer å lese inn norske bokstaver. Her har jeg fortalt R til å ikke se etter navn på koloner (header=FALSE), og isteden fortalt R til å skippe den første raden (skip=1)

loenn_data <- read.csv("http://data.ssb.no/api/v0/dataset/215588.csv?lang=no",
                       sep=";", header=FALSE, dec=",", na.strings = c(".", ".."),
                       skip=1)
head(loenn_data)
##               V1     V2
## 1 10-33 Industri 2005K1
## 2 10-33 Industri 2005K1
## 3 10-33 Industri 2005K1
## 4 10-33 Industri 2005K1
## 5 10-33 Industri 2005K2
## 6 10-33 Industri 2005K2
##                                                                                        V3
## 1                                             Indeks for gjennomsnittlig m\xe5nedsl\xf8nn
## 2 Endring i prosent fra samme periode \xe5ret f\xf8r for gjennomsnittlig m\xe5nedsl\xf8nn
## 3                                      Indeks for gjennomsnittlig avtalt m\xe5nedsl\xf8nn
## 4                   Endring i prosent fra samme periode \xe5ret f\xf8r for avtalt l\xf8nn
## 5                                             Indeks for gjennomsnittlig m\xe5nedsl\xf8nn
## 6 Endring i prosent fra samme periode \xe5ret f\xf8r for gjennomsnittlig m\xe5nedsl\xf8nn
##      V4
## 1  99.2
## 2   4.3
## 3  98.5
## 4   3.1
## 5 100.1
## 6   4.2
colnames(loenn_data)<-c("industri", "kvartal", "type","index")

Ved bruk av as.yearqtr() fra Zoo-pakken, konverterer vi kvartalsdata til vanlig dato-formatt

kvartal <- as.yearqtr(loenn_data$kvartal, format="%YK%q")
loenn_data$kvartal <- as.Date(kvartal)

Vi har flere valg når det gjelder verdi: vi velger index. (Hva er en indeks?)

levels(loenn_data$type)
## [1] "Endring i prosent fra samme periode \xe5ret f\xf8r for avtalt l\xf8nn"                  
## [2] "Endring i prosent fra samme periode \xe5ret f\xf8r for gjennomsnittlig m\xe5nedsl\xf8nn"
## [3] "Indeks for gjennomsnittlig avtalt m\xe5nedsl\xf8nn"                                     
## [4] "Indeks for gjennomsnittlig m\xe5nedsl\xf8nn"
levels(loenn_data$type)=c("endring fra i fjor, avtalt", "endring fra i fjor", "indeks, avtalt", "indeks")
loennsindeks <- filter(loenn_data, type=="indeks")

Nå kan vi plotte dataene. Er det noe interessant her? Hvilken industrier har sett mest lønnsøkning? Er det overraskende?

levels(loennsindeks$industri)
##  [1] "10-12 N\xe6rings-, drikkevare- og tobakkindustri" 
##  [2] "10-33 Industri"                                   
##  [3] "13-15 Tekstil-, bekledning- og l\xe6rvareindustri"
##  [4] "16 Trelast- og trevareindustri"                   
##  [5] "17 Papir- og papirvareindustri"                   
##  [6] "18 Trykking, grafisk industri"                    
##  [7] "19-21u20.1 Kjemisk industri"                      
##  [8] "20.1 Produksjon av kjemiske r\xe5varer mv."       
##  [9] "22-23 Gummi-, plast- og mineralsk industri"       
## [10] "24 Metallindustri"                                
## [11] "25 Metallvareindustri"                            
## [12] "26-27 Data- og elektrisk utstyrsindustri"         
## [13] "28 Maskinindustri"                                
## [14] "29-30u30.1 Annen verkstedindustri (unntatt 30.1)" 
## [15] "30.1 Bygging av skip og b\xe5ter"                 
## [16] "31-32 M\xf8belindustri og annen industri"         
## [17] "33 Maskinreparasjon og -installasjon"
industri_kateg = c("naering", "industri", "tekstil", "trelast", "papir", "trykking", "kjemisk", "kjemisk raavarer", "gummi og plast", "metall", "metallvare", "elektronikk", "maskin", "annen verksted", "bygging av skip", "moebelindustri", "maskinreparasjon")
levels(loennsindeks$industri) = industri_kateg
ggplot(loennsindeks, aes(x=kvartal, y=index, color=industri)) +
  geom_line()

loennsendring

Nå kan vi se på lønsendringer.

loennsendring <- filter(loenn_data, type=="endring fra i fjor")
levels(loennsendring$industri) = industri_kateg
ggplot(loennsendring, aes(x=kvartal, y=index, color=industri)) +
  geom_line()

Kanskje litt for mye informasjon på en figur. La oss begrense kategoriene.

levels(loennsendring$industri)
##  [1] "naering"          "industri"         "tekstil"         
##  [4] "trelast"          "papir"            "trykking"        
##  [7] "kjemisk"          "kjemisk raavarer" "gummi og plast"  
## [10] "metall"           "metallvare"       "elektronikk"     
## [13] "maskin"           "annen verksted"   "bygging av skip" 
## [16] "moebelindustri"   "maskinreparasjon"
industrier <- c("naering", "industri")
loennsendring_liten <- filter(loennsendring, industri %in% industrier)
ggplot(loennsendring_liten, aes(x=kvartal, y=index, color=industri)) +
  geom_line()

Ser vi noen trend her?

Oppgaver

Gjeld

En viktig element av en boble er gjeld. Ofte når spekulasjon driver et marked, så bruker folk lånte penger til å gire avkastningen. Dette er ofte grunnen for krisene som kan følge en boble. Hvordan ser dette ut i Norge?

  • Start med å laste inn noe relevant data fra ssb: https://data.ssb.no/api/v0/dataset/62264.csv?lang=no

  • endre navnene på variablene til: “valuta”, “sektor”, “kilde”, “dato”, “kategori”, “gjeld”
  • endre nivåene/levels på variablen kilde til “statlige låneinstitutter”, “banker”, “kredittforetak”, “finansieringsselskaper”, “livsforsikringsselskaper”,
    “skadeforsikringsselskaper”, “pensjonskasser”, “obligasjonsgjeld”, “sertifikatgjeld”, “andre kilder”, “kredittkilder i alt”
  • omformatter dato-variablen til Date formatt.
  • Filtrer ut total gjeld for husholdninger (variabelen sektor) og plotte det over i tid med ulike linjer for kategoriene (variabelen kilde).
  • Hva er de viktigste kildene? Filtrer ut disse og vis i en ny plott. Tolk resultatene.