Skip to Tutorial Content

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: land
  • andel_vaksinerte: prosentandel av befolkningen som er vaksinert mot covid-19
  • bnp_per_cap: BNP per innbygger målt i 1000$ i 2019
  • eu_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)
Bruk summary() til å få en oversikt over klassen til alle variablene
summary(vaksine)
Lag et prikkeplott med bnp_per_capita og andel_vaksinerte
ggplot(vaksine, aes(bnp_per_cap, andel_vaksinerte)) + 
  geom_point()
# Husk at koden for prikkeplott er geom_point()
Legg til en linje på prikkeplottet. Her må du legge på 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
Legg til en linje for EU-medlemmer og en linje for ikke-EU medlemmer i plottet du lagde ovenfor
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)
Estimer en bivariat regresjonsmodell hvor 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")
Legg til 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.

Bruk head() til å få en oversikt over datasettet
head(valg)
Bruk summary() til å få en oversikt til den deskriptive statistikken til variablene.
summary(valg)
Lag et spredningsplott med 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() 
Legg til en linje med 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()
Lag to boksplott med 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())
Estimer en bivariat modell med 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)
Print modelsammendraget til model1 med 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.

Estimer en bivariat modell med 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)
Bruk 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.

Lag en tabell med 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.

Oppgavesett 6: Multivariat regresjonsanalyse

Eli Sofie Baltzersen, Louisa Boulaziz, Bjørn Høyland, Eric Nilsen, Lise Rødland

30/01/2024