Samodzielne obliczanie PWE na dowolnie przez siebie wybranym poziomie agregacji wymaga kilku kroków:
W bazie może istnieć wiele wersji PV z analiz zrównań, np. warianty obliczone z różnym warunkowaniem.
Wersje te rozróżniane są poprzez skalowanie. Dokładnych informacji o skalowaniu udzielić może ten, kto je wyliczał, czyli Bartek Kondratek. Jako ogólną regułę przyjąć jednak można, że im wyższy numer skalowania, tym bardziej ono aktualne.
Wszystkie dostępne skalowania dla danego egzaminu, które posiadają w bazie oszacowania PV umiejętności uczniów, można pobrać przeszukując listę dostępnych skal i skalowań:
library(ZPD) src = polacz() pobierz_skale(src) %>% filter( rodzaj_egzaminu == 'MÓJ RODZAJ EGZAMINU', posiada_pv == TRUE ) %>% select(id_skali, skalowanie, rodzaj_egzaminu, czesc_egzaminu, rok, data_skalowania, nazwa_skali, opis_skali, opis_skalowania) %>% distinct() %>% as.data.frame()
gdzie:
Oczywiście listę skal i skalowań można odfiltrować także w inny sposób, dokładając dodatkowe warunki (np. na rok lub część egzaminu.
Kiedy już wybierzemy interesujące nas skalowanie, notujemy parę {id_skali, skalowanie} - będzie nam ona potrzebna do pobrania PV z bazy danych.
Najwygodniej i najbezpieczniej jest pobrać PV wraz ze wszelkimi zmiennymi kontekstowymi potrzebnymi do ich odfiltrowania i oznaczenia grup z użyciem funkcji pakietu ZPD dla R, patrz
Pobranie PV ze zrównywania matury z matematyki w 2012 roku (id_skali 728, skalowanie 31000) dla terenu OKE Warszawa (czyli województwa mazowieckiego) z dołączoną informacją o płci (z grupy danych ucziowie):
library(ZPD) src = polacz() # odfiltruj oszacowania - tylko PV ze skali 728, skalowania 31000 i 2012 roku pv = pobierz_oszacowania(src) pv = pv %>% filter(id_skali == 728, skalowanie = 31000, rok == 2012, estymacja == 'PV') # odfiltruj szkoły z województwa mazowieckiego szkoly = pobierz_szkoly(src) szkoly = szkoly %>% filter(wojewodztwo == 'mazowieckie') # do połączenia z grupą "oszacowania" wystarczą kolumny id_szkoly i rok # patrz zalecenia przy korzystaniu z grupy "szkoły" szkoly = szkoly %>% select(id_szkoly, rok) # grupa uczniowie uczniowie = pobierz_uczniow(src) # złącz obie grupy danych złączeniem inner_join # pozostaną tylko PV uczniów ze szkół w woj. mazowieckim pv = inner_join(pv, szkoly) # dołącz informacje o uczniach pv = inner_join(pv, uczniowie) # pobierz pv na komputer (może zająć kilkanaście minut) pv = pv %>% collect()
Wariancję populacji obliczamy korzystając z funkcji oblicz_wariancje_populacji() z pakietu ZPD dla R:
# zakłając, że PV znajdują się w ramce danych "pv" warPop = oblicz_wariancje_populacji(pv)
Wariancję populacji należy obliczać na zestawie PV zawierającym już jedynie interesującą nas populację, np. jeśli interesują nas jedynie PWE dla szkół w województwie mazowieckim (a więc populację definiujemy jako uczniowie uczęszczający do szkół w województwie mazowieckim), to:
Jeśli chcemy otrzymać oszacowania błędów standardowych zgodne z tymi na stronie http://pwe.ibe.edu.pl, wtedy nasza definicja populacji musi się pokrywać z definicją użytą przy wyliczaniu PWE opublikowanych na stronie http://pwe.ibe.edu.pl:
Teraz wystarczy już tylko użyć funkcji agreguj_pwe():
pwe = agreguj_pwe(pv, {kolumny grup}, warPop)
gdzie:
# w podziale na szkoły wyznaczanym przez zmienną id_szkoly agreguj_pwe(pv, 'id_szkoly', blZrwn, warPop) # w podziale na szkoły i płeć wyznaczanym przez zmienne id_szkoly i plec agreguj_pwe(pv, c('id_szkoly', 'plec'), blZrwn, warPop)
Średnie dla całego kraju prezentowane w serwisie http://pwe.ibe.edu.pl mogą różnić się od średnich obliczonych samodzielnie na podstawie PV z dwóch powodów:
library(ZPD) src = polacz() pobierz_parametry(src) %>% filter(id_skali == 854 , skalowanie == 22001) %>% as.data.frame()
W tym wypadku problemem może być inaczej zdefiniowana populacja, w szczególności: