Re: [问题] 利用R模拟受试在某些题目上乱猜的反应

楼主: koai (可笑的自以为...)   2014-02-05 18:13:14
沿用你的程式码, 猜测以下是你要做的事:
Aberr1<<-which(theta <0, arr.ind=T) # 哪些编号代表低能力者
Low <- Data[Aberr1,] # 将低能力者的答题反应取出
for(k in 1:length(Aberr1)){
tmp <- which(Low[k,]==0) # 每一个低能力者,答错的题号
Low[k,tmp] <- sample(c(0,0,0,1),length(tmp),replace=TRUE) # 将答错的题目, 以1/4的猜对机率取代为正确
}
Low # 低能力者作假的作答反应
rowSums(Low-Data[Aberr1,]) # 原本是答错,随机被置换成正确答案(猜对)的个数!
AbData <- Data
AbData[Aberr1,] <- Low
AbData # 作假的作答反应
rowSums(AbData-Data)
※ 引述《btoco (望尽天涯路)》之铭言:
: [问题类型]:
: 程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
: [软件熟悉度]:
: 新手(没写过程式,R 是我的第一次)
: 其实这个分类好难选啊XD
: 我有用过R的一些package进行分析,只是以前资料的产生
: 都是利用Excel来产出,目前想学习如何利用程式来达到此目的。
: [问题叙述]:
: 在试题反应理论(IRT)中,借由受试者的能力参数、试题参数(难度、鉴别度、
: 猜测度)可以估计出该名受试通过某题的机率,再将其与随机产生的乱数进行比较
: ,就可以得到受试可能的答题反应。
: 目前在参考一些书籍与网络资源后,我已经可以产生正确的答题反应了,但接着我
: 想模拟产生低能力者(能力参数低于0)假性高分,随机答对的情况。也就是说这些
: 低能力者原本答错的试题被随机置换为正确(25%的答对率)。
: [程式范例]:
: #正确的答题反应
: theta <<- sort(runif(100,-3,3)) #产生能力参数
: delta <<- sort(runif(15,-2,2)) #产生试题难度参数
: theta.matrix <<- matrix(theta,100,1) %*% matrix(1,1,15) #能力参数矩阵
: delta.matrix <<- matrix(1,100,1) %*% matrix(delta,1,15) #难度参数矩阵
: logs1 <<- theta.matrix-delta.matrix #能力-难度参数矩阵
: probs <<- (1+exp(-logs1))^-1 #各题答对机率
: Random_ <<- runif(100*15) #作为与答对机率比较的随机机率
: Data <<- ifelse(matrix(Random_,100,15) > probs,0,1) #正确的答题反应
: #异常作答反应
: #假性高分:能力值低于0者被挑选出来,其答错试题被随机置换为正确答案。
: Aberr1<<-which(theta <0, arr.ind=T)
: ..................................................................
: 其实到怎么产生作假的作答反应,我就整个卡住了。
: 我目前的想像是利用逻辑判断找出低能力者,再将他们答错的反应挑出后,
: 产生0、1的数列,其中1仅占25%。但怎么做到这样的想像,且还要将这些作答反
: 应置换回原先的正确答题反应中,产生一个假性高分的资料矩阵真的是陷入鬼打墙
: 的循环啊!!!
: 这样的问题,好像很简单,但真的不晓得怎么挑出人与产生这样的虚假反应,
: 再请各位先进与专家协助指点迷津了~
: 我也会继续尝试,感谢啊!!!!
: [关键字]:
: 机率、矩阵置换、资料产生
作者: btoco (望尽天涯路)   2014-02-05 19:46:00
感谢喔,我马上来试看看,有问题再继续向大家讨教~

Links booklink

Contact Us: admin [ a t ] ucptt.com