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