Re: [問題] 利用R模擬受試在某些題目上亂猜的反應

看板R_Language作者 (可笑的自以為...)時間10年前 (2014/02/05 18:13), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
沿用你的程式碼, 猜測以下是你要做的事: 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%。但怎麼做到這樣的想像,且還要將這些作答反 : 應置換回原先的正確答題反應中,產生一個假性高分的資料矩陣真的是陷入鬼打牆 : 的迴圈啊!!! : 這樣的問題,好像很簡單,但真的不曉得怎麼挑出人與產生這樣的虛假反應, : 再請各位先進與專家協助指點迷津了~ : 我也會繼續嘗試,感謝啊!!!! : [關鍵字]: : 機率、矩陣置換、資料產生 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.73.70.8

02/05 19:46, , 1F
感謝喔,我馬上來試看看,有問題再繼續向大家討教~
02/05 19:46, 1F
文章代碼(AID): #1IyWwzWi (R_Language)
文章代碼(AID): #1IyWwzWi (R_Language)