The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

DINA_HO_RT_joint

library(hmcdm)

Load the spatial rotation data

N = length(Test_versions)
J = nrow(Q_matrix)
K = ncol(Q_matrix)
L = nrow(Test_order)

(1) Simulate responses and response times based on the HMDCM model with response times (no covariance between speed and learning ability)

ETAs <- ETAmat(K, J, Q_matrix)
class_0 <- sample(1:2^K, N, replace = L)
Alphas_0 <- matrix(0,N,K)
mu_thetatau = c(0,0)
Sig_thetatau = rbind(c(1.8^2,.4*.5*1.8),c(.4*.5*1.8,.25))
Z = matrix(rnorm(N*2),N,2)
thetatau_true = Z%*%chol(Sig_thetatau)
thetas_true = thetatau_true[,1]
taus_true = thetatau_true[,2]
G_version = 3
phi_true = 0.8
for(i in 1:N){
  Alphas_0[i,] <- inv_bijectionvector(K,(class_0[i]-1))
}
lambdas_true <- c(-2, .4, .055)       # empirical from Wang 2017
Alphas <- sim_alphas(model="HO_joint", 
                    lambdas=lambdas_true, 
                    thetas=thetas_true, 
                    Q_matrix=Q_matrix, 
                    Design_array=Design_array)
table(rowSums(Alphas[,,5]) - rowSums(Alphas[,,1])) # used to see how much transition has taken place
#> 
#>   0   1   2   3   4 
#>  61  67  78 119  25
itempars_true <- matrix(runif(J*2,.1,.2), ncol=2)
RT_itempars_true <- matrix(NA, nrow=J, ncol=2)
RT_itempars_true[,2] <- rnorm(J,3.45,.5)
RT_itempars_true[,1] <- runif(J,1.5,2)

Y_sim <- sim_hmcdm(model="DINA",Alphas,Q_matrix,Design_array,
                   itempars=itempars_true)
L_sim <- sim_RT(Alphas,Q_matrix,Design_array,
                  RT_itempars_true,taus_true,phi_true,G_version)

(2) Run the MCMC to sample parameters from the posterior distribution

output_HMDCM_RT_joint = hmcdm(Y_sim,Q_matrix,"DINA_HO_RT_joint",Design_array,100,30,
                                 Latency_array = L_sim, G_version = G_version,
                                 theta_propose = 2,deltas_propose = c(.45,.25,.06))
#> 0
output_HMDCM_RT_joint
#> 
#> Model: DINA_HO_RT_joint 
#> 
#> Sample Size: 350
#> Number of Items: 
#> Number of Time Points: 
#> 
#> Chain Length: 100, burn-in: 50
summary(output_HMDCM_RT_joint)
#> 
#> Model: DINA_HO_RT_joint 
#> 
#> Item Parameters:
#>  ss_EAP  gs_EAP
#>  0.1453 0.16476
#>  0.2235 0.18512
#>  0.2326 0.04447
#>  0.1232 0.15566
#>  0.1367 0.20499
#>    ... 45 more items
#> 
#> Transition Parameters:
#>    lambdas_EAP
#> λ0    -1.87169
#> λ1     0.09275
#> λ2     0.12180
#> 
#> Class Probabilities:
#>      pis_EAP
#> 0000  0.1069
#> 0001  0.1718
#> 0010  0.1717
#> 0011  0.2851
#> 0100  0.1919
#>    ... 11 more classes
#> 
#> Deviance Information Criterion (DIC): 154397.3 
#> 
#> Posterior Predictive P-value (PPP):
#> M1: 0.5024
#> M2:  0.49
#> total scores:  0.6229
a <- summary(output_HMDCM_RT_joint)
a
#> 
#> Model: DINA_HO_RT_joint 
#> 
#> Item Parameters:
#>  ss_EAP  gs_EAP
#>  0.1453 0.16476
#>  0.2235 0.18512
#>  0.2326 0.04447
#>  0.1232 0.15566
#>  0.1367 0.20499
#>    ... 45 more items
#> 
#> Transition Parameters:
#>    lambdas_EAP
#> λ0    -1.87169
#> λ1     0.09275
#> λ2     0.12180
#> 
#> Class Probabilities:
#>      pis_EAP
#> 0000  0.1069
#> 0001  0.1718
#> 0010  0.1717
#> 0011  0.2851
#> 0100  0.1919
#>    ... 11 more classes
#> 
#> Deviance Information Criterion (DIC): 154397.3 
#> 
#> Posterior Predictive P-value (PPP):
#> M1: 0.5208
#> M2:  0.49
#> total scores:  0.6268

a$ss_EAP
#>             [,1]
#>  [1,] 0.14527364
#>  [2,] 0.22347089
#>  [3,] 0.23264554
#>  [4,] 0.12324120
#>  [5,] 0.13671703
#>  [6,] 0.15870662
#>  [7,] 0.13474586
#>  [8,] 0.16340068
#>  [9,] 0.23955037
#> [10,] 0.09482755
#> [11,] 0.22594592
#> [12,] 0.21414600
#> [13,] 0.20544524
#> [14,] 0.16827695
#> [15,] 0.18610171
#> [16,] 0.24041734
#> [17,] 0.20221820
#> [18,] 0.19796050
#> [19,] 0.16214569
#> [20,] 0.16190172
#> [21,] 0.16581845
#> [22,] 0.15179118
#> [23,] 0.14965766
#> [24,] 0.22729361
#> [25,] 0.19476440
#> [26,] 0.23051407
#> [27,] 0.15559297
#> [28,] 0.18621418
#> [29,] 0.20944074
#> [30,] 0.10174868
#> [31,] 0.11808534
#> [32,] 0.14596304
#> [33,] 0.18828569
#> [34,] 0.14753469
#> [35,] 0.19077708
#> [36,] 0.23527372
#> [37,] 0.21634465
#> [38,] 0.18328075
#> [39,] 0.20804419
#> [40,] 0.20749658
#> [41,] 0.14474496
#> [42,] 0.25869170
#> [43,] 0.13241310
#> [44,] 0.12952914
#> [45,] 0.21678566
#> [46,] 0.11513858
#> [47,] 0.14294383
#> [48,] 0.23072136
#> [49,] 0.15857348
#> [50,] 0.15212187
head(a$ss_EAP)
#>           [,1]
#> [1,] 0.1452736
#> [2,] 0.2234709
#> [3,] 0.2326455
#> [4,] 0.1232412
#> [5,] 0.1367170
#> [6,] 0.1587066

(3) Check for parameter estimation accuracy

(cor_thetas <- cor(thetas_true,a$thetas_EAP))
#>           [,1]
#> [1,] 0.8061758
(cor_taus <- cor(taus_true,a$response_times_coefficients$taus_EAP))
#>           [,1]
#> [1,] 0.9879757

(cor_ss <- cor(as.vector(itempars_true[,1]),a$ss_EAP))
#>          [,1]
#> [1,] 0.639022
(cor_gs <- cor(as.vector(itempars_true[,2]),a$gs_EAP))
#>           [,1]
#> [1,] 0.5692589

AAR_vec <- numeric(L)
for(t in 1:L){
  AAR_vec[t] <- mean(Alphas[,,t]==a$Alphas_est[,,t])
}
AAR_vec
#> [1] 0.9271429 0.9335714 0.9457143 0.9542857 0.9457143

PAR_vec <- numeric(L)
for(t in 1:L){
  PAR_vec[t] <- mean(rowSums((Alphas[,,t]-a$Alphas_est[,,t])^2)==0)
}
PAR_vec
#> [1] 0.7428571 0.7685714 0.8085714 0.8314286 0.8228571

(4) Evaluate the fit of the model to the observed response and response times data (here, Y_sim and R_sim)

a$DIC
#>              Transition Response_Time Response    Joint    Total
#> D_bar          1990.836      133126.8 15066.03 3277.902 153461.6
#> D(theta_bar)   1723.832      132699.9 14961.74 3140.410 152525.9
#> DIC            2257.839      133553.8 15170.31 3415.393 154397.3
head(a$PPP_total_scores)
#>      [,1] [,2] [,3] [,4] [,5]
#> [1,] 0.46 0.10 0.30 0.82 0.62
#> [2,] 0.84 0.00 0.24 0.24 0.06
#> [3,] 0.40 0.32 0.28 0.44 0.06
#> [4,] 0.88 0.92 0.84 0.24 0.98
#> [5,] 0.74 0.88 0.46 0.52 0.04
#> [6,] 0.42 0.80 0.24 0.50 0.88
head(a$PPP_total_RTs)
#>      [,1] [,2] [,3] [,4] [,5]
#> [1,] 0.38 0.14 0.22 0.96 0.72
#> [2,] 0.04 0.96 0.56 0.96 0.32
#> [3,] 0.80 0.40 0.40 0.32 0.50
#> [4,] 0.96 0.08 0.84 0.72 0.12
#> [5,] 0.36 0.54 0.98 0.22 0.84
#> [6,] 0.42 0.24 0.74 0.32 0.86
head(a$PPP_item_means)
#> [1] 0.64 0.44 0.52 0.50 0.46 0.56
head(a$PPP_item_mean_RTs)
#> [1] 0.42 0.72 0.52 0.66 0.62 0.48
head(a$PPP_item_ORs)
#>      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14]
#> [1,]   NA 0.86 0.58 0.40 0.44 0.60 0.60 0.74 0.08  0.74  0.36  0.94  0.78  0.76
#> [2,]   NA   NA 0.98 0.88 0.80 0.48 0.82 0.88 0.64  0.62  0.78  0.80  0.80  0.46
#> [3,]   NA   NA   NA 0.84 1.00 0.98 0.98 0.76 0.80  0.92  0.02  0.54  0.42  0.56
#> [4,]   NA   NA   NA   NA 0.96 0.94 0.82 0.94 0.80  0.96  0.94  0.82  0.90  0.96
#> [5,]   NA   NA   NA   NA   NA 0.78 0.50 0.30 0.12  0.36  0.56  0.08  0.96  0.32
#> [6,]   NA   NA   NA   NA   NA   NA 0.84 0.74 0.74  0.82  0.40  0.94  1.00  0.26
#>      [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24] [,25] [,26]
#> [1,]  0.62  0.14  0.62  0.56  0.56  0.28  0.40  0.22  0.48  0.16  0.94  0.14
#> [2,]  0.16  0.60  0.28  0.24  0.38  0.72  0.76  0.92  0.96  0.84  0.58  0.74
#> [3,]  0.88  0.18  0.58  0.74  0.88  0.44  0.90  0.58  0.62  0.96  0.44  0.32
#> [4,]  0.68  0.70  0.66  0.82  0.80  0.80  0.82  0.98  0.54  0.88  0.80  0.90
#> [5,]  0.10  0.14  0.02  0.30  0.44  0.20  0.34  0.92  0.44  0.16  0.88  0.20
#> [6,]  0.48  0.06  0.12  0.36  0.84  0.14  0.64  0.98  0.38  0.16  0.54  0.56
#>      [,27] [,28] [,29] [,30] [,31] [,32] [,33] [,34] [,35] [,36] [,37] [,38]
#> [1,]  0.32  0.86  0.82  0.68  1.00  0.92  0.04  0.60  1.00  0.64  0.90  0.82
#> [2,]  0.70  0.90  0.62  0.98  0.68  0.78  0.86  0.64  0.94  0.44  0.98  0.76
#> [3,]  0.90  0.48  0.38  0.88  0.64  0.84  1.00  0.74  0.66  0.60  1.00  0.74
#> [4,]  0.74  0.84  0.92  0.42  0.60  0.74  0.50  0.82  0.94  0.38  0.72  1.00
#> [5,]  0.72  0.30  0.44  0.70  0.26  0.72  0.88  0.98  0.90  0.44  0.96  0.14
#> [6,]  0.88  0.62  0.64  0.56  0.90  0.16  0.56  0.80  0.82  0.14  0.72  0.40
#>      [,39] [,40] [,41] [,42] [,43] [,44] [,45] [,46] [,47] [,48] [,49] [,50]
#> [1,]  0.00  0.42  0.44  0.74  0.10  0.96  0.04  0.14  0.30  0.18  0.96  0.76
#> [2,]  0.68  0.78  0.58  1.00  0.40  0.42  0.82  0.34  0.10  0.64  0.42  0.82
#> [3,]  0.50  0.86  0.68  1.00  1.00  0.78  0.82  0.92  0.98  1.00  1.00  0.96
#> [4,]  0.56  0.92  0.76  0.52  1.00  0.96  0.38  0.94  0.70  0.84  0.38  0.50
#> [5,]  0.62  0.38  0.96  0.68  0.66  0.54  0.66  0.80  0.36  0.84  0.52  0.80
#> [6,]  0.26  0.78  0.90  0.94  0.92  0.84  0.82  0.46  0.50  0.82  0.48  1.00

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.