楼主: teddyao
8860 60

[貝葉斯專著]Bayesian Item Response Modeling(using WinBUGS)   [推广有奖]

  • 0关注
  • 2粉丝

硕士生

83%

还不是VIP/贵宾

-

威望
0
论坛币
2197 个
通用积分
0.3150
学术水平
34 点
热心指数
20 点
信用等级
22 点
经验
1991 点
帖子
9
精华
3
在线时间
37 小时
注册时间
2012-11-15
最后登录
2018-8-29

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币


Bayesian Item Response Modeling:Theory and Applications


Fox, Jean-Paul

2010, XIV, 313p.

  • Serves as a handbook for measurement specialists and a textbook for students on the Bayesian approach to modern test theory.
  • Acts as a guide to the authors’ computer software implementations that will be made available via a website.
  • Includes software implementations available in S-Plus and R, with new functions built on Fortran code linked to the S-plus and R environments, for time efficiency.

This book presents a thorough treatment and unified coverage of Bayesian item response modeling with applications in a variety of disciplines, including education, medicine, psychology, and sociology. Breakthroughs in computing technology have made the Bayesian approach particularly useful for many response modeling problems. Free from computational constraints, realistic and state-of-the-art latent variable response models are considered for complex assessment and survey data to solve real-world problems. The Bayesian framework described provides a unified approach for modeling and inference, dealing with (nondata) prior information and information across multiple data sources. The book discusses methods for analyzing item response data and the complex relationships commonly associated with human response behavior and features

  • Self-contained introduction to Bayesian item response modeling and a coverage of extending standard models to handle complex assessment data
  • A thorough overview of Bayesian estimation and testing methods for item response models, where MCMC methods are emphasized
  • Numerous examples that cover a wide range of application areas, including education, medicine, psychology, and sociology
  • Datasets and software (S+, R, and WinBUGS code) of the models and methods presented in the book are available on www.jean-paulfox.com Bayesian Item Response Modeling is an excellent book for research professionals, including applied statisticians, psychometricians, and social scientists who analyze item response data from a Bayesian perspective. It is a guide to the growing area of Bayesian response modeling for researchers and graduate students, and will also serve them as a good reference. Jean-Paul Fox is Associate Professor of Measurement and Data Analysis, University of Twente, The Netherlands. His main research activities are in several areas of Bayesian response modeling. Dr. Fox has published numerous articles in the areas of Bayesian item response analysis, statistical methods for analyzing multivariate categorical response data, and nonlinear mixed effects models.


本帖隐藏的内容

Bayesian IRT.pdf (4.14 MB, 需要: 25 个论坛币)


http://www.jean-paulfox.com/index.php?option=com_content&view=category&id=5&layout=blog&Itemid=3








二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Modeling response Bayesian winbugs WINBUG available software computer linked

已有 4 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
狂热的爱好者 + 60 精彩帖子
ReneeBK + 100 + 5 + 5 精彩帖子
农村固定观察点 + 3 + 3 + 3 精彩帖子
Nicolle + 60 + 60 精彩帖子

总评分: 经验 + 220  论坛币 + 60  学术水平 + 8  热心指数 + 8  信用等级 + 3   查看全部评分

本帖被以下文库推荐

WinBUGS Programs/Code for various applications

WinBUGS-Code 'Bayesian Item Response Modeling'Chapter 1: Modeling Examinees' Test Results (Data and Code):

(Test Data) and (Two-Parameter Item response Model)

Chapter 2: Mathematics Placement Test (Data (Ordinal Data Modeling, Johnson and Albert, 1999), Code):

(Placement Test Data (WinBUGS))

(Hierarchical Item Prior (WinBUGS))

(Independent Item Prior (WinBUGS))

(Three-Parameter Simple Prior (WinBUGS))

Chapter 4: TIMMS (2007) Dutch Sixth-Graders Math Achievement

(TIMMS 2007, 6th Graders' Math Achievement)

(TIMMS 2007, 6th Graders' Math Achievement Data (include gender))

(TIMMS 2007: Hierarchical Item Prior (WinBUGS))

(TIMMS 2007: Linear Latent Structure (WinBUGS))

ESS: Measuring Political Interest

(ESS Netherlands: Items Measuring Political Interest)

(ESS: Graded Item Response Model (WinBUGS))

Chapter 5: Dutch Primary School Mathematics Test

(Dutch Primary School Leaving Test)

Chapter 8: Rule-Based Item Test

(Rule-Based Items (Exercise 8.1))

(Rule-Based Items (Exercise 8.3))

(One-Parameter Response-Time Model and Item Response (WinBUGS))

(One-Parameter Response-Time Model and Item Responses (WinBUGS))

已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
scure + 5 + 1 + 1 + 1 精彩帖子

总评分: 论坛币 + 5  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

藤椅
琥珀糖 发表于 2014-7-3 21:37:51 |只看作者 |坛友微信交流群

Two-parameter Item Response Model using Splus


  1. #  Estimate Two-Parameter Normal Ogive Model. J.-P. Fox, University of Twente, Augustus 2010.

  2. ## K:: number of items
  3. ## N:: number persons

  4. ## DrawZ. Data Augmentation Z: Normal Ogive Model
  5. ##        DrawTheta. Draw values latent variable theta
  6. ## DrawBeta. Draw values difficulty parameter beta0
  7. ## DrawAlpha. Draw values discrimination parameter alpha0

  8. DrawZ         <- function(alpha0,beta0,theta0,Y){
  9.         N                 <- nrow(Y)
  10.         K                 <- ncol(Y)
  11.         eta                <- t(matrix(alpha0, ncol = N, nrow= K)) * matrix(theta0,ncol=K,nrow=N) - t(matrix(beta0, ncol = N, nrow = K))
  12.         BB                <- matrix(pnorm(-eta),ncol = K, nrow = N)
  13.         u                <- matrix(runif(N*K), ncol = K, nrow = N)
  14.         tt                <- matrix( ( BB*(1-Y) + (1-BB)*Y )*u + BB*Y, ncol = K, nrow = N)
  15.         Z                <- matrix(qnorm(tt),ncol = K, nrow = N) + matrix(eta,ncol = K, nrow = N)
  16.   return(Z)
  17. }

  18. DrawTheta <- function(alpha0,beta0,Z) {
  19. #prior theta N(0,1)
  20.         N                <- nrow(Z)
  21.         K                 <- ncol(Z)
  22.         pvar                <- (sum(alpha0^2)+1)
  23.         thetahat        <- (((Z + t(matrix(beta0,ncol= N, nrow = K))) %*% matrix(alpha0,ncol = 1,nrow = K)))
  24.         mu                <- thetahat/pvar
  25.         theta                <- rnorm(N,mean=mu,sd=sqrt(1/pvar))
  26.         theta                <- (theta - mean(theta))#/sqrt(var(theta))
  27. return(theta)
  28. }


  29. DrawBeta <- function(alpha0,theta0,Z) {
  30. # diffuse prior       
  31.         N                <- nrow(Z)
  32.         K                <- ncol(Z)
  33.         Zp                <- t(matrix(alpha0,nrow= K,ncol = N)) * matrix(theta0,ncol=K,nrow=N) - matrix(Z,ncol=K,nrow=N)
  34.         mu                <- apply(Zp,2,sum)/N
  35.         beta          <- matrix(rnorm(K,mean=mu,sd=sqrt(1/N)),ncol=1,nrow=K)
  36. return(beta)
  37. }

  38. DrawAlpha <- function(beta0,theta0,Z){
  39. # diffuse prior
  40.         N                <- nrow(Z)
  41.         K                <- ncol(Z)
  42.         Zp                <- (matrix(Z,ncol=K,nrow=N) + t(matrix(beta0,nrow=K,ncol=N))) * matrix(theta0,nrow=N,ncol=K)
  43.         mu                 <- apply(Zp,2,sum)/sum(theta0^2)
  44.         alpha         <- matrix(rnorm(K,mean=mu,sd=sqrt(1/sum(theta0^2))),ncol=1,nrow=K)
  45. return(alpha)
  46. }


  47. TWOPNO <- function(Y,XG)
  48. {
  49.         N                 <- nrow(Y)
  50.         K                 <- ncol(Y)

  51. #Initialise
  52.         alpha0         <- matrix(1,ncol = 1, nrow = 1)
  53.         beta0                 <- matrix(0,ncol=1,nrow=1)
  54.         theta0         <- matrix(rnorm(N),ncol=1,nrow=N)
  55.         EAPtheta         <- matrix(0,ncol=1,nrow=N)
  56.         SQtheta         <- matrix(0,ncol=1,nrow=N)
  57.         Malpha         <- matrix(0,ncol=K,nrow=XG)
  58.         Mbeta                 <- matrix(0,ncol=K,nrow=XG)

  59. for(ii in 1:XG){

  60.         Z                                        <- DrawZ(alpha0,beta0,theta0,Y)
  61.         theta0                                <- DrawTheta(alpha0,beta0,Z)
  62.         beta0                                <- DrawBeta(alpha0,theta0,Z)
  63.         alpha0                         <- DrawAlpha(beta0,theta0,Z)       
  64.         EAPtheta                         <- ((ii - 1)*EAPtheta + theta0)/ii
  65.         SQtheta                        <- ((ii - 1)*SQtheta + theta0^2)/ii
  66.         Malpha[ii,1:K]        <- alpha0[1:K]
  67.         Mbeta[ii,1:K]         <- beta0[1:K]
  68. }       
  69.        
  70.         return(list(Malpha,Mbeta,EAPtheta,SQtheta))
  71. }


  72. N        <- 1000
  73. K        <- 20
  74. sim                <-        sim2PNO(N,K)
  75. Y                <-         matrix(sim[[1]],ncol=K,nrow=N)
  76. theta        <-         matrix(sim[[2]],ncol=1,nrow=N)
  77. alpha        <-         matrix(sim[[3]],ncol=1,nrow=K)
  78. beta         <-         matrix(sim[[4]],ncol=1,nrow=K)

  79. out <- TWOPNO(Y,XG=1000)
  80. Malpha <- matrix(out[[1]],ncol=K)
  81. Mbeta <- matrix(out[[2]],ncol =K)
  82. EAPtheta <- out[[3]]
  83. SDtheta <- sqrt(out[[4]] - out[[3]]^2) ### estimate standard deviation theta

  84. plot(theta[1:N],EAPtheta[1:N])
  85. abline(0,1)

  86. ### Use estMLIRT program
  87. S <- c(0,0,0,0)
  88. out2 <- estMLIRT(Y, S, nll=N, XG=1000)
  89. MLIRTout(500,out2)
复制代码


使用道具

板凳
Yoto0282 发表于 2014-7-3 21:49:18 |只看作者 |坛友微信交流群

Estimate Rasch Model using S-Plus

  1. #  Estimate Rasch Model. J.-P. Fox, University of Twente, Augustus 2010.

  2. ## K:: number of items
  3. ## N:: number persons

  4. ## DrawZ. Data Augmentation Z: Normal Ogive Model
  5. ##        DrawTheta. Draw values latent variable theta
  6. ## DrawBeta. Draw values difficulty parameter
  7. ## IRT. Main Program.

  8. DrawZ         <- function(beta0,theta0,Y){
  9.         N                 <- nrow(Y)
  10.         K                 <- ncol(Y)
  11.         eta                <- matrix(theta0,ncol=K,nrow=N) - t(matrix(beta0, ncol = N, nrow = K))
  12.         BB                <- matrix(pnorm(-eta),ncol = K, nrow = N)
  13.         u                <- matrix(runif(N*K), ncol = K, nrow = N)
  14.         tt                <- matrix( ( BB*(1-Y) + (1-BB)*Y )*u + BB*Y, ncol = K, nrow = N)
  15.         Z                <- matrix(qnorm(tt),ncol = K, nrow = N) + matrix(eta,ncol = K, nrow = N)
  16.   return(Z)
  17. }

  18. DrawTheta <- function(beta0,Z) {
  19. #prior theta N(0,1)
  20.         N                <- nrow(Z)
  21.         K                 <- ncol(Z)
  22.         pvar                <- K + 1
  23.         thetahat        <- ((Z + t(matrix(beta0,ncol= N, nrow = K))) %*% matrix(1,ncol = 1,nrow = K))
  24.         mu                <- thetahat/pvar
  25.         theta        <- matrix(rnorm(N,mean=mu,sd=sqrt(1/pvar)),ncol=1,nrow=N)
  26.   return(theta)
  27. }


  28. DrawBeta <- function(theta0,Z) {
  29. # diffuse prior       
  30.         N        <- nrow(Z)
  31.         K        <- ncol(Z)
  32.         Zp        <- matrix(theta0,ncol=K,nrow=N) - matrix(Z,ncol=K,nrow=N)
  33.         mu        <- apply(Zp,2,sum)/N
  34.         beta <- matrix(rnorm(K,mean=mu,sd=sqrt(1/N)),ncol=1,nrow=K)
  35. return(beta)
  36. }


  37. IRT <- function(Y,XG)
  38. {

  39. ## Initialise

  40. N        <- nrow(Y)
  41. K        <- ncol(Y)

  42. beta0 <- matrix(0,ncol=1,nrow=1)
  43. theta0 <- matrix(rnorm(N),ncol=1,nrow=N)
  44. EAPtheta <- matrix(0,ncol=1,nrow=N)
  45. Mbeta <- matrix(0,ncol=K,nrow=XG)

  46. for(ii in 1:XG){

  47.         Z        <-DrawZ(beta0,theta0,Y)
  48.         theta0<-DrawTheta(beta0,Z)
  49.         beta0        <-DrawBeta(theta0,Z)
  50.                
  51.         EAPtheta <- ((ii - 1)*EAPtheta + theta0)/ii
  52.         Mbeta[ii,1:K] <- beta0[1:K]
  53. }       
  54.        
  55. return(list(Mbeta,EAPtheta))
  56. }


  57. ## Generate data
  58. N= 1000
  59. K= 10
  60. sim        <-        simRasch(N,K)
  61. Y        <-         matrix(sim[[1]],ncol=K,nrow=N)
  62. theta        <-         matrix(sim[[2]],ncol=1,nrow=N)
  63. beta         <-         matrix(sim[[3]],ncol=1,nrow=K)


  64. out <- IRT(Y,XG=1000)## run program

  65. apply(out[[1]],2,mean) ## estimate item difficulties
  66. plot(sim[[2]],out[[2]]) ## plot simimulated theta and estimated theta


  67. ### Use estMLIRT program
  68. S <- c(0,0,0,0)
  69. out1 <- estMLIRT(Y, S, nll=N, XG=1000, rasch=1)
  70. MLIRTout(500,out1)
复制代码


使用道具

报纸
wolfsword 发表于 2014-7-3 22:38:35 |只看作者 |坛友微信交流群

Estimate Three-Parameter Normal Ogive Model using Splus


  1. #  Estimate Three-Parameter Normal Ogive Model. J.-P. Fox, University of Twente, Augustus 2010.

  2. ## K:: number of items
  3. ## N:: number persons

  4. ## DrawZ. Data Augmentation Z: Normal Ogive Model
  5. ## DrawS. Data Augmentation S: Knows the correct answes /guess the item correct
  6. ##        DrawTheta. Draw values latent variable theta0
  7. ## DrawBeta. Draw values difficulty parameter beta0
  8. ## DrawAlpha. Draw values discrimination parameter alpha0
  9. ## DrawC. Draw values guessing parameter guess0

  10. DrawZ         <- function(alpha0,beta0,theta0,S){
  11.         N                 <- nrow(S)
  12.         K                 <- ncol(S)
  13.         eta                <- t(matrix(alpha0, ncol = N, nrow= K)) * matrix(theta0,ncol=K,nrow=N) - t(matrix(beta0, ncol = N, nrow = K))
  14.         BB                <- matrix(pnorm(-eta),ncol = K, nrow = N)
  15.         u                <- matrix(runif(N*K), ncol = K, nrow = N)
  16.         tt                <- matrix( ( BB*(1-S) + (1-BB)*S )*u + BB*S, ncol = K, nrow = N)
  17.         Z                <- matrix(qnorm(tt),ncol = K, nrow = N) + matrix(eta,ncol = K, nrow = N)
  18.   return(Z)
  19. }

  20. DrawBeta <- function(alpha0,theta0,Z) {
  21. # diffuse prior       
  22.         N                <- nrow(Z)
  23.         K                <- ncol(Z)
  24.         Zp                <- t(matrix(alpha0,nrow= K,ncol = N)) * matrix(theta0,ncol=K,nrow=N) - matrix(Z,ncol=K,nrow=N)
  25.         mu                <- apply(Zp,2,sum)/N
  26.         beta          <- matrix(rnorm(K,mean=mu,sd=sqrt(1/N)),ncol=1,nrow=K)
  27. return(beta)
  28. }

  29. DrawAlpha <- function(beta0,theta0,Z){
  30. # diffuse prior
  31.         N                <- nrow(Z)
  32.         K                <- ncol(Z)
  33.         Zp                <- (matrix(Z,ncol=K,nrow=N) + t(matrix(beta0,nrow=K,ncol=N))) * matrix(theta0,nrow=N,ncol=K)
  34.         mu                 <- apply(Zp,2,sum)/sum(theta0^2)
  35.         alpha         <- matrix(rnorm(K,mean=mu,sd=sqrt(1/sum(theta0^2))),ncol=1,nrow=K)
  36. return(alpha)
  37. }


  38. DrawS <- function(alpha0,beta0,guess0,theta0,Y){
  39.         N                <- nrow(Y)
  40.         K                <- ncol(Y)
  41.         eta         <- t(matrix(alpha0,ncol=N,nrow=K)) * matrix(theta0,ncol=K,nrow=N)-t(matrix(beta0,nrow=K,ncol=N))
  42.         eta         <- matrix(pnorm(eta),ncol=K,nrow=N)
  43.         probS        <- eta/(eta + t(matrix(guess0,nrow=K,ncol=N))*(matrix(1,ncol=K,nrow=N)-eta))       
  44.         S                <- matrix(runif(N*K),ncol=K,nrow=N)
  45.         S                <- matrix(ifelse(S > probS,0,1),ncol=K,nrow=N)
  46.         S                <- S*Y
  47. return(S)
  48. }

  49. DrawC <- function(S,Y){
  50. # Informative beta prior: c ~ Beta(P1,P2)
  51.         P1                 <- 2
  52.         P2                 <- 6
  53.         N                <- nrow(Y)
  54.         K                <- ncol(Y)
  55.         Q1                 <- P1 + apply((matrix(1,ncol=K,nrow=N)-S)*Y,2,sum)
  56.         Q2                <- P2 + apply((matrix(1,ncol=K,nrow=N)-S),2,sum) - Q1
  57.         guess        <- rbeta(K,Q1,Q2)
  58. return(guess)
  59. }


  60. THREEPNO <- function(Y,XG)
  61. {
  62.         N                 <- nrow(Y)
  63.         K                 <- ncol(Y)


  64. #Initialise
  65.         alpha0 <- matrix(1,ncol = 1, nrow = 1)
  66.         beta0 <- matrix(0,ncol=1,nrow=1)
  67.         guess0 <- matrix(0,ncol=1,nrow=1)
  68.         theta0 <- rnorm(N)
  69. #storage               
  70.         Malpha <- matrix(0,ncol=K,nrow=XG)
  71.         Mbeta <- matrix(0,ncol=K,nrow=XG)
  72.         Mguess <- matrix(0,ncol=K,nrow=XG)

  73. for(ii in 1:XG){

  74.         S                                        <- DrawS(alpha0,beta0,guess0,theta0,Y)
  75.         Z                                        <- DrawZ(alpha0,beta0,theta0,S)
  76.         beta0                                <- DrawBeta(alpha0,theta0,Z)
  77.         alpha0                         <- DrawAlpha(beta0,theta0,Z)       
  78.         guess0                         <- DrawC(S,Y)
  79.         Malpha[ii,1:K]        <- alpha0[1:K]
  80.         Mbeta[ii,1:K]         <- beta0[1:K]
  81.         Mguess[ii,1:K]        <- guess0[1:K]
  82. }       
  83.        
  84. return(list(Malpha,Mbeta,Mguess))
  85. }


  86. ## simulate data
  87. N                 = 1000
  88. K                = 20
  89. sim                <-        THREEPNO(N,K)
  90. Y                <-         matrix(sim[[1]],ncol=K,nrow=N)
  91. theta        <-         matrix(sim[[2]],ncol=1,nrow=N)
  92. alpha        <-         matrix(sim[[3]],ncol=1,nrow=K)
  93. beta         <-         matrix(sim[[4]],ncol=1,nrow=K)
  94. guess         <-         matrix(sim[[5]],ncol=1,nrow=K)

  95. out                 <- THREEPNO(Y,XG=5000)
  96. Malpha         <- matrix(out[[1]],ncol=K)
  97. Mbeta                 <- matrix(out[[2]],ncol=K)
  98. Mguess         <- matrix(out[[3]],ncol=K)
复制代码


使用道具

Simulate Responses according to the Rasch Model using S-Plus


  1. ##  Simulate Responses according to the Rasch Model. J.-P. Fox, University of Twente, Augustus 2010.

  2. # normal ogive or logistic Rasch Model

  3. # K: number of items  
  4. # N: number of items
  5. # theta : latent variable
  6. # beta : difficulty parameter       


  7. simRasch        <-        function(N,K)
  8.        
  9. {
  10.         theta                <-        rnorm(N)
  11.         theta                <-         (theta - mean(theta))/sqrt(var(theta))
  12.         beta                  <-        rnorm(K,sd=.5)
  13.         beta                  <-        beta - mean(beta)
  14.         par                <-        theta %*% matrix(1,nrow=1,ncol=K) - t( matrix(beta,nrow=K,ncol=N) )
  15.         #Normit
  16.         probs                <-        matrix(pnorm(par),ncol = K,nrow = N)       
  17.         #Logit         
  18.         #probs        <-        matrix(1/(1+exp(-par)),ncol = K,nrow = N)       
  19.         Y              <-        matrix(runif(N*K),nrow = N, ncol = K)
  20.         Y                <-        ifelse(Y < probs,1,0)
  21.         return(list(Y,theta,beta))
  22. }

  23. #example
  24. N = 1000
  25. K= 10
  26. sim        <-        simRasch(N,K)

  27. Y        <-         matrix(sim[[1]],ncol=K,nrow=N)                #simulated responses
  28. theta        <-         matrix(sim[[2]],ncol=1,nrow=N)        #simulated theta
  29. beta         <-         matrix(sim[[3]],ncol=1,nrow=K)        #simulated beta
复制代码


使用道具

7
oink-oink 发表于 2014-7-3 23:02:27 |只看作者 |坛友微信交流群

使用道具

8
寒烟细雨 发表于 2014-7-4 00:23:53 来自手机 |只看作者 |坛友微信交流群
顶一个

使用道具

9
sunyiping 发表于 2014-7-4 00:33:54 |只看作者 |坛友微信交流群
学习学习!!!

使用道具

10
ReneeBK 发表于 2014-7-4 01:02:09 |只看作者 |坛友微信交流群
Bayesian Item Response Modeling:Theory and Applications

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 13:13