Аналіз предмета для R-новачка


12

Я намагаюся оцінити тест з вибором у багато предметів. Я хочу виконати аналіз предмета, такий, який можна знайти в цьому прикладі . Тому для кожного запитання я хочу значення P та співвідношення із загальною сумою та розподілом обраних варіантів.

Я нічого не знаю про різні статистичні пакети програмного забезпечення там, але я хотів би використовувати R, як мені зручно з програмуванням, і R є відкритим кодом. Я передбачаю псевдо-робочий процес:

  1. підготувати дані в excel та експортувати до CSV

  2. дані про завантаження в R

  3. завантажити пакет, який робить те, що мені потрібно

  4. виконати команди цього пакета

  5. експортувати та звітувати.

Я впевнений в 1 і 2, але маю проблеми з 3, можливо, тому що у мене немає статистичної лексики для порівняння пакетів, які я переглядав на CRAN. ltmСхоже, це міг бути правильний пакет, але я не можу сказати. Який би пакет не використовувався, якими будуть команди?

Побічне запитання: у зв’язаному прикладі, що ви вважаєте за МС та ІМ?

Відповіді:


11

Я можу запропонувати вам принаймні два пакети, які дозволяють виконувати ці завдання: psych ( score.items) та ltm ( descript). Пакет CTT також здається, що він обробляє MCQ, але я не маю цього досвіду. Більше інформації можна знайти на веб-сайті W Revelle, The Personality Project , esp. сторінка, присвячена психометриці з R, яка містить покрокові інструкції щодо імпорту, аналізу та звітних даних. Крім того, перегляд завдань CRAN з психометрики включає багато додаткових ресурсів.

Як описано у вашому посиланні, MC означає "Середня загальна оцінка балів осіб, які відповіли на запитання правильною відповіддю", а MI - "Середня загальна оцінка осіб, які не відповіли на запитання правильною відповіддю". Точково-бісеріальна кореляція (R (IT)) також доступна в ltmупаковці ( biserial.cor). Це, в основному, показник потужності дискримінації предмета (оскільки це співвідношення предмета та загальної оцінки) і пов'язаний з параметром дискримінації ІРТ-моделі 2-PL або завантаженням факторів у Факторному аналізі.

Якщо ви дійсно хочете відтворити показану вами таблицю, я думаю, вам доведеться обгорнути частину цього коду спеціальним кодом, принаймні, щоб вивести той самий вид таблиці. Я зробив швидкий і брудний приклад, який відтворює вашу таблицю:

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

Оскільки це випадкові відповіді, бісеріальна кореляція та складність предметів не мають великого значення (за винятком перевірки того, що дані справді випадкові :). Крім того, варто перевірити можливі помилки, оскільки я склав функцію R в 10 '...


1
Дякую за це! Я читаю ваш код, і це допомагає мені сильно розібратися у синтаксисі R. Одне, що доставляє мені клопоту, - це лінія freq.resp <- raw.resp/apply(raw.resp, 1, sum, na.rm=T). Помилка полягає в тому, що "dim (X) повинен мати позитивну довжину", а dim (raw.resp) - NULL. Можливо, так як у моїх даних немає всіх параметрів із позитивною частотою, мої таблиці не однакові за довжиною? Як я можу заповнити нулі у tableвиклику?
Меттью Лейнганг

@Matthew Так, дуже ймовірно, що це справді джерело проблеми (ну, ви швидко навчаєтесь R, я ціную). Отже, якщо одна категорія відповідей не спостерігається за одним або декількома елементами, то довжина таблиці буде <4, і freq.respвикине помилку. Я виправлю код (до завтра), це також покаже вам, як поєднати нерегулярні таблиці з невеликим кодом.
chl

@Matthew Я додав виправлення. Потрібно працювати і з дихотомічними предметами. Дайте мені знати, чи зараз це нормально. gist.github.com/642219
хл

Велике спасибі за те, що тримаюсь за руку. Ваша функція дає мені помилку: "Помилка raw.resp [i, names (tmp)] <- tmp: підписка поза межами", але як не дивно, я можу без проблем запускати кожен рядок функції. Тож у мене є робочий звіт.
Метью Лейнганг

Я застосовував цей код, і думаю, що всі знаки рядка R (точкові бісеріальні кореляції) можуть бути перевернуті.
user1205901

8

Функція пакунка психіки альфа виробляє те, що ви шукаєте.

Щоб експортувати це, збережіть об'єкт і використовуйте функцію xtable для створення розмітки LaTeX, яку потім можна відформатувати будь-яким редактором LaTeX.


1
(+1) psych::alphaробить кращу роботу, ніж score.itemsдякую, що додав це. Я ніколи не пам’ятаю того, кого я повинен використовувати!
chl
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.