R kommer med mange innebygde funksjoner og kommandoer. I lab 1 lærte vi hvordan å bruke plot() funksjonen, for eksempel. Men det som gjør R virkelig viktig er muligheten til å laste ned og bruke ekstra-funksjoner. En gruppe med ekstra-funksjoner heter package.
Du kan tenke på en package, eller pakke, som en app fra en app store. Hvis du vil ta i bruk en app, så må du først laste ned appen, og deretter må du åpne appen hver gang du skal bruke den.
En package med mange nyttige funksjoner som vi kommer til å bruke heter tidyverse.
For å laste ned tidyverse fra R app store, som heter CRAN, må vi skrive følgende kommando inn i console:
install.packages("tidyverse")
Vi skal også bruke en pakke som heter readr
install.packages("readr")
Dette trenger vi bare å gjøre en gang, så lenge man ikke må oppdatere pakken eller installere den på en ny datamaskin eller nytt operativsystem.
For å åpne denne pakken skriver vi inn følgende kommando:
library(tidyverse)
## ── Attaching packages ──────────────────────────────────── tidyverse 1.3.0 ──
## ✔ ggplot2 3.2.1 ✔ purrr 0.3.3
## ✔ tibble 2.1.3 ✔ dplyr 0.8.3
## ✔ tidyr 1.0.0 ✔ stringr 1.4.0
## ✔ readr 1.3.1 ✔ forcats 0.4.0
## ── Conflicts ─────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
Nå kan vi ta i bruk de mange funksjonene som kommer med tidyr. Du kan lese mer om tidyr her.
Før man kan utføre en analyse må man selvfølgelig få inn data. Dette kan være overraskende komplisert. Det finnes mange ulike formatter av data: excel, csv, Stata, osv. Dataseriene kan også være i mange ulike formatter: dato, tall, eller tekst.
R har noen innebgyde funksjoner for å få inn data på. Du kan også bruke RStudio menyene under Environment boksen på venstresiden. Vi skal bruke kommandoene i pakken readr som kommer som en del av tidyr pakken. Du kan lese mer her.
I prinsipp burde vi allerede få disse funksjonene ved å ha skrevet library(tidyverse), men det kan henne du må skrive inn library(readr) også.
library(readr)
Nasjonalregnskapsdata er tilgjengelig fra SSB. Vi skal laste inn noen serier som jeg har allerede behandlet, og vi skal laste de inn direkt fra min webside:
Dataseriene er i .csv formatt, som er en generelle format der kolonene i datasettet er separert med kolon eller semikolon (“Comma Separated Version”). Du kan for eksempel lagre Excel filer som .csv.
Vi laster inn data på total bnp i Norge og kaller det for “bnp”. Vi bruker kommandoen read_csv fra readr og tidyr.
bnp = read_csv("http://jmaurit.github.io/norwayeconomy/data_series/bnp.csv")
## Parsed with column specification:
## cols(
## kvartal = col_date(format = ""),
## bnp = col_double()
## )
Vi kan se på vår data ved å bare skrive navnet, bnp is consolen:
bnp
## # A tibble: 75 x 2
## kvartal bnp
## <date> <dbl>
## 1 2000-03-01 607318
## 2 2000-06-01 598547
## 3 2000-09-01 604356
## 4 2000-12-01 604594
## 5 2001-03-01 611667
## 6 2001-06-01 610581
## 7 2001-09-01 618097
## 8 2001-12-01 623469
## 9 2002-03-01 618016
## 10 2002-06-01 630856
## # … with 65 more rows
Det vi har nå gjort er å skapt en tibble. Vi kan tenke på en tibble som en Excel-ark, der variablene er koloner og hver rad er en observasjon. tibble kommer fra tidyr og er enkel å jobbe med. R har også sin egen innebygd utgave som heter Data Frame, som fungerer veldig likt.
Under kolonenavnene, ser vi at det står date og int, det betyr at readr har kjent igjen formattet til de to kolonnene som dato og heltall (integer).
Hvis vi vil ha tilgang til en av kolonene, så bruker vi $
bnp$bnp
## [1] 607318 598547 604356 604594 611667 610581 618097 623469 618016 630856
## [11] 621494 628512 628727 625733 634524 634728 657036 658388 650786 657180
## [21] 668071 671574 677146 678669 683039 683892 690911 703556 704076 704065
## [31] 713099 720859 712091 712446 711144 713372 707593 701369 701821 702195
## [41] 716010 708399 690819 710213 710486 707548 718949 719320 734701 736433
## [51] 725758 731689 733289 738586 745830 744509 748235 753765 756934 766187
## [61] 764247 768298 777301 770475 777810 775498 769534 784852 788296 794507
## [71] 798720 800333 802927 806538 811190
Vi kan plotte vår BNP tall ved å bruke den innebygde plot kommandoen. Vi setter inn x-verdier (datoer), y-verdier (bnp) og type plot (l for linje).
plot(x= bnp$kvartal, y=bnp$bnp, type="l")
La oss importere mer data, denne gangen av norsk eksport.
export = read_csv("http://jmaurit.github.io/norwayeconomy/data_series/export.csv")
## Warning: Missing column names filled in: 'X1' [1]
## Parsed with column specification:
## cols(
## X1 = col_double(),
## date = col_date(format = ""),
## petroleum_export = col_double(),
## non_petroleum_export = col_double(),
## perc_petroleum_export = col_double(),
## smooth_petroleum_export = col_double(),
## perc_non_petroleum_export = col_double(),
## smooth_non_petroleum_export = col_double()
## )
export
## # A tibble: 468 x 8
## X1 date petroleum_export non_petroleum_e… perc_petroleum_…
## <dbl> <date> <dbl> <dbl> <dbl>
## 1 0 1980-01-01 3586 3872 NA
## 2 1 1980-02-01 3482 4005 NA
## 3 2 1980-03-01 3563 4272 NA
## 4 3 1980-04-01 3513 3602 NA
## 5 4 1980-05-01 3483 3802 NA
## 6 5 1980-06-01 3356 4281 NA
## 7 6 1980-07-01 2071 3554 NA
## 8 7 1980-08-01 3475 3050 NA
## 9 8 1980-09-01 3174 3863 NA
## 10 9 1980-10-01 3870 4161 NA
## # … with 458 more rows, and 3 more variables:
## # smooth_petroleum_export <dbl>, perc_non_petroleum_export <dbl>,
## # smooth_non_petroleum_export <dbl>
Det vi vil gjøre her er å plotte både eksport av petroleumsprodukter fra norge og eksport av ikke-petroleumsprodukter.
plot(x=export$date, y=export$petroleum_export, type="l", col="red")
lines(x=export$date, y=export$non_petroleum_export)
Her har vi først plottet petroleum eksport som den røde linjen over tid. Deretter bruker vi kommandoen lines til å legge til en ekstra plot av ikke-petroleumseksport. Fra denne plotten kan vi se et par ting:
Petroleumseksport er like stor og ofte større en alt annet eksport.
Petroleumseksport varierer mye. Dette er hovedsakelig på grunn av svingninger i oljeprisen.
Petroleumseksport falt kraftig etter 2012 når oljeprisen sank. Hva var grunnene for at oljeprisen gikk ned etter 2012?
KPI (Konsumprisindeks) forteller om verdien av en krone og endring av priser over tid. Det er igjen SSB som beregner og gir ut KPI-indeksen. Vi kan lese en oversikt her.
Vi kan laste ned historisk data om kpi direkt fra SSB ved å sette inn linken til data-tabellen.
Fra siden https://www.ssb.no/kpi fant jeg tabellen (Tabell 1) jeg ville laste ned, og da kopierte jeg linken der det sto
Jeg bruker kommandoen read_csv2 isteden for read_csv fordi norsk (og mye Europeisk) data bruker , som desimal og dermed brukes ; til å skille kolonene.
kpi = read_csv2("https://www.ssb.no/eksport/tabell.csv?key=371408")
## Using ',' as decimal and '.' as grouping mark. Use read_delim() for more control.
## Warning: Missing column names filled in: 'X1' [1], 'X15' [15]
## Parsed with column specification:
## cols(
## X1 = col_double(),
## `Y-avg` = col_character(),
## Jan = col_number(),
## Feb = col_number(),
## Mar = col_number(),
## Apr = col_number(),
## May = col_number(),
## Jun = col_number(),
## Jul = col_number(),
## Aug = col_number(),
## Sep = col_number(),
## Oct = col_number(),
## Nov = col_number(),
## Dec = col_character(),
## X15 = col_logical()
## )
Vi kan se på vår indeks.
kpi
## # A tibble: 94 x 15
## X1 `Y-avg` Jan Feb Mar Apr May Jun Jul Aug Sep
## <dbl> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 2018 . 1060 1070 1073 1077 1078 1085 1093 1089 1095
## 2 2017 105.5 1043 1047 1050 1052 1054 1058 1061 1053 1059
## 3 2016 103.6 1015 1021 1025 1029 1032 1038 1045 1039 1042
## 4 2015 100.0 986 989 992 996 998 1001 1001 999 1006
## 5 2014 97.9 966 971 973 977 978 975 983 979 985
## 6 2013 95.9 945 951 954 959 960 957 961 960 964
## 7 2012 93.9 932 942 941 942 942 937 933 929 939
## 8 2011 93.3 927 931 934 939 937 934 931 926 934
## 9 2010 92.1 909 920 925 927 922 921 916 914 920
## 10 2009 89.9 887 894 894 897 899 904 899 897 904
## # … with 84 more rows, and 4 more variables: Oct <dbl>, Nov <dbl>,
## # Dec <chr>, X15 <lgl>
Vi endrer navnent på de første kolonen:
colnames(kpi)[1] = "Aar"
colnames(kpi)[2] = "Aar_gjennomsnitt"
Vi kan også legge merke til at read_csv2 kommandoen tolket den andre kolonen som en kolone med tekst (
kpi["Aar_gjennomsnitt"] = as.numeric(kpi$Aar_gjennomsnitt)
## Warning: NAs introduced by coercion
kpi
## # A tibble: 94 x 15
## Aar Aar_gjennomsnitt Jan Feb Mar Apr May Jun Jul Aug
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 2018 NA 1060 1070 1073 1077 1078 1085 1093 1089
## 2 2017 106. 1043 1047 1050 1052 1054 1058 1061 1053
## 3 2016 104. 1015 1021 1025 1029 1032 1038 1045 1039
## 4 2015 100 986 989 992 996 998 1001 1001 999
## 5 2014 97.9 966 971 973 977 978 975 983 979
## 6 2013 95.9 945 951 954 959 960 957 961 960
## 7 2012 93.9 932 942 941 942 942 937 933 929
## 8 2011 93.3 927 931 934 939 937 934 931 926
## 9 2010 92.1 909 920 925 927 922 921 916 914
## 10 2009 89.9 887 894 894 897 899 904 899 897
## # … with 84 more rows, and 5 more variables: Sep <dbl>, Oct <dbl>,
## # Nov <dbl>, Dec <chr>, X15 <lgl>
Vi kan merke at referanse-året er 2015, der indeksen er lik 100.
Vi kan beregne inflasjon i 2016 som 3.6%:
\(\frac{103,6-100}{100}*100=3,6%\).
Vi kan også plotte vår KPI serie:
plot(x=kpi$Aar, y=kpi$Aar_gjennomsnitt, type="line")
## Warning in plot.xy(xy, type, ...): plot type 'line' will be truncated to
## first character
Fra plotten kan vi se at Norge opplevde forholdsvis lav prisvekst fra til omtrent 1970-tallet. Gjennom 70- og 80-tallet var det høy prisvekst. Siden den tiden har veksten i prisen stabilisert seg.