Analiza przedmiotu dla początkującego R.

12

Próbuję ocenić 20-elementowy test wielokrotnego wyboru. Chcę przeprowadzić analizę przedmiotu, taką jak w tym przykładzie . Tak więc dla każdego pytania chcę wartość P i korelację z sumą oraz rozkład wybranych opcji.

Nie wiem nic o różnych pakietach oprogramowania statystycznego, ale chciałbym używać R, ponieważ czuję się swobodnie w programowaniu, a R jest oprogramowaniem typu open source. Wyobrażam sobie pseudo-workflow:

  1. przygotuj dane w programie Excel i wyeksportuj do CSV

  2. ładować dane w R.

  3. załaduj pakiet, który robi to, czego potrzebuję

  4. wykonać polecenia tego pakietu

  5. eksport i raport.

Jestem pewny z 1 i 2, ale mam problemy z 3, prawdopodobnie dlatego, że nie mam słownictwa statystycznego, aby porównać pakiety, które przeglądałem w CRAN. ltmwygląda na to, że może to być odpowiedni pakiet, ale nie mogę powiedzieć. Bez względu na zastosowany pakiet, jakie byłyby polecenia?

Pytanie poboczne: jak myślisz, co oznacza skrót MC i MI?

Matthew Leingang
źródło

Odpowiedzi:

11

Mogę zasugerować ci co najmniej dwa pakiety, które pozwalają na wykonanie tych zadań: psych ( score.items) i ltm ( descript). CTT pakiet wydaje się również do procesu MCQ ale nie mam doświadczenia z nim. Więcej informacji można znaleźć na stronie internetowej W Revelle, The Personality Project , esp. strona poświęcona psychometrii z R, która zawiera instrukcje krok po kroku dotyczące importowania, analizowania i raportowania danych. Ponadto widok zadań CRAN dotyczący psychometrii zawiera wiele dodatkowych zasobów.

Jak opisano w twoim linku, MC oznacza „Średni całkowity surowy wynik osób, które odpowiedziały na element z prawidłową odpowiedzią”, a MI oznacza „Średni całkowity wynik osób, które nie odpowiedziały na element z prawidłową odpowiedzią”. Korelacja punkt-biserial (R (IT)) jest również dostępna w ltmpakiecie ( biserial.cor). Jest to w zasadzie wskaźnik siły odróżniającej elementu (ponieważ jest to korelacja elementu i całkowitego wyniku) i jest związany z parametrem dyskryminacji modelu IRT 2-PL lub ładunkiem czynnikowym w analizie czynnikowej.

Jeśli naprawdę chcesz odtworzyć pokazaną tabelę, myślę, że będziesz musiał owinąć część tego kodu niestandardowym kodem, przynajmniej w celu wygenerowania tego samego rodzaju tabeli. Zrobiłem szybki i brudny przykład, który odtwarza twój stół:

dat <- replicate(10, sample(LETTERS[1:4], 100, rep=TRUE))
dat[3,2] <- dat[67,5] <- NA
itan(dat)

         P      R    MC    MI NC OMIT  A  B  C  D
 [1,] 0.23 -0.222 2.870 2.169 23    0 23 22 32 23
 [2,] 0.32 -0.378 3.062 1.985 32    1 32 20 14 33
 [3,] 0.18 -0.197 2.889 2.207 18    0 18 33 22 27
 [4,] 0.33 -0.467 3.212 1.896 33    0 33 18 29 20
 [5,] 0.27 -0.355 3.111 2.056 27    1 27 23 23 26
 [6,] 0.17 -0.269 3.118 2.169 17    0 17 25 25 33
 [7,] 0.21 -0.260 3.000 2.152 21    0 21 24 25 30
 [8,] 0.24 -0.337 3.125 2.079 24    0 24 32 22 22
 [9,] 0.13 -0.218 3.077 2.218 13    0 13 29 33 25
[10,] 0.25 -0.379 3.200 2.040 25    0 25 25 31 19

Ponieważ są to losowe odpowiedzi, korelacja biserialna i trudność przedmiotu nie mają większego znaczenia (oprócz sprawdzenia, czy dane są naprawdę losowe :). Warto również sprawdzić możliwe błędy, ponieważ opracowałem funkcję R w 10 '...

chl
źródło
1
Dzięki za to! Czytam twój kod i bardzo pomaga mi to zrozumieć składnię R. Jedną z rzeczy, która sprawia mi kłopoty, jest linia freq.resp <- raw.resp/apply(raw.resp, 1, sum, na.rm=T). Błąd polega na tym, że „dim (X) musi mieć długość dodatnią”, podczas gdy dim (raw.resp) ma wartość NULL. Czy to możliwe, że ponieważ moje dane nie mają wszystkich opcji z dodatnimi częstotliwościami, moje tabele nie są tej samej długości? Jak mogę wpisać zera w swoim tablewywołaniu?
Matthew Leingang
@Mathew Tak, jest bardzo prawdopodobne, że to jest rzeczywiście źródło problemu (cóż, szybko się uczysz, doceniam). Tak więc, jeśli jedna kategoria odpowiedzi nie jest przestrzegana dla jednego lub więcej elementów, wówczas długość tabeli będzie wynosić <4 i freq.respspowoduje błąd. Naprawię kod (do jutra), pokaże to również, jak łączyć nieregularne tabele z małym kodem.
chl
@ Matthew Dodałem poprawkę. Powinien działać również z dychotomicznymi przedmiotami. Daj mi znać, jeśli teraz jest to w porządku. gist.github.com/642219
chl
Dziękuję bardzo za trzymanie mnie za rękę. Twoja funkcja daje mi błąd: „Błąd w raw.resp [i, names (tmp)] <- tmp: indeks dolny poza granicami”, ale co dziwne, mógłbym uruchomić każdą linię funkcji bez problemów. Mam więc raport roboczy.
Matthew Leingang
Stosowałem ten kod i myślę, że wszystkie znaki w wierszu R (punktowa korelacja biserialna) mogą być odwrócone.
user1205901 - Przywróć Monikę
8

Funkcja psych pakietu alfa tworzy to, czego szukasz.

Aby to wyeksportować, zapisz obiekt i użyj funkcji xtable, aby utworzyć znaczniki LaTeX, które następnie można sformatować w dowolnym edytorze LaTeX.

richiemorrisroe
źródło
1
(+1) psych::alphama lepszą robotę niż score.itemsdzięki, że to dodałeś. Nigdy nie pamiętam tego, którego powinienem użyć!
chl