Oszacowania umiejętności uczniów obliczane są:
Stąd, aby móc pobrać interesujące Cię oszacowania umiejętności uczniów musisz wiedzieć, oszacowań na jakiej skali, w jakim skalowaniu i uzyskanych jakim estymatorem poszukujesz.
Pobieramy PV dla zrównanych oszacowań umiejętności uczniów z matury na poziomie podstawowym z języka polskiego w 2012 r. Pozostawiamy tylko wyniki uczniów, którzy do egzaminu w tym roku przystępowali po raz pierwszy.
library(ZPD) src = polacz() skale = pobierz_skale(src) %>% filter(rodzaj_skali == 'zrównywanie', rodzaj_egzaminu == 'matura', posiada_pv == TRUE) %>% select(id_skali, skalowanie, rodzaj_egzaminu, czesc_egzaminu) %>% distinct() as.data.frame(skale) # id_skali skalowanie rodzaj_egzaminu czesc_egzaminu # 1 728 31002 matura matematyka podstawowa # 2 776 32002 matura j. polski podstawowa # 3 777 33002 matura j. angielski podstawowa # # Interesujące nas skalowanie to id_skali 728 i skalowanie 31002 pv = pobierz_oszacowania_uczniow(src) # odfiltrowanie pv = pv %>% filter(estymacja == 'PV', id_skali == 728, skalowanie == 31002, rok == 2012) # pobranie na komputer pv = pv %>% collect() # pobieramy informacje o pierwszych przystapieniach uczniow do egzaminu przyst = filtruj_przystapienia(src, TRUE, 'matura', NULL, TRUE) %>% collect() # filtrujemy PV za pomocą danych o pierwszych przystąpieniach pv = pv %>% semi_join(przyst)
Wymuszenie ściągnięcia danych z bazy na komputer (czy to funkcją collect(), jak w przykładzie powyżej, czy przekształceniem pobranych danych na zwykłą ramkę danych) powinno zająć od kilku do kilkunastu minut, jednak w niekorzystnym wypadku, jeśli wiele osób będzie w tym samym czasie obciążać bazę, czas ten może się wydłużyć nawet do kilkudziesięciu minut. W tym czasie R może przestać odpowiadać i sprawiać wrażenie, że się zawiesił.
Z uwagi na długi czas pobierania danych zalecane jest, aby:
library(ZPD) src = polacz() # część wspólna - oszacowania EAP eap = pobierz_oszacowania_uczniow(src) %>% filter(estymacja == 'EAP') wyniki = list() skale = c(13, 84, 726) skalowania = c(3, 2, 1) lata = as.character(2012:2014) for(i in seq_along(skale)){ # szczegółowy filtr dla danej skali i skalowania dane = eap %>% filter(id_skali == skale[i], skalowanie == skalowania[i]) # pobranie danych wyniki[[lata[i]]] = collect(dane) } save(wyniki, file = 'gh_h_eap_12-14.RData')
W celu wykonywania analiz na oszacowaniach umiejętności uczniów często potrzebne mogą być dodatkowe dane kontekstowe, znajdujące się w innych grupach danych. Ich dołączanie jest łatwe, gdyż grupa danych oszacowania łączy się bezpośrednio z dowolną inną grupą danych. Stąd wystarczy wykonać odpowiednie złączenie danych pomiędzy pobranymi grupami danych.
Do oszacowań EAP EWD części matematyczno-przyrodniczej egzaminu gimnazjalnego z roku 2011 dołączamy zmienne z grup danych: uczniowie, uczniowieTesty i szkoły.
library(ZPD) src = polacz() skale = pobierz_skale(src) %>% filter(rodzaj_skali == 'ewd', rodzaj_egzaminu == 'egzamin gimnazjalny', czesc_egzaminu == 'matematyczno-przyrodnicza', rok == 2011, posiada_eap == TRUE) %>% select(id_skali, skalowanie, opis_skalowania) %>% distinct() head(skale)
Widać jedno skalowanie - id_skali 23, skalowanie 3.
eap = pobierz_oszacowania_uczniow(src) %>% filter(id_skali == 23, skalowanie == 3, estymacja == 'EAP') %>% collect()
testy = unique(eap$id_testu) uczniowie = pobierz_uczniow(src) uczniowieTesty = pobierz_dane_uczniowie_testy(src) %>% filter(id_testu %in% testy) szkoly = pobierz_szkoly(src) daneKontekstowe = uczniowieTesty %>% left_join(uczniowie) %>% left_join(szkoly) %>% collect()
W wypadku pobierania PV lub EAP, których liczba dla jednej części egzaminu idzie w setki tysięcy do milionów (nie mówiąc o pobieraniu ich dla wielu roczników i/lub części egzaminu) oddzielne pobranie i zapisanie lokalnie na komputerze:
a następnie złączanie ich już lokalnie na swoim komputerze (jak w powyższym przykładzie) będzie znacznie szybsze niż próba złączenia danych po stronie serwera.
Patrz jak rozsądnie dzielić przetwarzanie danych między bazę danych i własny komputer?