Mål og forberedelser
I disse oppgavene skal du øve på:
- Hvordan lage en multivariat regresjonsmodell i R.
- Hvordan presentere resultatene i en tabell.
- Hvordan hente ut prediksjoner fra en regresjonsmodell og plotte dem.
Oppgavesett 1
Er det en sammenheng mellom bnp per capita og andel av befolkning som har fått koronavaksine? Let us find out!
Datasett
Her skal vi jobbe med et datasett som tar for seg andelen av befolkningen i ulike land som har fått covid-19-vaksine. Datasettet heter vaksine
og består av 171 observasjoner (land) og fire variable (country, andel_vaksinerte, bnp_per_cap, eu_member).
Nærmere beskrivelse av variablene:
country
: landandel_vaksinerte
: prosentandel av befolkningen som er vaksinert mot covid-19bnp_per_cap
: BNP per innbygger målt i 1000$ i 2019eu_member
: yes = landet er EU-medlem, no = landet er ikke EU-medlem
Vi begynner med å laste inn data:
vaksine <- read.csv("https://raw.githubusercontent.com/louisabo/Data-For-Teaching/main/covid_vaksine.csv")
Bruk head() til å få en oversikt over datasettet. Datasettet heter vaksine
.
head(vaksine)
summary()
til å få en oversikt over klassen til alle variablene
summary(vaksine)
ggplot(vaksine, aes(bnp_per_cap, andel_vaksinerte)) +
geom_point()
# Husk at koden for prikkeplott er geom_point()
geom_smooth()
i tillegg til geom_point()
på en egen linje.
ggplot(vaksine, aes(bnp_per_cap, andel_vaksinerte)) +
geom_point() +
geom_smooth(method = lm)
# For at linjen skal bli rett må du inni i argumentet geom_smooth() skrive method = lm
ggplot(vaksine, aes(bnp_per_cap, andel_vaksinerte)) +
geom_point() +
geom_smooth(method = lm, aes(col =as.factor(eu_member)))
# Her må du inni geom_smooth() legge til et tilleggsargument aes() og inni aes() legge til col=as.factor(eu_member)
andel_vaksinerte
er avhengig variabel og bnp_per_cap
er uavhengig variabel. Modellen skal hete mod1
.
mod1 <- lm(andel_vaksinerte ~ bnp_per_cap,
data =vaksine)
Print modellen med stargazer()
stargazer(mod1, type = "text")
eu_member
som kontroll variabel i modellen. Modellen skal hete mod2
mod2 <- lm(andel_vaksinerte ~ bnp_per_cap + eu_member,
data =vaksine)
Print modellen med stargazer
stargazer(mod2, type = "text")
Legg til prediksjonene fra mod2
i datasettet vaksine
vha av funksjonen add_predictions()
. Kall prediksjonene prediksjoner
vaksine <- vaksine %>%
add_predictions(mod2, var="prediksjoner")
# Her skal du lage en variabel som inneholder prediksjonene fra mod2 i datasettet vaksine. Det betyr at du nå må skrive vaksine <- vaksine etterfulgt av koden fra modelr.
Plott prediksjonene på y-aksen, bnp_per_capita
på x-aksen og legg til en linje for eu_medlemmer og en linje for ikke-eu-medemmer.
ggplot(vaksine, aes(bnp_per_cap, prediksjoner, col = eu_member)) +
geom_smooth()
Lag en tabell med stargazer hvor du har med både mod1
og mod2
stargazer(mod1, mod2, type = "text")
Oppgavesett 2
I dette oppgavesettet skal vi se på om det er en sammenheng mellom om man stemte ved forrige valg og hvor gammel man er.
Datasett
Datasettet heter valg
. Det har 1406 observasjoner og det inneholder fire variabler:
- stemt: stemmegivning ved forrige valg (0 = stemte ikke, 1 = stemte).
- alder: hvor gammel respondenten er.
- tillit: tillit til politikere på en skal fra 1 (ingen tillit) til 11 (mye tillit).
- nyheter: hvor mye tid respondenten bruker på nyheter hver dag i minutter.
NB! Hvis du har glemt hvilke funksjoner/koder du skal bruke, er det lurt å se på hintene til hver oppgave.
Brukhead()
til å få en oversikt over datasettet
head(valg)
summary()
til å få en oversikt til den deskriptive statistikken til variablene.
summary(valg)
geom_point()
, hvor alder er på x-aksen og nyheter på y-aksen.
ggplot(data = valg, aes(x = alder, y = nyheter)) + geom_point()
# Formatet til koden uten datasett og variabler er:
ggplot(data = , aes(x = , y = )) + geom_point()
geom_smooth(method = lm)
i spredningsplottet fra forrige oppgave.
ggplot(data = valg, aes(x = alder, y = nyheter)) + geom_point() + geom_smooth(method = lm)
# Bruk geom_smooth(method = lm) til å lage linjen.
# Spredningsplottet fra forrige oppgave som du må legge linjen til:
ggplot(data = valg, aes(x = alder, y = nyheter)) + geom_point()
geom_boxplot()
for variabelen “alder”, som viser forskjellen på spredningen i alder til de som har stemt (1) og ikke stemt (0). Du lager to separate boksplott ved å legge til en facet_wrap()
. NB! Det er mest oversiktlig å ha “alder” på y-aksen.
ggplot(data = valg, aes(y = alder)) + geom_boxplot() + facet_wrap(vars(stemt))
# Bruk geom_boxplot() for å lage et boksplott og facet_wrap(vars()) for å lage et boksplott hver for ikke stemt/stemt.
# Formatet til koden uten datasett og variabler er:
ggplot(data = , aes(y = )) + geom_boxplot() + facet_wrap(vars())
lm()
hvor nyheter er avhengig variabel og alder er uavhengig variabel. Kall modellen model1.
model1 <- lm(data = valg, nyheter ~ alder)
# Husk å ta med datasettet i lm() og skrive avhengig variabel før uavhengig variabel.
# Formatet til koden er: modelnavn <- lm(data = datasett, avhengig variabel ~ uavhengig variabel)
stargazer()
.
stargazer(model1, type = "text")
# Husk å spesifisere hva slags "type" stargazer output du vil ha. Her vil vi se outputen direkte, og velger derfor "text".
For å svare på de 3 neste multiple choice-oppgavene, må du trykke på “Run Code” i oppgaven over for å se outputen til model1.
lm()
hvor nyheter er avhengig variabel og alder samt stemt og tillit er uavhengige variabler. Kall modellen model2.
model2 <- lm(data = valg, nyheter ~ alder + stemt + tillit)
# Husk å ta med datasettet i lm() og skrive avhengig variabel før uavhengig variabel.
# For å legge til flere uavhengige variabler bruk +.
# Formatet til koden er: modelnavn <- lm(data = datasett, avhengig variabel ~ uavhengig variabel + uavhengig variabel + uavhengig variabel)
summary()
-funksjonen for å få modellsammendraget fra modellen.
summary(model2)
For å svare på de 2 neste multiple choice-oppgavene, må du trykke på “Run Code” i oppgaven over for å se outputen til model2.
stargazer()
som viser modelsammendraget til både model1 og model2.
stargazer(model1, model2, type = "text")
# Husk å spesifisere hva slags "type" stargazer output du vil ha. Her vil vi se outputen direkte, og velger derfor "text".
# For å ta med to modeller trenger man bare å skrive modellene etter hverandre og bruke komma i mellom dem.
For å svare på multiple choice-oppgaven under, må du trykke på “Run Code” i oppgaven over for å se outputen til model1 og model2.