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