install.packages("eRm", repos = "https://mirrors.ustc.edu.cn/CRAN/")
library(eRm)
#使用setwd()函数设置工作目录和文件夹。
#记得提前设置好文件夹,路径中的所有文件夹都应该存在,而且·dat文件应该在这个文件下
setwd("C://Users//18979//Desktop//学习资料//IRT//Data_Files//Data Files")
#默认情况下,此函数“read.table()”创建一种称为数据框的R对象,该数据框是用于存储数据的二维数组,类似于电子表格。
#在执行该行之后,从“c2_rasch.dat”读取的数据以名称“ddd”存储为R数据框对象。
ddd<-read.table("c2_rasch.dat")
#dim()”函数提供了函数中提供的对象的维度,即行数和列数,在本例中为“ddd”。
#这里提供了执行“dim()”命令的结果。第一个数字“500”表示“ddd”数据框中的500行,或500名考生,而第二个数字“20”在这种情况下表示20个列变量或项目。
dim(ddd)
#head()”函数用于显示R数据对象的前六行。“ddd”对象的头部在这里呈现。
#前六行是六名考生的响应数据。“V1”到“V20”列是数据文件读入R时的默认变量名,对应项目1到20。
head(ddd)
#“names()”函数提供了作为参数提供的对象中列变量的标签或名称-在本例中是数据帧“ddd”
names(ddd)
#paste()”函数根据提供的参数创建一系列字符。
#在本例中,我们创建了一系列以“MC”开头的字符,并添加了值1、2等,直到20个字符,它们之间没有分隔。
new.name <- paste("MC", 1:20, sep="")
new.name
#length()”函数提供了R数据对象中元素的数量。“new.name“被创建为具有20个字符值(20个项目),因为数据帧“ddd”有20个变量或项目。
length(new.name)
#“ddd”中的变量名(项目标签)使用“<-”赋值运算符替换为“new.name”中的字符值。
names(ddd) <- new.name
#要检查新的“ddd”变量名,请使用“names()”命令
names(ddd)
#RM() 函数是 eRm 包中用于拟合 Rasch 模型的核心函数,它通过条件极大似然估计 CML 方法估计项目难度和被试能力参数。拟合结果可以用于进一步的分析,如项目分析、被试能力评估等。
#RM() 函数返回一个包含 Rasch 模型拟合结果的对象。这个对象中包含了估计的项目难度参数、被试能力参数、拟合优度统计量等信息
mod.R<-RM(ddd)
#检查模型是否收敛
mod.R$conv
#提取并格式化项目难度参数及其标准误。
#请求估计的项目难度和标准误差,四舍五入到小数点后三位。
#标题为“[,1]”的第一个数字列是项目难度估计值,标题为“[,2]”的第二个数字列是标准误差。输出指示第一个项目的估计难度为 0 475,标准误差为0.099。
#输出结果中含有的beta 表示项目难度参数
#mod.R$betapar 提取了项目难度参数。
#-mod.R$betapar 对难度参数取负号,使其更符合直观理解(正数表示更难,负数表示更容易)。
#cbind(-mod.R$betapar, mod.R$se.beta) 将难度参数和标准误按列合并成一个矩阵。
#round(..., 3) 将结果四舍五入到小数点后 3 位。
round (cbind(-mod.R$betapar, mod.R$se.beta), 3)
#提取并格式化项目难度参数的置信区间。
#confint(mod.R): 计算项目难度参数的置信区间(默认是 95% 置信区间)。
#confint(mod.R)[,2]: 提取置信区间的上限。
#confint(mod.R)[,1]: 提取置信区间的下限。
#-confint(mod.R)[,2] 和 -confint(mod.R)[,1]: 对置信区间的上下限取负号,使其与难度参数的方向一致。
round (cbind(-confint(mod.R)[,2], -confint(mod.R)[,1]), 3)
#生成模型的详细摘要信息。
#生成的结果中含有以下的参数:
#Estimate: 项目难度参数的估计值。
#Std. Error: 标准误。
#lower CI: 置信区间的下限。
#upper CI: 置信区间的上限。
summary(mod.R)
#plotICC()是eRm包中的一个函数,用于绘制项目特征曲线
#ICC是项目反应理论(IRT)中的一个重要工具。用于可视化项目(如考试题目)的反应概率与被试能力之间的关系。
#第一个参数是包含拟合IRF对象的对象;第二个参数指定为其构建ICC的项目。
#在本例中,“1:4”请求项目1到4的基于模型的ICC图。其他项目可以指定为函数的第二个参数
#曲线越靠右,项目越难。曲线越靠左,项目越容易。
#斜率越大,表示项目的区分度越高(能够更好地区分高能力和低能力被试)
#输出图形横轴表示被试能力,纵轴表示正确回答的概率
for (i in 1:4) {
plotICC(mod.R, i)
} # ICCs for items
# 循环绘制第 1、3、5 个项目的 ICC 曲线,并叠加经验 ICC 曲线
#empICC = list("raw") 表示基于原始数据的反应概率绘制经验 ICC 曲线。
#理论 ICC 曲线:基于 Rasch 模型的理论曲线。
#经验 ICC 曲线:基于原始数据的反应概率(以点的形式显示)。
for (i in c(1, 3, 5)) {
plotICC(mod.R, item.subset = i, empICC = list("raw"))
}
#人的潜在特质或能力得分估计
#person.parameter(mod.R):从 mod.R 中提取被试的能力参数。
p.R<-person.parameter(mod.R)
#p.R”对象包含与每个数字正确分数相对应的估计θ。
#第一个数字列是“原始分数”。第二个数字列是ML人员能力“估计”。第三个数字列是标准误差“标准误差”。
p.R
#p.R$thetapar$NAgroup1 以数值向量的形式返回估计的特质分数,也就是每个被试的能力参数估计值。
#p.R$se.theta$Nagroup1 以数值向量的形式返回每个被试能力参数估计的标准误。
round(cbind(p.R$thetapar$NAgroup1, p.R$se.theta$Nagroup1), 3)
#plot(p.R)”生成一个图,其中x轴是个人原始分数,y轴是个人能力估计。
#该图描绘了原始分数和能力估计之间的非线性关系
plot(p.R)
#plotPImap() 函数用于绘制人员 - 项目映射图(Person - Item Map,也称为 Wright 图)
#在这张地图中,顶部面板显示了个人能力估计的直方图
#下图水平轴上的点是项目困难的位置
plotPImap(mod.R)
#模型-数据拟合
#LRtest() 函数以 mod.R 作为输入参数,对拟合的 Rasch 模型进行似然比检验
#生成LR内容表示似然函数比
#df表示自由度
#p-value检验的p值,用于判断是否拒绝原假设,本应用程序中的p值为0.468,在标称显著性水平a = 0.05下不显著
alrt<-LRtest(mod.R)
alrt
#MLoef()主要用于进行莫肯量表分析中的Loevinger 系数计算
#Loevinger 系数是衡量项目之间同质性的一个指标。
#取值范围在 0 到 1 之间,系数越接近 1,表示项目之间的同质性越强,更符合单维性假设
#splitcr = "median" 表示使用被试能力得分的中位数作为分组标准,将被试分为两组:
#能力得分高于中位数的一组和能力得分低于中位数的一组。
MLoef(mod.R, splitcr = "median")
#Waldtest() 进行的是 Wald 检验,
#用于检查 Rasch 模型中的 项目参数是否显著偏离零(即是否有证据表明某些项目的难度参数与零显著不同)。
#z-statistic:Wald 统计量,即标准化的参数估计值(估计值除以标准误)。
#p-value:p 值,用于检验该项目难度参数是否显著不同于零(通常假设显著性水平 α = 0.05)。
Waldtest(mod.R)
#plotGOF(alrt, conf=list()) 主要用于检查 Rasch 模型的拟合优度,通过残差可视化评估数据与模型的匹配程度
#X 轴:组别。Y 轴:残差值(拟合优度的偏差)。
#数据点:每个点代表一个组的数据拟合情况。
#参考线:如果残差分布较均匀,且数据点围绕 0 随机分布,则表示 模型拟合较好。如果数据点明显偏离 0,可能说明模型在某些区间拟合较差
#conf = list():置信区间参数
plotGOF(alrt, conf=list())
#itemfit()用于 评估 Rasch 模型中各个试题(项目)的适配度(Item Fit)。
#主要用于检测是否存在 异常试题(即不符合单维性假设的项目)。
#Chisq 卡方检验值,用于衡量试题是否符合模型
#df 自由度,一般等于样本数减去估计参数数
#p-value 卡方检验的 p 值,如果 p > 0.05,表示该题目 适配 Rasch 模型
#Outfit MSQ 离群适配均方误差,用于检查极端受试者的异常情况
#Infit MSQ 信息加权均方误差,用于检查项目是否符合 Rasch 假设
#Outfit MSQ & Infit MSQ理想范围:0.7 ~ 1.3(通常可接受)0.5 ~ 1.5(有些研究认为)
#Outfit t 离群适配 t 统计量,用来评估 Outfit MSQ 是否显著偏离
#Infit t 信息加权 t 统计量,用来评估 Infit MSQ 是否显著偏离
#如果 t 统计量绝对值大于 2,说明该项目可能存在不适配问题
#Discrim 区分度(Discrimination),表示该试题对不同能力水平的考生的区分能力
#表示试题的区分能力,通常:>0.4 表示试题区分能力较强0.2 ~ 0.4 表示试题区分能力一般<0.2 表示试题可能无法有效区分考生能力
itemfit(p.R)
#plotICC()”函数用于图形检查,其中将经验ICC与基于模型的ICC进行比较。
for (i in c(1, 2, 3, 4)) {
plotICC(mod.R, item.subset = i, empICC = list("raw"))
}
# 非参数性检验nonparameteric test
#用 as.matrix(ddd) 转换为矩阵 X
X<-as.matrix(ddd)
#NPtest()进行非参数性检验,用于检测数据是否符合某种假设(如独立性、分布差异等)。
#X:数据矩阵。n=500:表示执行 500 次重抽样
#T11 是在计算实际试题相关性和模型预测相关性之间的偏差之和。
NPtest(X, n=500, method = "T11")
#personfit()检查个体拟合度(Person Fit),用于评估受试者的回答模式是否符合项目反应理论(IRT)模型。
personfit(p.R)
#项目信息曲线和测试信息曲线图
#plotINFO()”函数生成项目和测试信息曲线。
#顶部面板提供所有项目信息曲线,底部面板显示测试信息曲线。Rasch模型项目信息曲线的形状相同,因为曲线仅在其
plotINFO(mod.R)
#plotINFO()”函数可以接受指定所显示图的详细信息的附加参数。如果只需要TIC,则可以提供“type ='item'”参数
plotINFO(mod.R, type="item")
相关文件可以问我要哦