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 og deretter laste de inn i minnen. Den første trenger vi bare å gjøre en gang.

For å laste ned og installere:

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

Og å 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øpe 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.

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

Vi kan se på en oppsummering av datasettet:

str(house_prices)
## 'data.frame':    510 obs. of  5 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 ...
##  $ tid               : Factor w/ 102 levels "1992-01-01","1992-04-01",..: 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 ...

og se på de første datapunktene

head(house_prices)
##        region        boligtype        tid statistikkvariabel huspris_index
## 1 Hele landet 00 Boliger i alt 1992-01-01    Boligprisindeks          18.8
## 2 Hele landet 00 Boliger i alt 1992-04-01    Boligprisindeks          18.9
## 3 Hele landet 00 Boliger i alt 1992-07-01    Boligprisindeks          19.0
## 4 Hele landet 00 Boliger i alt 1992-10-01    Boligprisindeks          18.5
## 5 Hele landet 00 Boliger i alt 1993-01-01    Boligprisindeks          17.8
## 6 Hele landet 00 Boliger i alt 1993-04-01    Boligprisindeks          18.7

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

house_prices["tid"] <- as.Date(house_prices$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(house_prices, 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("figures/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(house_prices, 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? Nå, 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”)

regioner = c("Oslo og Baerum", "Stavanger")
Oslo_stav_priser <- filter(house_prices, region %in% regioner)

O_S_plot <- ggplot(Oslo_stav_priser, aes(x=tid, y=huspris_index, color=region)) +
  geom_line()
O_S_plot
## Warning: Removed 52 rows containing missing values (geom_path).

Oslo_priser <- filter(house_prices, region == "Oslo og Baerum")
Oslo_priser["huspris_index"] <- ts(Oslo_priser$huspris_index)
#vi bruker funksjonen diff til å lage en ny serie som er % endringer
Oslo_priser$diff_huspris = c(NA, diff(Oslo_priser$huspris_index))
ggplot(Oslo_priser, aes(x=tid, y=diff_huspris)) +
  geom_line() +
  geom_smooth()
## `geom_smooth()` using method = 'loess'
## Warning: Removed 1 rows containing non-finite values (stat_smooth).
## Warning: Removed 1 rows containing missing values (geom_path).