Lab 2: Har vi en boligboble?

I denne labben skal vi øve på å hente inn data, behandle det med pakken dplyr og plotte det med pakken ggplot2.

For å bruke disse pakkene, må vi laste de ned fra nettet og installere dem og deretter laste de inn i minnen.

For å laste ned og installere:

install.packages("ggplot2")
install.packages("dplyr")

Og for å laste inn:

library(ggplot2)
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

Vi skal prøve å analysere spørsmålet om boligprisene i norge er en “boble”? Vi skal snakke mer om bobler i løpet av semesteret, men nå skal vi begynne med å finne relevante data og se på noen trender.

Først må vi finne data som viser utviklingen av boligpriser.

Vi bruker data fra SSB, som har en side der man kan laste inn datasett direkt: http://data.ssb.no/api. Dette er en nyttig kilde til norsk økonomisk data.

Jeg har behandlet datasettet litt i forkant, og vi skal laste ned datasettet som en csv-fil fra min webside, som er en tekst fil der kolonene er seperert med komma/semikolon.

huspriser <- read.csv("https://jmaurit.github.io/anvendt_macro/data/huspriser.csv", sep=",", header=TRUE)

Vi kan se på en oppsummering av datasettet:

str(huspriser)
## 'data.frame':    530 obs. of  6 variables:
##  $ region            : Factor w/ 5 levels "Bergen","Hele landet",..: 2 2 2 2 2 2 2 2 2 2 ...
##  $ boligtype         : Factor w/ 1 level "00 Boliger i alt": 1 1 1 1 1 1 1 1 1 1 ...
##  $ kvartal           : Factor w/ 106 levels "1992K1","1992K2",..: 1 2 3 4 5 6 7 8 9 10 ...
##  $ statistikkvariabel: Factor w/ 1 level "Boligprisindeks": 1 1 1 1 1 1 1 1 1 1 ...
##  $ huspris_index     : num  18.8 18.9 19 18.5 17.8 18.7 19.4 20 20.6 21.2 ...
##  $ tid               : Factor w/ 106 levels "1992-01-01","1992-04-01",..: 1 2 3 4 5 6 7 8 9 10 ...

og se på de første datapunktene

tail(huspriser)
##        region        boligtype kvartal statistikkvariabel huspris_index
## 525 Trondheim 00 Boliger i alt  2017K1    Boligprisindeks         111.7
## 526 Trondheim 00 Boliger i alt  2017K2    Boligprisindeks         113.0
## 527 Trondheim 00 Boliger i alt  2017K3    Boligprisindeks         110.5
## 528 Trondheim 00 Boliger i alt  2017K4    Boligprisindeks         106.8
## 529 Trondheim 00 Boliger i alt  2018K1    Boligprisindeks         110.0
## 530 Trondheim 00 Boliger i alt  2018K2    Boligprisindeks         113.4
##            tid
## 525 2017-01-01
## 526 2017-04-01
## 527 2017-07-01
## 528 2017-10-01
## 529 2018-01-01
## 530 2018-04-01

Vi vil først formattere tid variablen til å være dato:

huspriser["tid"] <- as.Date(huspriser$tid)

Nå er vi klar til å begynne å plotte datasettet. R kommer med innebygde plotting-funksjoner som vi brukte i lab 1, men vi skal bruke en annen pakke som heter ggplot2, som gjør det lett å lage både enkle og kompliserte plotter som også ser bra ut. Du kan lese mer om ggplot2 og få hjelp her

ggplot bygger opp plotter på en litt annerledes måte. Først definerer man en datasett og variablene man vil bruke og i hvilken form med funksjonen ggplot. Deretter legger man til lag som kalles geoms.

Vi kan se på en eksempel:

huspriser_plot <- ggplot(huspriser, aes(x=tid, y=huspris_index, color=region)) +
  geom_line()

Her er resultatet:

huspriser_plot
## Warning: Removed 156 rows containing missing values (geom_path).

Fint, hva?

for å lagre kan vi enten klikke på eksport knappen i rstudio, eller ved litt ekstra koding:

png("huspriser_plot.png",  width = 35, height = 21, units = "cm", res=300, pointsize=12)
huspriser_plot
dev.off()

Kanskje vi vil kun se på Oslo og hele norge. Her kan vi bruke en kommando fra dplyr som heter filter til å dra ut de kategoriene vi vil ha:

regioner = c("Oslo og Baerum", "Hele landet")
Oslo_priser <- filter(huspriser, region %in% regioner)
huspriser_plot <- ggplot(Oslo_priser, aes(x=tid, y=huspris_index, color=region)) +
  geom_line()
huspriser_plot

Oppgaver

  • Vi vil sammenligne prisutviklingen i Oslo og Stavanger. Filtrer ut disse seriene og plotte dem med ggplot. Kan du forklare prisutviklingene i de to byene de siste årene?

  • Filtrer ut kun Oslo og Bærum. Vi er interessert i å se endringer fra kvartal til kvartal. Transformere serien og vis den nye serien i en plott. (Hint: først omformattere serien som en timeseries ved å bruke kommandoen ts søk i google etter “first difference r”)