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


12

Я пытаюсь оценить 20-элементный тест на выбор нескольких множителей. Я хочу выполнить анализ элемента, который можно найти в этом примере . Поэтому для каждого вопроса я хочу получить P-значение и корреляцию с итогом, а также распределение выбранных опций.

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

  1. подготовить данные в Excel и экспортировать в CSV

  2. загрузить данные в R

  3. загрузить пакет, который делает то, что мне нужно

  4. выполнить команды этого пакета

  5. экспорт и отчет.

Я уверен в 1 и 2, но у меня проблемы с 3, возможно потому, что у меня нет статистического словаря для сравнения пакетов, которые я просматривал в CRAN. ltmПохоже, это может быть правильный пакет, но я не могу сказать. Какой пакет используется, какими будут команды?

Дополнительный вопрос: что, по вашему мнению, обозначают MC и MI?

Ответы:


11

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

Как описано в вашей ссылке, MC означает «Средний общий балл людей, которые ответили на вопрос с правильным ответом», а MI - «Средний общий балл людей, которые не ответили на вопрос с правильным ответом». Точечно-двоичная корреляция (R (IT)) также доступна в ltmпакете ( biserial.cor). Это в основном показатель силы различения предмета (поскольку это корреляция предмета и общего балла), и он связан с параметром распознавания модели IRT 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вызове?
Мэтью Лейнган,

@ Матфея Да, вполне вероятно, что это действительно источник проблемы (ну, вы быстро изучаете R, я ценю). Таким образом, если одна категория ответа не наблюдается для одного или нескольких элементов, длина таблицы будет <4 и freq.respприведет к ошибке. Я исправлю код (к завтрашнему дню), это также покажет вам, как объединять неправильные таблицы с небольшим количеством кода.
ЧЛ

@ Матфе я добавил исправление. Должен работать и с дихотомическими элементами. Дайте мне знать, если это нормально. gist.github.com/642219
хл

Большое спасибо за то, что держали меня за руку. Ваша функция выдает мне ошибку: «Ошибка в raw.resp [i, names (tmp)] <- tmp: subscript out of bounds», но, как ни странно, я мог без проблем запустить каждую строку функции. Итак, у меня есть рабочий отчет.
Мэтью Лейнган

Я применял этот код, и я думаю, что все знаки в строке R (точечная бизериальная корреляция) могут быть инвертированы.
user1205901 - Восстановить Монику

8

Функция психического пакета альфа производит то, что вы ищете.

Чтобы экспортировать это, сохраните объект и используйте функцию xtable для создания разметки LaTeX, которую затем можно отформатировать любым редактором LaTeX.


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