Różnice między wybraną wersją a wersją aktualną.
Both sides previous revision Poprzednia wersja Nowa wersja | Poprzednia wersja | ||
r_gr_wyniki [2015/09/27 13:15] zozlak [normalizuj()] |
r_gr_wyniki [2017/11/11 18:58] (aktualna) zozlak [pobierz_odpowiedzi()] |
||
---|---|---|---|
Linia 153: | Linia 153: | ||
* **Uwaga**, przed pobraniem wyników na komputer należy **koniecznie je odfiltrować**, typowo poprzez złączenie z odpowiednio odfiltrowaną grupą danych [[r_gr_testy|testy]] i/lub [[r_gr_kryteriaoceny|kryteria oceny]]. | * **Uwaga**, przed pobraniem wyników na komputer należy **koniecznie je odfiltrować**, typowo poprzez złączenie z odpowiednio odfiltrowaną grupą danych [[r_gr_testy|testy]] i/lub [[r_gr_kryteriaoceny|kryteria oceny]]. | ||
+ | * **Uwaga** filtrując za pomocą podanego ręcznie //id_testu// należy zadbać o to, by przekazane wartości były liczbami całkowitymi (np. //123L// albo //as.integer(123)// - patrz przykład poniżej).\\ R domyślnie przechowuje liczby w postaci zmiennoprzecinkowej, co jednak przy filtrowaniu danych zwracanych przez funkcję //pobierz_odpowiedzi()// prowadzi do drastycznego pogorszenia wydajności (jest to pechowy zbieg nie dość inteligentnego zachowania bazy danych oraz niefortunnego rzutowania wartości przez pakiet //dplyr// przy generowaniu zapytań SQL, na żaden z tych czynników nie mamy jednak niestety wpływu). | ||
* Jakkolwiek postać długa może się wydawać nieintuicyjna, jest ona bardzo wygodna do dalszego analizowania danych z zastosowaniem pakietów takich jak //dplyr// czy //ggplot//. | * Jakkolwiek postać długa może się wydawać nieintuicyjna, jest ona bardzo wygodna do dalszego analizowania danych z zastosowaniem pakietów takich jak //dplyr// czy //ggplot//. | ||
* W odróżnieniu od pozostałych funkcji pobierających wyniki daje jednoczesny dostęp zarówno do wypunktowanych odpowiedzi, jak i samych dystraktorów. | * W odróżnieniu od pozostałych funkcji pobierających wyniki daje jednoczesny dostęp zarówno do wypunktowanych odpowiedzi, jak i samych dystraktorów. | ||
Linia 162: | Linia 163: | ||
=== Przykład === | === Przykład === | ||
- | Pobranie wyników testu o id 1541 (zeszyt 9 zrównywania matury z j. polskiego w 2014 r.) | + | Pobranie wyników testu o id 1601 (matura rozszerzona z biologii w 2014 roku). |
+ | |||
+ | Z uwagi na wydajność istotne jest przekazanie //id_testu// jako liczby całkowitej - stąd //as.integer(1601)//. | ||
Jak znaleźć id interesującego nas testu - patrz grupa danych [[r_gr_testy|testy]]. | Jak znaleźć id interesującego nas testu - patrz grupa danych [[r_gr_testy|testy]]. | ||
Linia 170: | Linia 174: | ||
# pobieramy dane | # pobieramy dane | ||
- | test1541 = pobierz_odpowiedzi(src) %>% | + | test1601 = pobierz_odpowiedzi(src) %>% |
# odfiltrowując porządany test | # odfiltrowując porządany test | ||
- | filter(id_testu == 1541) %>% | + | filter(id_testu == as.integer(1601)) %>% |
collect() | collect() | ||
# podglądamy pierwsze wiersze | # podglądamy pierwsze wiersze | ||
- | head(test1541) | + | head(test1601) |
</code> | </code> | ||
Linia 270: | Linia 274: | ||
==== zastosuj_skale() ==== | ==== zastosuj_skale() ==== | ||
- | Stosuje do danych wskazaną [[skala|skalę]] (działa analogicznie do parametrów //idSkali// oraz //skroc// funkcji //pobierz_wyniki_egzaminu(), pobierz_wyniki_testu(), pobierz_wyniki_zrownywania()// i //pobierz_odpowiedzi()//) | + | Stosuje do danych wskazaną [[skala|skalę]]. |
+ | |||
+ | * Działa analogicznie do parametrów //idSkali// oraz //skroc// funkcji //pobierz_wyniki_egzaminu(), pobierz_wyniki_testu(), pobierz_wyniki_zrownywania()// i //pobierz_odpowiedzi()//) | ||
//**zastosuj_skale**(dane, src, idSkali, skroc = TRUE)// | //**zastosuj_skale**(dane, src, idSkali, skroc = TRUE)// | ||
Linia 277: | Linia 283: | ||
* //idSkali// - identyfikator [[skala|skali]], która ma zostać zastosowana | * //idSkali// - identyfikator [[skala|skali]], która ma zostać zastosowana | ||
* //skroc// - czy stosować zapisane w skali reguły [[skrocenieskali|skracania skal]] | * //skroc// - czy stosować zapisane w skali reguły [[skrocenieskali|skracania skal]] | ||
+ | |||
+ | === Przykład === | ||
+ | |||
+ | Stosujemy skalę 41 (zrównywanie sprawdzianu dla lat 2002-2013) do wyników sprawdzianu z 2002 roku. | ||
<code rsplus> | <code rsplus> | ||
library(ZPD) | library(ZPD) | ||
src = polacz() | src = polacz() | ||
+ | |||
+ | # pobieramy dane sprawdzianu | ||
dane = pobierz_wyniki_egzaminu(src, 'sprawdzian', '', 2002, FALSE) %>% | dane = pobierz_wyniki_egzaminu(src, 'sprawdzian', '', 2002, FALSE) %>% | ||
collect() | collect() | ||
+ | # zapamiętujemy listę zmiennych | ||
+ | przed = colnames(dane) | ||
+ | # stosujemy skalę | ||
dane = dane %>% | dane = dane %>% | ||
- | zastosuj_skale(778) | + | zastosuj_skale(src, 41) |
+ | # porównujemy listę zmiennych po przekształceniu - jak widać niektóre kryteria zostały złączone w pseudokryteria | ||
+ | setdiff(przed, names(dane)) | ||
+ | setdiff(names(dane), przed) | ||
+ | | ||
</code> | </code> | ||
Linia 291: | Linia 310: | ||
Oblicza **w zmiennej //wynik//** sumy punktów dla danego zbioru danych. \\ | Oblicza **w zmiennej //wynik//** sumy punktów dla danego zbioru danych. \\ | ||
- | Sumowane są wszystkie zmienne, których nazwa pasuje do wyrażenia regularnego ^[pk]_[0-9]+$'. \\ | + | |
- | **Dane muszą być pobrane w postaci długiej** (funkcją //pobierz_odpowiedzi//) **lub w postaci wypunktowanej** (parametr //punktuj = TRUE// funkcji //pobierz_wyniki_egzaminu(), pobierz_wyniki_testu()// oraz //pobierz_wyniki_zrownywania()//) | + | * Sumowane są wszystkie zmienne, których nazwa pasuje do wyrażenia regularnego ^[pk]_[0-9]+$'. \\ |
+ | * **Uwaga**, dane muszą być pobrane w postaci długiej (funkcją //pobierz_odpowiedzi//) lub w postaci wypunktowanej (parametr //punktuj = TRUE// funkcji //pobierz_wyniki_egzaminu(), pobierz_wyniki_testu()// oraz //pobierz_wyniki_zrownywania()//) | ||
//**zsumuj_punkty**(dane, usunKryteria = TRUE)// | //**zsumuj_punkty**(dane, usunKryteria = TRUE)// | ||
* //dane// - dane pobrane funkcją //pobierz_wyniki_egzaminu(), pobierz_wyniki_testu(), pobierz_wyniki_zrownywania()// lub //pobierz_odpowiedzi()// | * //dane// - dane pobrane funkcją //pobierz_wyniki_egzaminu(), pobierz_wyniki_testu(), pobierz_wyniki_zrownywania()// lub //pobierz_odpowiedzi()// | ||
* //usunKryteria// - czy zmienne zawierające wyniki cząstkowe ([[kryteriumoceny|kryteriów]] i/lub [[pseudokryteriumoceny|pseudokryteriów]] oceny) powinny zostać usunięte czy pozostawione w wynikowym zbiorze danych | * //usunKryteria// - czy zmienne zawierające wyniki cząstkowe ([[kryteriumoceny|kryteriów]] i/lub [[pseudokryteriumoceny|pseudokryteriów]] oceny) powinny zostać usunięte czy pozostawione w wynikowym zbiorze danych | ||
+ | |||
+ | === Przykład === | ||
+ | |||
+ | Pobieramy wyniki testu 1541 (zeszyt 9 zrównywania matury z j. polskiego w 2014 roku) i obliczamy sumy punktów pozostawiając jednocześnie w zbiorze zmienne z punktacją za poszczególne [[kryteriumoceny|kryteria oceny]]. | ||
<code rsplus> | <code rsplus> | ||
Linia 302: | Linia 326: | ||
src = polacz() | src = polacz() | ||
dane = pobierz_wyniki_testu(src, 1541) %>% | dane = pobierz_wyniki_testu(src, 1541) %>% | ||
+ | collect() %>% | ||
zsumuj_punkty(usunKryteria = FALSE) | zsumuj_punkty(usunKryteria = FALSE) | ||
+ | head(dane) | ||
</code> | </code> | ||
Linia 310: | Linia 336: | ||
Dokonuje normalizacji **sum punktów** (np. wyliczonych funkcją //zsumuj_punkty()//) albo z użyciem wskazanej [[r_gr_normy|normy]] albo poprzez wykonanie normalizacji ekwikwantylowej przekazanych danych. | Dokonuje normalizacji **sum punktów** (np. wyliczonych funkcją //zsumuj_punkty()//) albo z użyciem wskazanej [[r_gr_normy|normy]] albo poprzez wykonanie normalizacji ekwikwantylowej przekazanych danych. | ||
- | * **Uwaga,** w wypadku stosowania normy z bazy dane powinny być przekształcone (jeszcze przed policzeniem sum punktów) za pomocą tej samej skali, jak skala, z której pochodzi norma! | + | * **uwaga,** w wypadku stosowania normy z bazy dane powinny być przekształcone (jeszcze przed policzeniem sum punktów) za pomocą tej samej skali, jak skala, z której pochodzi norma! |
//**normalizuj**(dane, src = NULL, kolWynik = "wynik", | //**normalizuj**(dane, src = NULL, kolWynik = "wynik", | ||
Linia 317: | Linia 343: | ||
* //src// - zmienna zawierająca połączenie z bazą danych zwrócone przez funkcję polacz() (tylko w wypadku stosowania [[r_gr_normy|norm]] pobieranych z bazy) | * //src// - zmienna zawierająca połączenie z bazą danych zwrócone przez funkcję polacz() (tylko w wypadku stosowania [[r_gr_normy|norm]] pobieranych z bazy) | ||
* //kolWynik// - nazwa zmiennej w danych przechowującej sumy punktów | * //kolWynik// - nazwa zmiennej w danych przechowującej sumy punktów | ||
- | * //idSkali//, //skalowanie//, //grupa// - parametry pozwalające zidentyfikować w bazie danych [[r_gr_norma|normę]] do zastosowania; **dane powinny być przekształcone za pomocą tej samej skali** (tylko w wypadku stosowania [[r_gr_normy|norm]] pobieranych z bazy) | + | * //idSkali//, //skalowanie//, //grupa// - parametry pozwalające zidentyfikować w bazie danych [[r_gr_normy|normę]] do zastosowania; **dane powinny być przekształcone za pomocą tej samej skali** (tylko w wypadku stosowania [[r_gr_normy|norm]] pobieranych z bazy) |
* //...// - opcjonalne parametry funkcji //normy_ekwikwantylowe()// (tylko w wypadku wykonywania normalizacji ekwikwantylowej na podstawie przekazanych danych) | * //...// - opcjonalne parametry funkcji //normy_ekwikwantylowe()// (tylko w wypadku wykonywania normalizacji ekwikwantylowej na podstawie przekazanych danych) | ||
+ | |||
+ | === Przykład === | ||
+ | |||
+ | Stosujemy dwie różne normy do wyników sprawdzianu z 2002 roku: | ||
+ | |||
+ | * normalizację ekwikwantylową na podstawie wyników sprawdzianu w 2002 roku | ||
+ | * normę zrównującą przeliczającą wyniki z roku 2002 na odpowiadające im wyniki w roku 2013 | ||
<code rsplus> | <code rsplus> | ||
Linia 326: | Linia 359: | ||
collect() | collect() | ||
| | ||
- | # normalizacja ekwikwantylowa na podstawie danych | + | # normalizacja ekwikwantylowa na podstawie danych (domyślna średnia 100 i odchylenie standardowe 15) |
daneNormEkw = dane %>% | daneNormEkw = dane %>% | ||
zsumuj_punkty() %>% | zsumuj_punkty() %>% | ||
normalizuj() | normalizuj() | ||
+ | head(daneNormEkw) | ||
| | ||
# normalizacja na podstawie normy zrównującej {idSkali, skalowanie, grupa} = {778, 2, ''} w bazie | # normalizacja na podstawie normy zrównującej {idSkali, skalowanie, grupa} = {778, 2, ''} w bazie | ||
daneNormZrwn = dane %>% | daneNormZrwn = dane %>% | ||
# skala, z której pochodzi norma zrównująca | # skala, z której pochodzi norma zrównująca | ||
- | zastosuj_skale(778) %>% | + | zastosuj_skale(src, 778) %>% |
+ | zsumuj_punkty() %>% | ||
normalizuj(src, idSkali = 778, skalowanie = 2, grupa = '') | normalizuj(src, idSkali = 778, skalowanie = 2, grupa = '') | ||
+ | head(daneNormZrwn) | ||
</code> | </code> | ||
Linia 351: | Linia 387: | ||
# Pobieramy grupy danych //wyniki//, //uczniowie//, //uczniowieTesty//, //szkoły//: | # Pobieramy grupy danych //wyniki//, //uczniowie//, //uczniowieTesty//, //szkoły//: | ||
- | wyniki = pobierz_czesc_egzaminu(src, 'egzamin gimnazjalny', 'matematyczno-przyrodnicza', 2011, T) | + | wyniki = pobierz_wyniki_egzaminu(src, 'egzamin gimnazjalny', 'matematyczno-przyrodnicza', 2011, TRUE) |
uczniowie = pobierz_uczniow(src) | uczniowie = pobierz_uczniow(src) | ||
uczniowieTesty = pobierz_dane_uczniowie_testy(src) | uczniowieTesty = pobierz_dane_uczniowie_testy(src) |