Fyrra R verkefni

library(tidyverse)
library(knitr)
library(rmdformats)
library(forcats)
library(dplyr)
library(ggplot2)

Hluti 1

a)

Lesum gögnin inn:

ds <- read.csv("pisa.csv")

b)

Hér er valið niðurstöður til og með árinu 2003.

ds <- filter(ds, year >= 2003)

c)

Hér er búið til breytur fyrir meðaleinkun í stærðfræði, lestri og vísindum.

math <- mean(ds$math, na.rm = TRUE)
reading <- mean(ds$read, na.rm = TRUE)
science <- mean(ds$science, na.rm = TRUE)

d)

Hér er búið til töflu sem að sýnir fjölda svara frá hverju landi.

count_country <- ds %>% count(country)

e)

Tafla af niðurstöðum aðeins frá Íslandi, Noregi og Finnlandi.

ds2 <- ds %>% filter(country == "ISL" | country == "FIN" | country == "NOR")

f)

Kannað hvort að breytur séu rétt skráðar og laga þær sem eru það ekki.

str(ds2)
## 'data.frame':    107221 obs. of  22 variables:
##  $ year       : int  2003 2003 2003 2003 2003 2003 2003 2003 2003 2003 ...
##  $ country    : chr  "FIN" "FIN" "FIN" "FIN" ...
##  $ school_id  : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ student_id : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ mother_educ: chr  "ISCED 1" "ISCED 3A" "ISCED 3A" "ISCED 3A" ...
##  $ father_educ: chr  "ISCED 2" "ISCED 3A" "ISCED 3A" NA ...
##  $ gender     : chr  "female" "male" "female" "male" ...
##  $ computer   : chr  "yes" "yes" "yes" "yes" ...
##  $ internet   : chr  "yes" "yes" "yes" "yes" ...
##  $ math       : num  565 529 576 620 607 ...
##  $ read       : num  589 495 609 514 497 ...
##  $ science    : num  561 493 535 599 539 ...
##  $ stu_wgt    : num  12.6 12.6 12.6 12.6 12.6 ...
##  $ desk       : chr  "yes" "yes" "yes" "yes" ...
##  $ room       : chr  "yes" "yes" "yes" "yes" ...
##  $ dishwasher : chr  "no" "yes" "yes" "yes" ...
##  $ television : chr  NA NA NA NA ...
##  $ computer_n : chr  NA NA NA NA ...
##  $ car        : chr  NA NA NA NA ...
##  $ book       : chr  "26-100" "26-100" "201-500" "101-200" ...
##  $ wealth     : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ escs       : num  -0.274 -0.399 0.417 1.318 -0.484 ...
comp_ <- ds2$computer
breytt_comp <- factor(comp_)
ds2$computer <- breytt_comp

str(ds2$computer)
##  Factor w/ 2 levels "no","yes": 2 2 2 2 2 2 2 2 2 2 ...

g)

Nöfn landanna breytt til að fá Íslensk nöfn.

ds2$country <- ifelse(ds2$country == "FIN",
                              "Finnland", ifelse(ds2$country == "NOR", "Noregur", "Ísland"))

Hluti 2

h)

Myndin hér sýnir einkunn íslenskra nema í stærðfræði og hversu oft sömu einkunnir koma fram. Eins og sést á myndinni virðist einkunnin með hæstu tíðnina vera í kring um 500.

isl_nemendur <- ds2 %>% filter(ds2$country == "Ísland")

ggplot(isl_nemendur, aes(x = math)) + 
  geom_histogram(binwidth = 5, fill = "blue", color = "black") + labs(x = "Einkun", y = "Tíðni" , title = "Einkunnir Íslendinga í pisa könnun")

i)

Hér er mynd af kassariti sem sýnir einkunnir úr stærðfræði frá nemendum frá Íslandi, Noregi og Finnlandi. Kassaritið sýnir að miðgildi einkunna landanna er í kring um 5. Finnland er með hæsta miðgildi af löndunum en Ísland er með hæstu útlagagildi og Noregur með lægsta útlaga gildi.

ggplot(ds2, aes(x=country, y=math, fill=country )) +
  geom_boxplot() + xlab("Lönd") + ylab("Stærðfræði einkunnir")

j)

Myndin hérna er af kassaritum af stærðfræði einkunum frá Íslandi, Noregi og Finnlandi frá árinu 2003 til 2022 með þriggja ára millibili í flestum atvikum. Finnland er með hæstu miðgildi í gegnum flest árin en útlagagildi landanna virðist dreifast vel í gegn um árin.

ggplot(ds2, aes(x=country, y=math, fill=country )) +
  geom_boxplot() + 
  facet_wrap(~year) +
  labs(x = "Lönd" , y = "Stærðfræði einkunn")

k)

Hér sjá má á myndinni að frammistaða hvers nemenda var svipuð í báðum prófum, nemendur sem náðu hátt í stæðrfræði náðu einnig hátt í vísindum og öfugt þeir sem fengu verri einkun.

ggplot(isl_nemendur, aes(x=math , y=science)) + 
  geom_point() +
  labs(x = "Stærðfræði einkunn", y = "Vísinda einkunn")

l)

Myndin hér fyrir ofan sýnir stöplarit sem sýnir fjölda einstaklinga eftir menntunarstigi móður þeirra frá Finnlandi, Íslandi og Noregi. Algengasta menntunarstig landanna er ISCED 3A og Ísland er með hæstu tíðnina af ISCED 2. “Ekki viðeigandi” tíðnin er til staðar í öllum löndunum en er mjög smá og “minna en ISCED 1” er með ennþá smærri tíðni.

ggplot(ds2, aes(x = country, fill = mother_educ)) +
  geom_bar() +
  labs(x = "Lönd", y = "Talning")

m)

Þetta dreifirit sýnir samband á lestrarhæfni og fjárhagsstöðu. Sambandið er mjög dreift sem að bendir til þess að fjárhagsstaða hafi ekki sterkar forspárgildi fyrir lestrargetu.

ggplot(na.omit(ds2), aes(x = wealth, y = read)) + 
  geom_point() + 
  labs(x = "Fjárhagsstaða", y = "Lestrar einkunn")

n)

Þetta kassarit sýnir fjárhagsstöðu í Finnlandi, Íslandi og Noregi. Dreifing landanna er mjög svipuð en efra fjórðungamarkið er aðeins hærra í Noregi og Íslandi heldur en Finnlandi. Öll löndin hafa fleiri neikvæð útlagagildi heldur en jákvæð.

ggplot(ds2, aes(y = wealth, x = country)) +
  geom_boxplot() + 
  labs(x = "Lönd", y = "Fjárhagstaða")

Hluti 3

o)

Tafla sem sýnir fjölda nemenda eftir löndum og árum.

o_tafla <- ds2 %>%
  count(country, year) %>%
  pivot_wider(names_from = year, values_from = n, values_fill = list(n = 0))

kable(o_tafla)
country 2003 2006 2009 2012 2015 2018 2022
Finnland 5796 4714 5810 8829 5882 5649 10239
Noregur 4064 4692 4660 4686 5456 5813 6611
Ísland 3350 3789 3646 3508 3371 3296 3360

p)

tafla sem sýnir hlutfall svarenda á hverju ári

p_tafla <- ds2 %>%
  count(country,year) %>% 
  group_by(country) %>%
  mutate(n = n/sum(n)) %>%
  pivot_wider(names_from = year, values_from = n, values_fill = list(n = 0))

kable(p_tafla)
country 2003 2006 2009 2012 2015 2018 2022
Finnland 0.1235320 0.1004710 0.1238304 0.1881754 0.1253650 0.1203990 0.2182272
Noregur 0.1129454 0.1303985 0.1295092 0.1302318 0.1516314 0.1615530 0.1837308
Ísland 0.1377467 0.1557977 0.1499178 0.1442434 0.1386102 0.1355263 0.1381579

q)

Hér er tafla sem sýnir meðaleinkunn, miðgildi og staðalfrávik stærðfræði einkunnar frá Finnlandi, Íslandi og Noregi.

tafla_eink_stae <- ds2 %>% 
  group_by(country, year) %>%
  summarize(
    miðgildi = median(math, na.rm = TRUE), 
    meðaltal = mean(math, na.rm = TRUE),
    staðalfrávik = sd(math, na.rm = TRUE),
    fjöldi = n(),
    .groups = "keep")

kable(tafla_eink_stae)
country year miðgildi meðaltal staðalfrávik fjöldi
Finnland 2003 542.5222 542.5087 83.27326 5796
Finnland 2006 552.2979 549.9341 80.72875 4714
Finnland 2009 540.0500 537.4810 81.80923 5810
Finnland 2012 510.0561 507.5258 89.85665 8829
Finnland 2015 513.5495 511.2831 81.98105 5882
Finnland 2018 511.0810 508.1755 82.76307 5649
Finnland 2022 476.8320 475.2762 92.82102 10239
Noregur 2003 496.7596 495.9239 92.69693 4064
Noregur 2006 490.1776 489.9247 91.96076 4692
Noregur 2009 499.1500 497.1252 85.37566 4660
Noregur 2012 490.1153 489.7528 89.83790 4686
Noregur 2015 500.4560 499.1009 85.14589 5456
Noregur 2018 504.6410 501.2881 91.38292 5813
Noregur 2022 469.0000 468.4518 93.59167 6611
Ísland 2003 517.5962 514.6719 90.35027 3350
Ísland 2006 507.3921 505.1515 88.08159 3789
Ísland 2009 509.2000 507.3872 90.15651 3646
Ísland 2012 494.0489 493.1471 92.38240 3508
Ísland 2015 488.9710 487.8370 92.79670 3371
Ísland 2018 499.7210 494.6079 90.97507 3296
Ísland 2022 457.4890 458.0575 87.47830 3360

r)

Á myndinni er línurit sem að sýnir hvernig meðaleinkunn í Finnlandi, Íslandi og Noregi hafa þróast í gegnum árin. Meðaleinkunn Finnlands er hæst landanna en hefur lækkað gríðarlega eftir 2009. Ísland var með hærri meðaleinkunn en Noregur upp að 2013 en Noregur tók fram úr þar sem meðaleinkuninn hækkandi og fór í hæsta gildið sitt í kringum 2018. Meðaleinkunn allra landanna hafa verið í stöðugri lækkun eftir 2018.

ggplot(tafla_eink_stae, aes(x = year, y = meðaltal, color = country)) + 
  geom_line()

Gervigreind

s)

Við notuðum gervigreindina til þess að útskýra fyrir okkur hugtök sem við skildum ekki og finna ástæðu fyrir villum í kóðanum, til dæmis ef það vantaði kommu einhversstaðar. Við sögðum við gervigreindina að ekki gefa okkur nein svör þar sem við myndum ekki læra neitt af því.