第五章 結論與建議
第四節 未來研究方向
國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
第四節 未來研究方向
在本研究的模擬設計中,均假設潛在特質來自常態分配,然而潛在特質的 分配亦可能影響到實務上使用多元計分總分或二元計分總分來排序受試者潛 在特質的整體正確率,以及使用多元計分總分是否比使用二元計分總分在排序 受試者的潛在特質上更加準確。
此外,本研究在衡量對受試者潛在特質的排序上,均考量全體受試者兩兩 配對間的排序,並沒有考慮若研究目的是將全體受試者僅分為潛在特質高與潛 在特質低兩群受試者的情況。
另一方面,本研究僅將探討的焦點放在多元計分試題反應具有 MLR 性質 的情況下,因此將模型設定於假設條件十分嚴格的 PCM,然而實務上使用摩 根量表分析時,極少試題可以完全滿足 PCM 的假設。而若試題確實都不違反 PCM 的假設條件時,我們也建議研究者可以考慮使用有母數試題反應理論的 方法進行分析,以獲得相關參數與每位受試者潛在特質的估計值,而不像在無 母數試題反應理論中僅能獲得受試者潛在特質在排序上的估計。
因此,為讓研究更符合實務的狀況,並能將研究結果更加推廣,未來亦可 朝其它方向進行研究:
1. 假設潛在特質來自其它分配,例如等距、右偏或左偏分配。
2. 在多元計分試題中,當研究目的是找出潛在特質高的該群受試者,則欲找到 的受試者人數不同時,是否依然呈現使用多元計分總分會比使用二元計分總 分在排序受試者潛在特質上更加準確。
3. 當多元計分試題反應來自其它有母數多元計分試題反應理論模型下,甚至是 多元計分試題僅滿足無母數試題反應理論模型時,即使沒有 MLR 性質或 SOL 性質的保證,實務上多元計分總分與二元計分總分對於受試者潛在特
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
93
質的排序,其整體正確率範圍為何,是否依然呈現使用多元計分總分會有較 好的表現,而差異有多大。
4. 使用條件正確率作為評估目前的總分
X
與其它定義方式的總分,如加權總 分,在排序受試者潛在特質正確程度的高低。‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y 參考文獻
Han, K. T. (2007). WinGen: Windows software that generates IRT parameters and item responses. Applied Psychological Measurement, 31(5), 457-459.
Hemker, B. T., Sijtsma, K., Molenaar, I. W., & Junker, B. W. (1996). Polytomous IRT models and monotone likelihood ratio of the total score. Psychometrika, 61(4), 679–693.
Huynh, H. (1994). A new proof for monotone likelihood ratio for the sum of independent Bernoulli random variables. Psychometrika, 59(1), 77-79.
Masters, G. N. (1982). A Rasch model for partial credit scoring. Psychometrika, 47(2), 149-174.
Sijtsma, K., & Molenaar, I. W. (Eds.). (2002). Introduction to nonparametric item response theory (Vol. 5). Sage.
Sijtsma, K., & Verweij, A. C. (1992). Mokken scale analysis: Theoretical considerations and an application to transitivity tasks. Applied Measurement in Education, 5(4), 355-373.
Stochl, J., Jones, P. B., & Croudace, T. J. (2012). Mokken scale analysis of mental health and well-being questionnaire item responses: a non-parametric IRT method in empirical research for applied health researchers. BMC Medical Research Methodology, 12(1), 74.
Van der Ark, L. A. (2005). Stochastic ordering of the latent trait by the sum score under various polytomous IRT models. Psychometrika, 70(2), 283–304.
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
95
Van der Ark, L.A. (2007). Mokken scale analysis in R. Journal of Statistical Software, 20(11), 1–19.
Van der Ark, L. A. (2012). New developments in Mokken scale analysis in R. Journal of Statistical Software, 48(5), 1–27.
Van der Ark, L. A., & Bergsma, W. P. (2010). A note on stochastic ordering of the latent trait using the sum of polytomous item scores. Psychometrika, 75(2), 272–
279.
Van Schuur, W. (2011). Ordinal item response theory: Mokken scale analysis (Vol.
169). SAGE Publications.
Watson, R., van der Ark, L. A., Lin, L. C., Fieo, R., Deary, I. J., & Meijer, R. R.
(2012). Item response theory: How Mokken scaling can be used in clinical practice. Journal of Clinical Nursing, 21(19pt20), 2736-2746.
‧
###定義函數 sim.poly.answers(試題數,每題反應類別數,受試者人數,階段難度參數分配)
###以產生來自 PCM 的試題回答反應
sim.poly.answers=function(items,categories,respondents,distbu){
theta=rnorm(respondents) #假設潛在特質為標準常態分配 beta.jx=function(nitem,ncategory,dist="unif"){
if (dist=="unif")
{matrix(qunif((1:(nitem*(ncategory-1)))/(nitem*(ncategory-1)+1),-3,3),nitem,ncategory-1,T)}
else {if (dist=="norm")
{matrix(qnorm((1:(nitem*(ncategory-1)))/(nitem*(ncategory-1)+1)),nitem,ncategory-1,T)}
else {if (dist=="rightskew")
{matrix(qnorm(0.5+0.5*(1:(nitem*(ncategory-1)))/(nitem*(ncategory-1)+1),-3,2),nitem, ncategory-1,T)}
#其中 dist=c("unif","norm","rightskew","leftskew"),為參數分佈狀況,預設為 unif betajx=beta.jx(items,categories,distbu)
fjx.theta.m=NULL fjx.theta=NULL
for (i in 1:respondents) {
fjx=cbind(c(rep(1,items)),(1+exp(betajx-theta[i]))^-1) fjx.theta=c(fjx.theta,list(fjx))
fjx.theta.m=rbind(fjx.theta.m,fjx) }
g1=apply(fjx.theta.m,1,list)
g2=lapply(g1,function(x) rep(x,each=categories))
g3=lapply(g2,function(x) matrix(unlist(x),categories,categories,T)) u.fjx.theta=lapply(g3,function(x) 1-x)
a.1=mapply("*",u.fjx.theta,lapply(u.fjx.theta,function(x) upper.tri(x))) b.1=mapply("*",g3,lapply(g3,function(x) lower.tri(x,diag=TRUE))) y=a.1+b.1
pi.jx.2=NULL
for (i in 1:(respondents*items)) {
pi.jx.1=matrix(y[,i],categories,categories) pi.jx.2=rbind(pi.jx.2,pi.jx.1)
}
pi.jx=matrix(apply(pi.jx.2,1,prod),respondents*items,categories,TRUE)
pi.jx.theta=pi.jx/apply(pi.jx,1,sum) #獲得每位受試者回答某題(列)為某類別(行)的機率
‧
answers.p=matrix(apply(pi.jx.theta,1,function(x) rmulti(x))-1,respondents,items,T) sim.p=cbind(theta,answers.p)
return(sim.p)
list.f=list(x[,((items+1)*i-items):((items+1)*i)]) list.n=c(list.n,list.f)}
comb=function(respondents,categories,theta,answers.p){
answers.p=as.matrix(answers.p)
test.score.p=apply(answers.p,1,sum) #計算受試者的多元計分總分 poly.to.dich=function(x,num1,num2){
if (length(num1) != length(num2)) {
test.score.d=matrix(,respondents,categories-1) colnames(test.score.d)=matrix(,1,categories-1) for (i in 1:(categories-1)){
test.score.d[,i]=apply(poly.to.dich(answers.p,0:(categories-1),c(rep(0,i),rep(1,categories-i))), 1,sum)
colnames(test.score.d)[i]=paste(c(rep(0,i),rep(1,categories-i)),collapse="") } #計算受試者每種轉化方式的二元計分總分
cbind(theta,test.score.d,test.score.p) }
p.d.list=lapply(list.n, function(x) comb(respondents,categories,x[1],x[2:(items+1)])) correct.4=function(x,categories,respondents){
all.d.p=matrix( ,categories-1,13)
colnames(all.d.p)=c("all.d","all.p","ind.d","ind.p","d.index1","p.index1","numerator.4.d", "denominator.4.d","numerator.4.p","denominator.4.p","numerator.4.all.d","numerator.4.all.p", "denominator.4.all")
for (i in 2:categories){
test.score.d=x[,i]
test.score.p=x$test.score.p theta=x$theta
‧
forsort=cbind(theta,test.score.d,test.score.p) match.d.p=forsort[order(forsort[,1]),]
denominator.4.all=0 #兩種總分共同可排序的受試者配對數
if (match.d.p[j,2]<match.d.p[k,2]){numerator.4.all.d=numerator.4.all.d+1}
if (match.d.p[j,3]<match.d.p[k,3]){numerator.4.all.p=numerator.4.all.p+1}
}
if (match.d.p[j,3]<match.d.p[k,3]){numerator.4.p=numerator.4.p+1}
}}
} }
all.d=numerator.4.all.d/denominator.4.all all.p=numerator.4.all.p/denominator.4.all ind.d=numerator.4.d/denominator.4.d ind.p=numerator.4.p/denominator.4.p
d.index1=all.d*denominator.4.all/(denominator.4.all+denominator.4.d) +ind.d*denominator.4.d/(denominator.4.all+denominator.4.d) p.index1=all.p*denominator.4.all/(denominator.4.all+denominator.4.p) +ind.p*denominator.4.p/(denominator.4.all+denominator.4.p)
all.d.p[i-1,]=cbind(all.d,all.p,ind.d,ind.p,d.index1,p.index1,numerator.4.d,denominator.4.d,
numerator.4.p,denominator.4.p,numerator.4.all.d,numerator.4.all.p,denominator.4.all) }
all.d.p }
y=lapply(p.d.list, function(x) correct.4(x,categories,respondents)) output=NULL