关于数据挖掘:R语言使用Rasch模型分析学生答题能力

39次阅读

共计 5149 个字符,预计需要花费 13 分钟才能阅读完成。

全文链接:http://tecdat.cn/?p=10175

原文出处:拓端数据部落公众号

几个月以来,我始终对序数回归与我的项目响应实践(IRT)之间的关系感兴趣。在这篇文章中,我重点介绍 Rasch 剖析。

最近,我花了点工夫尝试了解不同的估算办法。三种最常见的估算办法是:

  • 
    联结最大似然(JML)
  • 
    条件逻辑回归,在文献中称为条件最大似然(CML)。
  • 
    规范多层次模型,在测量文献中称为边际最大似然(MML)。

浏览后,我决定尝试进行 Rasch 剖析,生成多个 Rasch 输入。

例子

须要 ggplot2 和 dplyr 能力创立图表。

library(Epi) # 用于带比照的条件逻辑回归 library(lme4) # glmerlibrary(ggplot2) # 用于绘图 library(dplyr) # 用于数据操作

数据。

raschdat1 <- as.data.frame(raschdat)

CML 估算

res.rasch <- RM(raschdat1)

系数

coef(res.rasch)



beta V1      beta V2      beta V3      beta V4      beta V51.565269700  0.051171719  0.782190094 -0.650231958 -1.300578876beta V6      beta V7      beta V8      beta V9     beta V100.099296282  0.681696827  0.731734160  0.533662275 -1.107727126beta V11     beta V12     beta V13     beta V14     beta V15

-0.650231959  0.387903893 -1.511191830 -2.116116897  0.339649394beta V16     beta V17     beta V18     beta V19     beta V20-0.597111141  0.339649397 -0.093927362 -0.758721132  0.681696827beta V21     beta V22     beta V23     beta V24     beta V250.936549373  0.989173502  0.681696830  0.002949605 -0.814227487beta V26     beta V27     beta V28     beta V29     beta V301.207133468 -0.093927362 -0.290443234 -0.758721133  0.731734150

应用回归

raschdat1.long$tot <- rowSums(raschdat1.long) # 创立总分 c(min(raschdat1.long$tot), max(raschdat1.long$tot)) #最小和最大分数 \[1\]  1 26raschdat1.long$ID <- 1:nrow(raschdat1.long) #创立 IDraschdat1.long <- tidyr::gather(raschdat1.long, item, value, V1:V30) # 宽数据转换为长数据# 转换因子类型 raschdat1.long$item <- factor(raschdat1.long$item, levels = p

条件最大似然

# 回归系数 item1        item2        item3        item4        item50.051193209  0.782190560 -0.650241362 -1.300616876  0.099314453

item6        item7        item8        item9       item100.681691285  0.731731557  0.533651426 -1.107743224 -0.650241362item11       item12       item13       item14       item150.387896763 -1.511178125 -2.116137610  0.339645555 -0.597120333item16       item17       item18       item19       item200.339645555 -0.093902568 -0.758728000  0.681691285  0.936556599item21       item22       item23       item24       item250.989181510  0.681691285  0.002973418 -0.814232531  1.207139323item26       item27       item28       item29        

-0.093902568 -0.290430680 -0.758728000  0.731731557

请留神,item1 是 V2 而不是 V1,item29 是 V30。要取得第一个题目 V1 的难易水平,只需将题目 1 到题目 29 的系数求和,而后乘以 -1。

sum(coef(res.clogis)\[1:29\]) * -1\[1\] 1.565278# 再确认两个模型是否等效 res.rasch$loglik #Rasch 对数似然 \[1\] -1434.482# 条件逻辑对数似然,第二个值是最终模型的对数似然 res.clogis$loglik



\[1\] -1630.180 -1434.482# 还能够比拟置信区间,方差,...#clogistic 可让您查看剖析的理论样本量:res.clogis$n



\[1\] 3000

显然,所有数据(30 * 100)都用于估算。这是因为没有一个参与者在所有问题上都得分为零,在所有问题上都得分为 1(最低为 1,最高为 30 分中的 26 分)。所有数据都有助于预计,因而本示例中的方差预计是无效的。

联结极大似然预计

# 规范逻辑回归,请留神应用比照 res.jml 

# 前三十个系数(Intercept)        item1        item2        item3        item4

-3.688301292  0.052618523  0.811203577 -0.674538589 -1.348580496

      item5        item6        item7        item8        item90.102524596  0.706839644  0.758800752  0.553154545 -1.148683041

     item10       item11       item12       item13       item14

-0.674538589  0.401891360 -1.566821260 -2.193640539  0.351826379

     item15       item16       item17       item18       item19

-0.619482689  0.351826379 -0.097839229 -0.786973625  0.706839644

     item20       item21       item22       item23       item240.971562267  1.026247034  0.706839644  0.002613624 -0.844497142

     item25       item26       item27       item28       item291.252837340 -0.097839229 -0.301589647 -0.786973625  0.758800752

item29 与 V30 雷同。差别是由估算办法的差别引起的。要取得第一个问题 V1 的难易水平,只需将问题 1 到问题 29 的系数求和,而后乘以 -1。

sum(coef(res.j



\[1\] 1.625572

多层次逻辑回归或 MML

我心愿回归系数是问题达到时的难易水平,glmmTMB()不提供比照选项。我要做的是运行 glmer() 两次,将第一次运行的固定成果和随机成果作为第二次运行的起始值。

应用多层次模型复制 Rasch 后果

提供个体 - 问题映射:

plot(res.rasch)

要创立此图,咱们须要问题难度(回归系数 * -1)和个体能力(随机截距)。

极其的分数是不同的。这归因于 MML 的差别。因为 CML 不提供人为因素,因而必须应用两步排序过程。

问题特色曲线

问题特色曲线:

plot(res.rasch)

在这里,咱们须要可能依据学生的潜能来预测学生正确答题的概率。我所做的是应用逻辑方程式预测概率。取得该数值,就很容易计算预测概率。因为我应用循环来执行此操作,因而我还要计算问题信息,该信息是预测概率乘以 1 - 预测概率。

## GGPLOT 可视化 ggplot(test.info.df, aes(x = theta, y = prob, colour = reorder(item, diff, mean))) +

  geom_line() +ct response", colour ="Item",

上面将逐项绘制

ggplot(test.info.df, aes(x = theta, y = prob)) + geom_line() +

  scale\_x\_continuous(breaks = seq(-6, 6, 2), limits = c(-4, 4)) +

  scale\_y\_continuous(labels = percent, breaks = seq(0, 1, .

个体参数图

plot(person.parameter(res.rasch))

咱们须要预计的个体能力:

ggplot(raschdat1.long, aes(x = tot, y = ability)) +

  geom\_point(shape = 1, size = 2) + geom\_line() +

  scale\_x\_continuous(breaks = 1:26) + 

  theme_classic()

问题均方拟合

对于 infit MSQ,执行雷同的计算。

eRm:

ggplot(item.fit.df, aes(x = mml, y = cml)) +

  scale\_x\_continuous(breaks = seq(0, 2, .1)) +

  scale\_y\_continuous(breaks = seq(0, 2, .1))

仿佛 CML 的 MSQ 简直总是比多层次模型(MML)的 MSQ 高。

eRm:

来自 CML 的 MSQ 简直总是比来自多层次模型(MML)的 MSQ 高。我应用传统的临界值来辨认不适宜的人。

测试信息

eRm:

plotINFO(res.rasch)

创立 ICC 计算测试信息时,咱们曾经实现了上述工作。对于总体测试信息,咱们须要对每个问题的测试信息进行汇总:

最初,我认为应用规范测量误差(SEM),您能够创立一个置信区间带状图。SEM 是测试信息的反函数。

该图表明,对于一个预计的能力为 - 3 的个体,他们的能力的预计精度很高,他们的理论分数可能在 -1.5 和 -4.5 之间。

通过这一工作,我能够更好地了解该模型,以及其中的一些内容诊断。


 

最受欢迎的见解

1.R 语言 Wald 测验 vs 似然比测验

2.R 语言多元 Logistic 逻辑回归 利用案例

3.matlab 中的偏最小二乘回归(PLSR)和主成分回归(PCR)

4.R 语言泊松 Poisson 回归模型剖析案例

5.R 语言 LME4 混合效应模型钻研老师的受欢迎水平

6.r 语言中对 LASSO 回归,Ridge 岭回归和 Elastic Net 模型实现

7.R 语言用 Rshiny 摸索 lme4 狭义线性混合模型(GLMM)和线性混合模型(LMM)

8. 基于 R 语言的 lmer 混合线性回归模型

9.R 语言里的非线性模型:多项式回归、部分样条、平滑样条、狭义加性模型剖析

正文完
 0