skaluj: Skalowanie modeli IRT.

View source: R/skaluj.R

skalujR Documentation

Skalowanie modeli IRT.

Description

Funkcja służąca do przeprowadzania potencjalnie złożonych procedur skalowania (typowo egzaminów) z wykorzystaniem Mplusa (a docelowo również pakietu mirt).

Usage

skaluj(
  dane,
  opisProcedury,
  idObs,
  tytul = "",
  zmienneCiagle = NULL,
  zmienneSpecjalne = NULL,
  zmienneDolaczaneDoOszacowan = NULL,
  zwrocOszacowania = TRUE,
  usunFWF = TRUE,
  bezWartosciStartowychParametrowTypu = NULL,
  nieEstymuj = FALSE
)

Arguments

dane

data.frame z danymi

opisProcedury

p. szczegóły

idObs

ciąg znaków z nazwą zmiennej będącej unikalnym identyfikatorem obserwacji (w dane)

tytul

ciąg znaków, który będzie wstawiany w sekcji TITLE plików poleceń Mplusa, a jego 12 pierwszych znaków zostanie wykorzystane do tworzenia nazw plików z poleceniami Mplusa

zmienneCiagle

wektor tekstowy podający nazwy zmiennych, które mają być w analizie traktowane jako ciągłe (domyślnie wszystkie zmienne traktowane są jako porządkowe)

zmienneSpecjalne

lista - na obecnym etapie rozwoju nie wykorzystywana

zmienneDolaczaneDoOszacowan

wektor tekstowy podajacy nazwy zmiennych, które mają zostać dołączone do zbioru(ów) z oszacowaniami natężania badanych cech

zwrocOszacowania

wartość logiczna - czy estymować (i zwrócić) również oszacowania natężenia badanych cech dla poszczególnych jednostek obserwacji?

usunFWF

wartość logiczna - czy usuwać pliki o stałej szerokości, w których zapisywane są dane dla Mplusa?

bezWartosciStartowychParametrowTypu

wyrażenie regularne definiujące typy parametrów, dla których wartości wyestymowane w poprzedniej kalibracji mają nie być używane jako wartości startowe w ew. następnych kalibracjach (sposób na obejście problemu z Mplusem, który przy zadaniu wartości startowych dla thresholdów nie utrzymuje inwariancji pomiarowej w modelu wielogrupowym)

nieEstymuj

wartość logiczna - jeśli na dysku zapisany jest już plik .out o nazwie takiej, jak plik .inp, który właśnie ma być przetwarzany w Mplusie, to czy zamiast uruchamiania Mplusa po prostu wczytać wyniki z tego pliku? opcja przydatna przy debugowaniu funkcji skalujących wyższego rzędu, z pakietu EWDskale

Details

Struktura argumentu opisProcedury:

Argument opisProcedury jest listą, której kolejne elementy opisują kolejne zadania (kroki) w ramach procedury skalowania. Każdy jej element jest listą, składającą się z następujących elementów:

  • czescPomiarowa lista zawierająca definicje konstruktów. Każdy jej element musi mieć nazwę, składającą się wyłącznie z liter alfabetu łacińskiego (ASCII) i cyfr (ale nie może zaczynać się od cyfry) i być listą, składającą się z następujących elementów:

    • zmienne jedno z dwóch:

      • Wektor tekstowy zawierający nazwy zmiennych (obserwowalnych) powiązanych z danym konstruktem.

      • Lista definiująca konstrukt symbolicznie, składająca się z:

        • Prawostronnej formuły zawierającej nazwy konstruktów, występujących we wcześniejszych krokach procedury, z których (przynajmniej) niektóre zmienne mają zostać powiązane z właśnie definiowanym konstruktem.

        • Dla każdego konstruktu występującego w ww. formule element listy o nazwie odpowiadającej nazwie konstruktu, zawierający wyrażenie regularne (ciąg znaków), identyfikujące (w grupie zmiennych powiązanych z danym konstruktem z któregoś z poprzednich kroków procedury) zmienne, które mają być wskaźnikami definiowanego właśnie konstruktu.

    • var1 opcjonalnie wartość logiczna - czy wariancja konstruktu ma być zakotwiczona w jedności (a wszystkie ładunki czynnikowe/dyskryminacje uwolnione)? Jeśli element nie występuje, funkcja skaluj() założy, że ma on wartość TRUE.

    • rasch opcjonalnie wartość logiczna - czy wszystkie dyskryminacje w ramach konstruktu mają mieć równe wartości? Jeśli element nie występuje, funkcja skaluj() założy, że ma on wartość FALSE.

    • kryteriaUsuwania opcjonalnie lista zawierająca definicje kryteriów usuwania pytan (zmiennych obserwowalnych). Obecnie obsługiwane są:

      • dyskryminacjaPonizej liczba - zadania o dyskryminacji mniejszej niż zadany próg będą usuwane.

      • istotnoscPowyzej liczba z zakresu (0;1] - zadania o wartości istotności parametru dyskryminacji większej niż zadany próg będą usuwane.

      • nigdyNieUsuwaj wyrażenie regularne (ciąg znaków) identyfikujące nazwy zmiennych, które nigdy nie są usuwane (przydatne np. dla parametrów selekcji).

      • usunWieleNaraz wartość logiczna - gdy wiele zadań spełnia kryterium usuwania, to czy usuwać je wszystkie w jednym kroku? Jeśli nie podany, przyjmuje się, że nie (w każdym kroku usuwane będzie tylko jedno, najgorsze zadanie.

    • wartosciStartowe data.frame zawierający ew. wartości startowe dla (przynajmniej niektórych) parametrów modelu. Musi składać się z kolumn:

      • typ typu "character", definiująca typ parametru: "by", "threshold", "mean" lub "variance".

      • zmienna1 typu "character". W przypadku parametrów "by", "mean" i "variance" zawiera nazwę konstruktu. W przypadku parametrów "threshold" zawiera nazwę zmiennej obserwowalnej.

      • zmienna2 typu "character". W przypadku parametrów "by" zawiera nazwę zmiennej obserwowalnej. W przypadku parametrów "threshold" zawiera numer progu (począwszy od 1). W przypadku parametrów "mean" i "variance" pusta.

      • wartosc typu "numeric", zawiera wartość startową dla parametru.

      albo wartość TRUE. To drugie tylko w sytuacji, gdy konstrukt jest definiowany w sposób symboliczny - oznacza wtedy, że wartości startowe mają zostać przepisane z wyników estymacji w poprzednich krokach procedury.

    • wartosciZakotwiczone data frame o strukturze jw., z tym że podane wartości parametrów definiują wartości zakotwiczone, albo wartość TRUE (jw., tylko gdy konstrukt jest definiowany w sposób symboliczny)

    • ograniczeniaWartosci jedno z dwojga:

      • Data frame o strukturze jw., poza tym, że kolumna 'wartosc' musi być typu "character". Podane w niej wartości parametrów definiują etykiety parametrów - jeśli kilka parametrów ma przypisaną tą samą etykietę, w estymacji nałożony zostanie na nie warunek, że muszą przyjmować taką samą wartość.

      • Wektor wyrażeń regularnych (ciągów tekstu) identyfikujących grupy zmiennych obserwowalnych, w ramach których zachowana musi być taka sama suma wartości parametrów dyskryminacji.

  • wieleGrup opcjonalnie lista zawierająca specyfikację modelu wielogrupowego (p . też sekcja Modele wielogrupowe poniżej). Musi zawierać elementy:

    • zmienneGrupujace wektor tekstowy zawierający nazwy zmiennych, których kombinacja wartości definiuje podział na grupy.

    • uwolnijWartosciOczekiwane wartość logiczna - czy uwolnić wartości oczekiwane konstruktu w ramach grup? Jeśli element nie występuje, funkcja skaluj() założy, że ma on wartość TRUE.

    • uwolnijWariancje wartość logiczna - czy uwolnić wariancje konstruktu w ramach grup? Jeśli element nie występuje, funkcja skaluj() założy, że ma on wartość TRUE.

  • parametry lista zawierająca parametry sterujące estymacją modelu. Obecnie obsługiwane są:

    • estimator ciąg znaków, który zostanie wstawiony w syntax Mplusa jako wartość opcji ESTIMATOR w ramach komendy ANALYSIS. Typowo "MLR". Powinien być zawsze podawany.

    • processors liczba, która zostanie wstawiony w syntax Mplusa jako wartość opcji PROCESSORS w ramach komendy ANALYSIS.

    • integration ciąg znaków, który zostanie wstawiony w syntax Mplusa jako wartość opcji INTEGRATION w ramach komendy ANALYSIS; typowo "STANDARD (20)"; Lepiej, by był podany.

    • fscores wartość logiczna - czy z kalibracji przeprowadzanych w ramach danego zadania mają być zapisanywane pliki z ocenami czynnikowymi? Jeśli przyjmuje wartość FALSE, ma priorytet nad "globalnym" argumentem zwrocOszacowania, z którym wywoływana jest funkcja skaluj.

Usuwanie zadań:

O ile zdefiniowane zostały kryteria usuwania, kalibracje w ramach danego kroku procedury ponawiane będą tak długo, aż we wszystkich konstruktach (w których zdefiniowane zostały kryteria usuwania) nie będzie już zadań (zmiennych obserwowalnych) kwalifikujących się do usunięcia.

Domyślnie po każdej kalibracji usuwane jest jedno zadanie - w pierwszej kolejności zadania z najniższą dyskryminacją, a gdy nie ma już zadań podpadających pod kryterium dyskryminacji, to zadania z najwyższą wartością istotności dla parametru dyskryminacji. Jeśli w definicji kryteriów usuwania podany został element usunWieleNaraz = TRUE, to wszystkie zadania niespełniające kryterium (dyskryminacji lub istosności) będą usuwane jednocześnie.

Symboliczne definiowanie konstruktów:

Mechanizm ten przydaje się przede wszystkim w ramach wieloetapowych procedur skalowania modeli wielowymiarowych, gdzie początkowych krokach (etapach) dokonywane jest usunięcie zadań o szczególnie złych własnościach pomiarowych (realizowane w ramach oddzielnie estymowanych modeli jednowymiarowych, co pozwala zaoszczędzić czas). Jednocześnie wiedzę o tym, które pytania (zmienne obserwowalne) zostały usunięte chcemy wykorzystać podczas dalszych, bardziej złożonych etapów procedury (tak aby tam już nie przeszkadzały).

Modele wielogrupowe:

Ogólnie rzecz biorąc możliwość estymacji modeli wielogrupowych dedykowana jest dla modeli z założeniem pełnej inwariancji pomiarowej pomiędzy grupami, tj. przy założeniu, że część pomiarowa jest we wszystkich grupach identyczna, a różnią się one jedynie co do wartości oczekiwanych i/lub wariancji rozkładu cechy ukrytej.

Zakotwiczenie wartości parametrów w ramach grup można osiągnąć standardowo przy pomocy elementu wartościZakotwiczone z tym, że w kolumnie typ należy podać mean.grNR lub variance.grNR, gdzie NR to numer grupy.

Numery grup przypisywane są w ten sposób, że najpierw wybierane są wszystkie występujące w danych unikalne kombinacje wartości zmiennych definiujących grupowanie. Następnie układane są one w kolejności rosnącej według wartości pierwszej zmiennej, a w ramach kombinacji o takich samych wartościach pierwszej zmiennej, w kolejności według wartości drugiej zmiennej, itd. W związku z tym konieczne jest zachowanie daleko idącej ostrożności przy wykorzystywaniu wartości zakotwiczonych i/lub startowych uzyskanych z wykonania funkcji skaluj na innych danych. Jeśli zestaw kombinacji zmiennych grupujących w jednych i drugich danych nie jest identyczny, to albo niemożliwa będzie estymacja modelu, albo, co gorsza, uzyska się nieoczekiwane wyniki.

Estymacja modeli łamiących założenie o inwariancji pomiarowej w zasadzie jest możliwa, ale nie była testowana i nie ma gwarancji, że wszystko będzie działać dobrze. Uwolnienie parametrów w ramach grup można osiągnąć dodając dotyczące ich wpisy w elemecie wartosciStartowe danego konstruktu, przy czym w kolumnie typ należy podać by.grNR lub threshold.grNR, gdzie NR to numer grupy. Odpowiednio powinno działać również kotwiczenie parametrów w ramach grup przy pomocy elementu wartosciZakotwiczone.

Ograniczenia na równość parametrów:

Funkcja umożliwia zastosowanie jednego z dwóch podejść do nakładania ograniczeń na równość parametrów. Nie mogą być one ze sobą łączone (chyba że podejście oparte na etykietach parametrów dotyczyć będzie parametrów innych niż dyskryminacja).

Pierwsze - etykietowanie parametrów, które mają przyjmować takie same wartości - została opisana powyżej, w opisie struktury argumentu opisProcedury$czescPomiarowa[[nr]]$ograniczeniaWartosci.

Drugie rozwiązanie jest bardzo specyficzne i odnosi się do sytuacji, w której chcemy, aby sumy wartości parametrów w ramach pewnych bloków zadań były sobie równe (taki nieco szalony pomysł na skalowanie matury). Można je zastosować podając jako wartość opisProcedury$czescPomiarowa$ograniczeniaWartosci wektor wyrażeń regularnych, z których każde wskazuje na nazwy zmiennych należących do jednej z ww. grup. Od strony technicznej wykorzystuje ono pierwszy mechaniz, tyle że odpowiednia data frame jest przygototwywana wewnątrz funcji skaluj. Nie może być stosowane razem z argumentem opisProcedury$czescPomiarowa[[nr]]$rasch=TRUE. Bardzo mało prawdopodobne, by dało się też sensowenie wykorzystać w modelach wielogrupowych łamiących założenie inwariancji pomiarowej.

Value

Lista, której każdy element opisuje wyniki skalowania każdego etapu procedury. Każdy jej elemement jest listą opisującą wyniki estymacji kolejnych kalibracji (których może być kilka, jeśli stosowano kryteria usuwania zadań). Elementy opisujące wyniki estymacji kalibracji są listami, składającymi sie z następujących elementów:

  • podsumowanie wektor tekstowy zawierający linie z pliku outputu Mplusa, opisujące podsumowanie modelu i procesu estymacji.

  • dopasowanie data frame zawierający statystyki dopasowania modelu (zwrócone przez Mplusa). UWaga, sposób przechowywania informacji w tym data framie nie jest całkiem przyjazny (zanim coś z tym zrobisz, sprawdź, jak to wygląda).

  • parametry lista składająca się z elementów: surowe, stdyx, stdy, std i r2 zawierająca wyestymowane parametry modelu, odpowiednio: surowe, standaryzowane ze względu zarówno na zmienną zależną jak i zmienną niezależną, standaryzowane tylko ze względu na zmienną zależną, nie pamiętam co to za standaryzacja - sprawdź w dokumentacji Mplusa i statystyki R-kwadrat. W przypadku modeli wielogrupwych zawiera dodatkowo element codegrupyMapowanie, w którym opisane jest mapowanie kobinacji wartośc zmiennych grupujących na numery grup.

  • zapis data frame zawierający wyliczone oszacowania (co do zasady EAP) wartości cech ukrytych dla poszczególnych obserwacji i ich błędy standardowe (z wyjątkiem modeli wielogrupowych, bo Mplus nie zwraca dla nich obecnie oszacowań błędów standardowych - jest to zapewne jakiś głupi błąd), a także zmienną/e z id obserwacji, ew. zmienne grupujące (w modelach wielogrupowych) i zmienne wymienione w argumencie zmienneDolaczaneDoOszacowan. Ten element występuje tylko, gdy funkcja została wywołana z argumentem zwrocOszacowania=TRUE i w opisie danego kroku procedury nie pojawiła się definicja parametry$fscores=FALSE.

  • czas wektor teskstowy zawierający linie z pliku outputu Mplusa, opisujące czas estymacji modelu.

Examples

# chwilowo brak

tzoltak/EWDskalowanie documentation built on Oct. 1, 2022, 12:55 p.m.