11# # File Name: tam_linking_2studies.R
2- # # File Version: 0.224
2+ # # File Version: 0.246
33
44tam_linking_2studies <- function ( B1 , AXsi1 , guess1 , B2 , AXsi2 , guess2 , theta ,
5- wgt , type , M1 = 0 , SD1 = 1 , M2 = 0 , SD2 = 1 , fix.slope = FALSE , pow_rob_hae = 1 )
5+ wgt , type , M1 = 0 , SD1 = 1 , M2 = 0 , SD2 = 1 , fix.slope = FALSE , pow_rob_hae = 1 ,
6+ eps_rob_hae = 1e-4 )
67{
78 CALL <- match.call()
89 # --- preliminaries
910 TP <- nrow(theta )
1011 K <- ncol(AXsi1 )
1112 I <- nrow(AXsi1 )
13+
1214 # --- define linking function
13- linking_criterion_2studies <- function (x ){
15+ linking_criterion_2studies <- function (x )
16+ {
1417 # -- study 1
1518 probs1 <- tam_irf_3pl(theta = theta , AXsi = AXsi1 , B = B1 , guess = guess1 )
1619 probs1 [ is.na(probs1 ) ] <- 0
@@ -23,9 +26,11 @@ tam_linking_2studies <- function( B1, AXsi1, guess1, B2, AXsi2, guess2, theta,
2326 probs2 [ is.na(probs2 ) ] <- 0
2427 # -- discrepancy function
2528 crit <- tam_linking_irf_discrepancy(probs1 = probs1 , probs2 = probs2 , wgt = wgt ,
26- type = type , pow_rob_hae = pow_rob_hae )
29+ type = type , pow_rob_hae = pow_rob_hae ,
30+ eps_rob_hae = eps_rob_hae )
2731 return (crit )
2832 }
33+
2934 # --- optimization
3035 lower <- c(- Inf ,- Inf )
3136 upper <- c(Inf ,Inf )
@@ -35,32 +40,33 @@ tam_linking_2studies <- function( B1, AXsi1, guess1, B2, AXsi2, guess2, theta,
3540 upper [1 ] <- 1 + eps
3641 }
3742 optim_result <- stats :: optim( par = c(1 ,0 ), fn = linking_criterion_2studies ,
38- method = " L-BFGS" , lower = lower , upper = upper )
43+ method = ' L-BFGS' , lower = lower , upper = upper )
3944 # --- transformations
4045 trafo_items <- optim_result $ par
41- names(trafo_items ) <- c(" a " , " b " )
46+ names(trafo_items ) <- c(' a ' , ' b ' )
4247 trafo_persons <- 1 / trafo_items
43- trafo_persons [" b " ] <- - trafo_items [" b " ] / trafo_items [" a " ]
48+ trafo_persons [' b ' ] <- - trafo_items [' b ' ] / trafo_items [' a ' ]
4449
45- # --- transformed distribution
50+ # --- compute transformed distribution
4651 M_SD <- tam_linking_2studies_create_M_SD( M1 = M1 , SD1 = SD1 , M2 = M2 , SD2 = SD2 ,
4752 trafo_persons = trafo_persons )
4853 # --- transformations of item parameters
4954 # X=0: 0
50- # X=1 : B_i1 * (a*TH + b) + Axsi1_i
51- # X=2 : B_i2 * (a*TH + b) + Axsi2_i
55+ # X=1L : B_i1 * (a*TH + b) + Axsi1_i
56+ # X=2L : B_i2 * (a*TH + b) + Axsi2_i
5257 # ...
5358 B2_trans <- B2
5459 AXsi2_trans <- AXsi2
55- for (kk in 2 : K ){
56- B2_trans [,kk ,] <- B2 [,kk ,] * trafo_items [" a " ]
57- AXsi2_trans [,kk ] <- B2 [,kk ,] * trafo_items [" b " ] + AXsi2 [,kk ]
60+ for (kk in 2L : K ){
61+ B2_trans [,kk ,] <- B2 [,kk ,] * trafo_items [' a ' ]
62+ AXsi2_trans [,kk ] <- B2 [,kk ,] * trafo_items [' b ' ] + AXsi2 [,kk ]
5863 }
5964 # --- OUTPUT
60- res <- list ( optim_result = optim_result , TP = TP , I = I , M_SD = M_SD , trafo_items = trafo_items ,
61- trafo_persons = trafo_persons , B1 = B1 , AXsi1 = AXsi1 , B2 = B2 , AXsi2 = AXsi2 ,
62- B2_trans = B2_trans , AXsi2_trans = AXsi2_trans , guess1 = guess1 , guess2 = guess2 ,
63- type = type , theta = theta , wgt = wgt , CALL = CALL )
64- class(res ) <- " tam_linking_2studies"
65+ res <- list ( optim_result = optim_result , TP = TP , I = I , M_SD = M_SD ,
66+ trafo_items = trafo_items , trafo_persons = trafo_persons ,
67+ B1 = B1 , AXsi1 = AXsi1 , B2 = B2 , AXsi2 = AXsi2 ,
68+ B2_trans = B2_trans , AXsi2_trans = AXsi2_trans , guess1 = guess1 ,
69+ guess2 = guess2 , type = type , theta = theta , wgt = wgt , CALL = CALL )
70+ class(res ) <- ' tam_linking_2studies'
6571 return (res )
6672}
0 commit comments