全文链接: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 语言里的非线性模型:多项式回归、部分样条、平滑样条、狭义加性模型剖析