🫶🏻 U1FAF6-project
  • Welcome to 🫶🏻 U1FAF6-project!
  • 一種半自動的最小可行寫作方案
  • 20250214 ch2
  • 20250214 ch3
  • Weekly Chellange
  • R Performance Benchmark Results
  • 關於 COLAB 使用的小技巧
  • 教育測量學期刊觀察清單
  • 20260313 DINA pymc
  • 20260313 r gdina
  • 長格式 (lme4) 和寬格式 (lavaan) 的估計是相同的
🫶🏻 U1FAF6-project
  • 20260313 r gdina

在 Colab 上使用 GDINA¶

  • 2026-03-13
  • jw

[重要] 要先在 Edit/Notebook settings 中變更為 R.

用 apt 直接在 colab 雲端機器上安裝 r-cran-gdina 比用 r 安裝快。(但需要等待 apt 更新時間)

或者使用一般 r 的安裝套件方式。

install.package('GDINA')
In [ ]:
Copied!
system('sudo apt upgrade')
system('sudo apt install r-cran-gdina')
system('sudo apt upgrade') system('sudo apt install r-cran-gdina')
  1. 載入 GDINA 套件。
  2. 使用範例 dat, 建立 Q-matrix.
In [ ]:
Copied!
library(GDINA)
dat <- sim10GDINA$simdat
Q <- matrix(c(1,0,0,
              0,1,0,
              0,0,1,
              1,0,1,
              0,1,1,
              1,1,0,
              0,0,1,
              1,0,0,
              1,1,1,
              1,0,1),
              10,3)
Q
library(GDINA) dat <- sim10GDINA$simdat Q <- matrix(c(1,0,0, 0,1,0, 0,0,1, 1,0,1, 0,1,1, 1,1,0, 0,0,1, 1,0,0, 1,1,1, 1,0,1), 10,3) Q
A matrix: 10 × 3 of type dbl
101
011
000
010
111
011
011
001
100
101

執行 GDINA 模式估計。

In [ ]:
Copied!
est <- GDINA(dat = dat, Q = Q, model = "GDINA")
est <- GDINA(dat = dat, Q = Q, model = "GDINA")
Iter = 1  Max. abs. change = 0.38004  Deviance  = 13295.93                                                                                  
Iter = 2  Max. abs. change = 0.06152  Deviance  = 12263.41                                                                                  
Iter = 3  Max. abs. change = 0.03254  Deviance  = 12192.94                                                                                  
Iter = 4  Max. abs. change = 0.02122  Deviance  = 12166.79                                                                                  
Iter = 5  Max. abs. change = 0.01370  Deviance  = 12154.64                                                                                  
Iter = 6  Max. abs. change = 0.00948  Deviance  = 12148.36                                                                                  
Iter = 7  Max. abs. change = 0.00672  Deviance  = 12144.88                                                                                  
Iter = 8  Max. abs. change = 0.00526  Deviance  = 12142.82                                                                                  
Iter = 9  Max. abs. change = 0.00418  Deviance  = 12141.54                                                                                  
Iter = 10  Max. abs. change = 0.00345  Deviance  = 12140.68                                                                                  
Iter = 11  Max. abs. change = 0.00294  Deviance  = 12140.08                                                                                  
Iter = 12  Max. abs. change = 0.00255  Deviance  = 12139.63                                                                                  
Iter = 13  Max. abs. change = 0.00225  Deviance  = 12139.29                                                                                  
Iter = 14  Max. abs. change = 0.00204  Deviance  = 12139.01                                                                                  
Iter = 15  Max. abs. change = 0.00191  Deviance  = 12138.78                                                                                  
Iter = 16  Max. abs. change = 0.00179  Deviance  = 12138.59                                                                                  
Iter = 17  Max. abs. change = 0.00168  Deviance  = 12138.43                                                                                  
Iter = 18  Max. abs. change = 0.00157  Deviance  = 12138.29                                                                                  
Iter = 19  Max. abs. change = 0.00146  Deviance  = 12138.17                                                                                  
Iter = 20  Max. abs. change = 0.00137  Deviance  = 12138.06                                                                                  
Iter = 21  Max. abs. change = 0.00128  Deviance  = 12137.97                                                                                  
Iter = 22  Max. abs. change = 0.00120  Deviance  = 12137.88                                                                                  
Iter = 23  Max. abs. change = 0.00113  Deviance  = 12137.81                                                                                  
Iter = 24  Max. abs. change = 0.00106  Deviance  = 12137.74                                                                                  
Iter = 25  Max. abs. change = 0.00099  Deviance  = 12137.68                                                                                  
Iter = 26  Max. abs. change = 0.00094  Deviance  = 12137.63                                                                                  
Iter = 27  Max. abs. change = 0.00088  Deviance  = 12137.58                                                                                  
Iter = 28  Max. abs. change = 0.00083  Deviance  = 12137.54                                                                                  
Iter = 29  Max. abs. change = 0.00079  Deviance  = 12137.50                                                                                  
Iter = 30  Max. abs. change = 0.00074  Deviance  = 12137.46                                                                                  
Iter = 31  Max. abs. change = 0.00070  Deviance  = 12137.43                                                                                  
Iter = 32  Max. abs. change = 0.00067  Deviance  = 12137.40                                                                                  
Iter = 33  Max. abs. change = 0.00063  Deviance  = 12137.38                                                                                  
Iter = 34  Max. abs. change = 0.00060  Deviance  = 12137.36                                                                                  
Iter = 35  Max. abs. change = 0.00057  Deviance  = 12137.34                                                                                  
Iter = 36  Max. abs. change = 0.00054  Deviance  = 12137.32                                                                                  
Iter = 37  Max. abs. change = 0.00052  Deviance  = 12137.30                                                                                  
Iter = 38  Max. abs. change = 0.00049  Deviance  = 12137.28                                                                                  
Iter = 39  Max. abs. change = 0.00047  Deviance  = 12137.27                                                                                  
Iter = 40  Max. abs. change = 0.00045  Deviance  = 12137.26                                                                                  
Iter = 41  Max. abs. change = 0.00043  Deviance  = 12137.25                                                                                  
Iter = 42  Max. abs. change = 0.00041  Deviance  = 12137.24                                                                                  
Iter = 43  Max. abs. change = 0.00039  Deviance  = 12137.23                                                                                  
Iter = 44  Max. abs. change = 0.00037  Deviance  = 12137.22                                                                                  
Iter = 45  Max. abs. change = 0.00036  Deviance  = 12137.21                                                                                  
Iter = 46  Max. abs. change = 0.00034  Deviance  = 12137.21                                                                                  
Iter = 47  Max. abs. change = 0.00032  Deviance  = 12137.20                                                                                  
Iter = 48  Max. abs. change = 0.00031  Deviance  = 12137.20                                                                                  
Iter = 49  Max. abs. change = 0.00030  Deviance  = 12137.19                                                                                  
Iter = 50  Max. abs. change = 0.00028  Deviance  = 12137.19                                                                                  
Iter = 51  Max. abs. change = 0.00027  Deviance  = 12137.18                                                                                  
Iter = 52  Max. abs. change = 0.00026  Deviance  = 12137.18                                                                                  
Iter = 53  Max. abs. change = 0.00025  Deviance  = 12137.17                                                                                  
Iter = 54  Max. abs. change = 0.00024  Deviance  = 12137.17                                                                                  
Iter = 55  Max. abs. change = 0.00023  Deviance  = 12137.17                                                                                  
Iter = 56  Max. abs. change = 0.00022  Deviance  = 12137.17                                                                                  
Iter = 57  Max. abs. change = 0.00021  Deviance  = 12137.16                                                                                  
Iter = 58  Max. abs. change = 0.00020  Deviance  = 12137.16                                                                                  
Iter = 59  Max. abs. change = 0.00019  Deviance  = 12137.16                                                                                  
Iter = 60  Max. abs. change = 0.00018  Deviance  = 12137.16                                                                                  
Iter = 61  Max. abs. change = 0.00017  Deviance  = 12137.16                                                                                  
Iter = 62  Max. abs. change = 0.00017  Deviance  = 12137.16                                                                                  
Iter = 63  Max. abs. change = 0.00016  Deviance  = 12137.16                                                                                  
Iter = 64  Max. abs. change = 0.00015  Deviance  = 12137.15                                                                                  
Iter = 65  Max. abs. change = 0.00015  Deviance  = 12137.15                                                                                  
Iter = 66  Max. abs. change = 0.00014  Deviance  = 12137.15                                                                                  
Iter = 67  Max. abs. change = 0.00013  Deviance  = 12137.15                                                                                  
Iter = 68  Max. abs. change = 0.00013  Deviance  = 12137.15                                                                                  
Iter = 69  Max. abs. change = 0.00012  Deviance  = 12137.15                                                                                  
Iter = 70  Max. abs. change = 0.00012  Deviance  = 12137.15                                                                                  
Iter = 71  Max. abs. change = 0.00011  Deviance  = 12137.15                                                                                  
Iter = 72  Max. abs. change = 0.00011  Deviance  = 12137.15                                                                                  
Iter = 73  Max. abs. change = 0.00010  Deviance  = 12137.15                                                                                  
Iter = 74  Max. abs. change = 0.00010  Deviance  = 12137.15                                                                                  
In [ ]:
Copied!
summary(est)
summary(est)
Test Fit Statistics

Loglik = -6068.57 

AIC    = 12219.15  | penalty [2 * p]  = 82.00 
AICc   = 12140.74  | penalty [2 * p * (p+1) / (n - p - 1)]  = 324.22 
BIC    = 12420.36  | penalty [log(n) * p]  = 283.22 
CAIC   = 12461.36  | penalty [(log(n) + 1) * p]  = 324.22 
SABIC  = 12290.15  | penalty [log((n + 2)/24) * p]  = 153.00 

No. of parameters (p)  = 41 
  No. of estimated item parameters =  34 
  No. of fixed item parameters =  0 
  No. of distribution parameters =  7 

Attribute Prevalence

   Level0 Level1
A1 0.4148 0.5852
A2 0.4735 0.5265
A3 0.4920 0.5080
In [ ]:
Copied!
coef(est)
coef(est)
$`Item 1`
P(0)
0.1582
P(1)
0.8278
$`Item 2`
P(0)
0.1216
P(1)
0.7664
$`Item 3`
P(0)
0.1109
P(1)
0.9103
$`Item 4`
P(00)
0.1319
P(10)
0.2597
P(01)
0.4882
P(11)
0.8374
$`Item 5`
P(00)
0.1136
P(10)
0.0654
P(01)
0.0675
P(11)
0.798
$`Item 6`
P(00)
0.1736
P(10)
0.8834
P(01)
0.9331
P(11)
0.9069
$`Item 7`
P(0)
0.2597
P(1)
0.591
$`Item 8`
P(0)
0.1297
P(1)
0.5643
$`Item 9`
P(000)
0.1384
P(100)
0.0511
P(010)
0.5329
P(001)
0.3725
P(110)
0.3092
P(101)
0.4261
P(011)
0.7841
P(111)
0.8126
$`Item 10`
P(00)
0.1716
P(10)
0.3439
P(01)
0.5148
P(11)
0.7011

畫出每個題目在不同屬性上的成功機率。

In [ ]:
Copied!
plot(est, withSE = TRUE)
plot(est, withSE = TRUE)
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image

畫出第 1, 20, 50 個人在三個屬性上的精熟程度

In [ ]:
Copied!
#plot mastery probability for individuals 1, 20 and 50
plot(est, what = "mp", person = c(1, 20, 50))
#plot mastery probability for individuals 1, 20 and 50 plot(est, what = "mp", person = c(1, 20, 50))
Warning message:
“`aes_string()` was deprecated in ggplot2 3.0.0.
ℹ Please use tidy evaluation idioms with `aes()`.
ℹ See also `vignette("ggplot2-in-packages")` for more information.
ℹ The deprecated feature was likely used in the GDINA package.
  Please report the issue at <https://github.com/Wenchao-Ma/GDINA/issues>.”
No description has been provided for this image

分類準確率

In [ ]:
Copied!
CA(est)
CA(est)
Classification Accuracy 

Test level accuracy =  0.738 

Pattern level accuracy: 

   000    100    010    001    110    101    011    111 
0.7787 0.6716 0.6358 0.7300 0.7022 0.7574 0.7843 0.7875 

Attribute level accuracy: 

    A1     A2     A3 
0.8822 0.8831 0.9252 

Q-matrix 驗證. 有星號表示 Q-matrix 建議修改的位置。

In [ ]:
Copied!
Qv <- Qval(est)
Qv
Qv <- Qval(est) Qv
Q-matrix validation based on PVAF method 

Suggested Q-matrix: 

   A1 A2 A3
1  1  0  0 
2  0  1  0 
3  0  0  1 
4  1  0  1 
5  0  1  1 
6  1  1  0 
7  1* 0  1 
8  1  1* 0 
9  0* 1  1 
10 1  1* 1 
Note: * denotes a modified element.
In [ ]:
Copied!
sessionInfo()
sessionInfo()
R version 4.5.2 (2025-10-31)
Platform: x86_64-pc-linux-gnu
Running under: Ubuntu 22.04.5 LTS

Matrix products: default
BLAS:   /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 
LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so;  LAPACK version 3.10.0

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

time zone: Etc/UTC
tzcode source: system (glibc)

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] GDINA_2.9.12  lavaan_0.6-10

loaded via a namespace (and not attached):
 [1] future_1.69.0        listenv_0.10.1       digest_0.6.39       
 [4] magrittr_2.0.4       RColorBrewer_1.1-3   evaluate_1.0.5      
 [7] grid_4.5.2           pbdZMQ_0.3-14        iterators_1.0.14    
[10] fastmap_1.2.0        foreach_1.5.2        jsonlite_2.0.0      
[13] promises_1.5.0       scales_1.4.0         truncnorm_1.0-9     
[16] pbivnorm_0.6.0       codetools_0.2-20     numDeriv_2016.8-1.1 
[19] textshaping_1.0.5    shinydashboard_0.7.3 mnormt_2.1.2        
[22] cli_3.6.5            shiny_1.13.0         rlang_1.1.7         
[25] crayon_1.5.3         parallelly_1.46.1    future.apply_1.20.2 
[28] withr_3.0.2          base64enc_0.1-6      repr_1.1.7          
[31] otel_0.2.0           tools_4.5.2          parallel_4.5.2      
[34] uuid_1.2-2           nloptr_2.2.1         ggplot2_4.0.2       
[37] httpuv_1.6.16        globals_0.19.0       IRdisplay_1.1       
[40] vctrs_0.7.1          R6_2.6.1             mime_0.13           
[43] stats4_4.5.2         lifecycle_1.0.5      MASS_7.3-65         
[46] Rsolnp_2.0.1         ragg_1.5.1           pillar_1.11.1       
[49] later_1.4.8          gtable_0.3.6         glue_1.8.0          
[52] Rcpp_1.1.1           systemfonts_1.3.2    IRkernel_1.3.2      
[55] farver_2.1.2         xtable_1.8-4         htmltools_0.5.9     
[58] labeling_0.4.3       compiler_4.5.2       S7_0.2.1            
[61] alabama_2025.1.0    
Previous Next

Built with MkDocs using a theme provided by Read the Docs.