使用R语言模拟多面 Rasch 模型下三种评分设计(交叉、嵌套和混合)的参数真值和评分数据。
一、相关设置
评分者数目设为 6,项目数设为 6。
评分等级一共有 4 级,6 名评分者对被试在 6 个项目上的作答进行 1-4 分的等级评分,1 分表示非常差,4 分表示非常好。被试得分从 1 等到 2 等的等级难度为 0.3,从 2 等到 3等的等级难度为 0.6,从 3 等到 4 等的等级难度为 0.9。
被试能力、评分者宽严度和项目难度等参数的分布均为正态分布,参数值从各自的分布中随机抽取。其分布的均值与标准差参数如下。
被试能力的分布参数:均值为 0,标准差为 1。
评分者宽严度的分布参数:均值为 0,标准差为 0.25。
项目难度的分布参数:均值为 0,标准差为 0.25。
二、步骤
(1)根据参数真值服从的分布,随机生成 50名被试的能力参数、评分者的宽严度参数和项目难度参数的真值;
(2)将被试能力参数、项目难度参数和评分者宽严度参数代入多面 Rasch 模型的公式中,计算被试得分的累积概率;
(3)从均匀分布 U(0,1)中抽取随机数,将上述步骤中所得累积概率与随机数进行比较,若该随机数小于第一个累积概率,则令评分等级等于 1,若随机数大于等于第一个累积概率,而小于第二个累积概率,则令评分等级等于 2,以此类推,最后得到交叉设计的评分数据;
(4)将生成的交叉设计的数据,再分别按照选定的嵌套设计和混合设计的要求随机抽取出相应的数据,得到嵌套设计和混合设计的数据;
(5)为减少测验误差,重复 3-4 步骤 100 次,最终该被试数量下的三种设计各有 100 批模拟数据。
#set parameters
sd_p <- 1
sd_i <- 0.1
sd_r <- 0.25
n_p <- 50
n_i <- 6
n_r <- 6
sepdiffi <- c(0.3, 0.6, 0.9)
propro <- c(1:3)
acp <- c(1:4)
#generate corss data
set.seed(1)
parameter = read.delim(file = 'parameters_200.csv', header = F, sep = ',') # parti item rater
ability_p <- parameter[1, 1:50]
difficu_i <- parameter[2, 1:6]
lenienc_r <- parameter[3, 1:6]
sunpara = rbind(
paste(as.character(ability_p), collapse = ","),
paste(as.character(difficu_i), collapse = ","),
paste(as.character(lenienc_r), collapse = ",")
)
pfile = file("parameters_50.csv", "w")
writeLines(sunpara, pfile)
close(pfile)
data_cross_matrix <- array(data = NA, c(n_p, n_i, n_r))
for (filenum in 1:100)
{
for