19  Teoria della generalizzabilità

Prerequisiti

Concetti e Competenze Chiave

Preparazione del Notebook

here::here("code", "_common.R") |> source()

# Load packages
pacman::p_load(lme4, tidyr)

19.1 Introduzione

Nei precedenti capitoli è stato illustrato come la Teoria Classica dei Test (CTT) identifichi l’errore di misurazione come una fonte di varianza non spiegata e definisca l’affidabilità come la proporzione di varianza vera rispetto alla varianza totale, che include anche l’errore di misurazione. La teoria della generalizzabilità estende questo concetto nella CTT, consentendo di distinguere tra diverse fonti di errore di misurazione in casi di disegni complessi, come errori associati alle persone, alle occasioni e agli item.

Questo capitolo si concentra su un’applicazione specifica della teoria della generalizzabilità, che è quella di stimare l’affidabilità delle misure all’interno di un disegno longitudinale. Nel corso di questo tutorial, esploreremo come affrontare questa sfida utilizzando il framework della teoria della generalizzabilità. Nei capitoli successivi esamineremo un approccio alternativo per risolvere lo stesso problema, che è il Latent Growth Modeling.

19.2 Molteplici fonti di errore di misurazione

La Teoria della Generalizzabilità, nota anche come “Generalizability Theory,” è una teoria statistica che fornisce un quadro per studiare l’affidabilità e la validità delle misurazioni in diversi contesti. In questa teoria, i fattori che possono contribuire all’errore nelle misurazioni vengono chiamati “facets” (es. valutatori, compiti, occasioni). Ogni fattore può essere considerato fisso o casuale.

La terminologia utilizzata è la seguente:

  • Le “condizioni” (condition) rappresentano i livelli dei vari fattori.
  • L’oggetto di misurazione (Object of Measurement), che di solito sono le persone, non è considerato un fattore ma è sempre considerato casuale.
  • L’“Universo delle Operazioni Ammissibili” (Universe of Admissible Operations, UAO) è un ampio insieme di condizioni alle quali si vogliono generalizzare i risultati osservati.
  • Lo “Score dell’Universo” (Universe Score) rappresenta il punteggio medio di una persona considerando tutte le possibili combinazioni di condizioni nell’UAO.
  • Lo studio “G” (G Study) mira a ottenere informazioni accurate sulla grandezza dei fattori di errore.
  • Lo studio “D” (D Study) riguarda la progettazione di uno scenario di misurazione con il livello desiderato di affidabilità utilizzando il minor numero possibile di condizioni.

La Teoria della Generalizzabilità è particolarmente utile quando si desidera valutare l’affidabilità e la validità delle misurazioni in situazioni complesse, in cui diversi fattori possono influenzare l’errore di misurazione.

19.3 Differenze tra la teoria G e la CTT

La Teoria G e la Teoria Classica dei Test (CTT) sono due approcci distinti per valutare l’affidabilità di un test psicometrico. La Teoria G fornisce una valutazione più completa delle fonti di errore di misurazione, consentendo di stimare simultaneamente molteplici fonti di errore in un’unica analisi. I coefficienti di affidabilità nella Teoria G tengono conto di tutte le fonti misurate di errore, fornendo una stima più accurata dell’affidabilità complessiva del test.

D’altra parte, la Teoria CTT permette di stimare solo una fonte di errore di misurazione alla volta. I coefficienti di affidabilità nella Teoria CTT si concentrano su una sola fonte di errore e non forniscono una visione completa dell’affidabilità del test. Inoltre, la Teoria G offre un metodo per determinare il numero di livelli di ciascuna fonte di errore necessari per ottenere livelli di affidabilità accettabili. Ciò consente di ottimizzare il design del test e garantire che il test sia affidabile in diverse situazioni e condizioni. Infine, la Teoria G fornisce coefficienti di affidabilità sia per decisioni riferite a norme (come classificazioni rispetto a una distribuzione di riferimento) che per decisioni riferite a criteri specifici (come confronti con standard prestabiliti). D’altro canto, i coefficienti di affidabilità più comunemente utilizzati nella Teoria CTT sono più adatti per test riferiti a norme, mentre per test riferiti a criteri possono essere meno accurati.

In sintesi, la Teoria G offre una valutazione più completa e accurata dell’affidabilità di un test, considerando diverse fonti di errore e fornendo informazioni utili per ottimizzare il design del test. La Teoria CTT, sebbene più semplice, è limitata nella sua capacità di catturare la complessità delle fonti di errore di misurazione. Pertanto, la Teoria G è spesso preferita quando si tratta di valutare l’affidabilità di test psicometrici complessi e con molteplici fonti di variabilità.

19.4 Fattori incrociati o nidificati

Un concetto fondamentale della teoria della generalizzabilità è la gerarchia dei dati, che si riferisce alla struttura del disegno di ricerca. Esistono due tipi principali di disegni: annidati (nested) e incrociati (crossed). Nei disegni annidati, i livelli di un fattore sono contenuti all’interno dei livelli di un altro; nei disegni incrociati, ogni livello di un fattore si combina con tutti i livelli di un altro fattore.

Consideriamo ad esempio uno studio in cui diversi psicologi valutano l’intelligenza di studenti in diverse scuole. Se ogni psicologo valuta gli studenti di tutte le scuole, allora i fattori “psicologo” e “scuola” sono incrociati. Ciò significa che tutte le combinazioni di psicologi e scuole sono rappresentate nel campione.

D’altra parte, supponiamo che vi siano gruppi distinti di psicologi assegnati a diverse scuole. Ad esempio, un gruppo di psicologi potrebbe valutare gli studenti di una scuola, mentre un altro gruppo di psicologi potrebbe valutare gli studenti di un’altra scuola. In questo caso, i valutatori sono nidificati all’interno delle scuole. Ciò significa che ogni scuola ha un gruppo specifico di psicologi associati a essa per le valutazioni.

La distinzione tra fattori incrociati e nidificati è importante perché influisce sulla generalizzabilità delle conclusioni dello studio. Nel caso incrociato, le conclusioni possono essere generalizzate a tutte le combinazioni di valutatori e scuole presenti nel campione. Nel caso nidificato, le conclusioni possono essere generalizzate solo alle scuole specifiche associate ai rispettivi gruppi di valutatori.

19.5 Fattori casuali o fissi

Un secondo concetto fondamentale della teoria della generalizzabilità riguarda la distinzione tra fattori casuali e fattori fissi in un disegno di ricerca. Un fattore è detto casuale quando le sue condizioni specifiche nello studio sono viste come un campione di un universo più ampio di condizioni, e si presume che queste siano equivalenti e interscambiabili con qualsiasi altra condizione nello stesso universo (Universo delle Operazioni Ammissibili, UAO). Ciò consente di generalizzare i risultati dello studio a tutte le condizioni all’interno dell’UAO. Ad esempio, i valutatori in uno studio sono considerati un fattore casuale se si assume che le valutazioni di uno siano sostituibili con quelle di un altro.

Contrariamente, un fattore fisso si concentra su condizioni specifiche e predeterminate, che costituiscono il completo insieme di interesse per il ricercatore. Questo approccio è utilizzato quando lo scopo è analizzare l’effetto di queste condizioni particolari senza cercare di generalizzare i risultati oltre a queste. Ad esempio, consideriamo uno studio sull’effetto di diverse terapie sulla riduzione dell’ansia in pazienti affetti da disturbi d’ansia, dove si esaminano specificamente tre tipi di terapia: Terapia A, Terapia B e Terapia C. Se ogni paziente partecipa a una ed una sola di queste terapie, selezionata in modo casuale, il fattore “Tipo di Terapia” è considerato fisso perché l’intenzione è di valutare l’effetto specifico di queste terapie selezionate, non di altre potenziali terapie non incluse nello studio.

19.6 La teoria G

In questo capitolo, esamineremo uno specifico uso della Teoria della Generalizzabilità in uno studio longitudinale. Specificamente, ci porremo il problema di stimare l’affidabilità delle misure dei partecipanti nel tempo.

Supponiamo di condurre uno studio in cui vogliamo valutare le performance di diversi studenti nel corso del tempo. Raccogliamo i punteggi di cinque studenti (A, B, C, D, E) su un compito misurato in tre diverse occasioni temporali (T1, T2, T3). Il nostro obiettivo è comprendere come variano le performance tra gli studenti e nel corso del tempo. Il disegno è persona-per-tempo (5 persone x 3 occasioni di misurazione).

L’equazione di decomposizione della varianza degli score osservati in questo disegno è la seguente:

\[ \sigma^2(X_{pt}) = \sigma^2_p + \sigma^2_t + \sigma^2_{pt} + \sigma^2_{pt,e}, \]

dove:

  • \(\sigma^2_p\): rappresenta l’effetto principale delle persone, ovvero quanto variano le performance tra gli studenti.
  • \(\sigma^2_t\): indica l’effetto principale del tempo, ovvero quanto variano le performance degli studenti nel corso del tempo.
  • \(\sigma^2_{pt}\): rappresenta l’interazione persona-per-tempo, ovvero quanto variano le performance degli studenti nel corso del tempo.
  • \(\sigma^2_{pt,e}\): è la varianza residua o non misurata, che include l’errore casuale e altre fonti di varianza non considerate nel disegno.

In un secondo esempio, consideriamo un disegno a tre fattori. Supponiamo di condurre uno studio per valutare le performance di diversi studenti (A, B, C, D, E) su diversi compiti (item) nel corso del tempo (T1, T2, T3). Vogliamo comprendere come le performance degli studenti possono variare tra gli item, nel tempo e se ci sono interazioni tra questi fattori. Il disegno è persona-per-item-per-tempo (5 persone x 3 item x 3 occasioni di misura).

L’equazione di decomposizione della varianza degli score osservati in questo disegno sarà la seguente:

\[ \sigma^2(X_{pit}) = \sigma^2_p + \sigma^2_i + \sigma^2_t + \sigma^2_{pi} + \sigma^2_{pt} + \sigma^2_{it} + \sigma^2_{pit,e}, \]

dove:

  • \(\sigma^2_p\): rappresenta l’effetto principale delle persone, ovvero quanto variano le performance tra gli studenti.
  • \(\sigma^2_i\): indica l’effetto principale degli item, ovvero quanto variano i punteggi dei compiti tra i diversi item.
  • \(\sigma^2_t\): rappresenta l’effetto principale del tempo, ovvero quanto variano le performance degli studenti nel corso del tempo.
  • \(\sigma^2_{pi}\): indica l’interazione persona-per-item, ovvero quanto variano le performance degli studenti tra i diversi compiti.
  • \(\sigma^2_{pt}\): rappresenta l’interazione persona-per-tempo, ovvero quanto variano le performance degli studenti nel corso del tempo.
  • \(\sigma^2_{it}\): indica l’interazione item-per-tempo, ovvero quanto variano i punteggi dei compiti nel corso del tempo.
  • \(\sigma^2_{pit,e}\): è la varianza residua o non misurata, che include l’errore casuale e altre fonti di varianza non considerate nel disegno.

Questi modelli ci permettono di analizzare come ciascuna fonte di variabilità influenzi i punteggi osservati.

19.7 Affidabilità

Il Cambiamento di Affidabilità, nota come Cambiamento di Affidabilità (RC, da Reliability Change), valuta in che misura le variazioni nei punteggi di soggetti, valutati ripetutamente nel tempo, riflettano cambiamenti reali piuttosto che essere causate da errori di misurazione. Questo indice è fondamentale in studi longitudinali, dove si osserva lo stesso gruppo di individui in più occasioni, per stabilire se i cambiamenti nei punteggi sono sistematici e affidabili, legati al tempo e alle caratteristiche uniche dei partecipanti. Un alto valore di RC indica che le misurazioni sono coerenti nel tempo, suggerendo che qualsiasi variazione rilevata rappresenti un vero cambiamento nel comportamento o nelle risposte dei soggetti. Pertanto, l’RC aiuta a distinguere tra cambiamenti autentici e fluttuazioni dovute a inesattezze nella raccolta dei dati.

Ad esempio, nel caso di un disegno a tre fattori (perone \(\times\) item \(\times\) tempo), la formula di RC è la seguente:

\[ R_c = \frac{\sigma^2_{TP}}{\sigma^2_{TP} + \frac{1}{k}(\sigma^2_{TPI} + \sigma^2_{v})}, \]

dove:

  • \(R_c\) rappresenta la misura di affidabilità focale (Reliability Change).
  • \(\sigma^2_{TP}\) è la varianza tra il tempo e le persone (time by person variance).
  • \(\sigma^2_{TPI}\) è la varianza dell’interazione tra il tempo, le persone e gli item.
  • \(\sigma^2_{v}\) è la varianza dell’errore (error variance).
  • \(k\) è il numero di item utilizzati.

Il numeratore contiene solo una componente, ovvero la varianza tra il tempo e le persone, \(\sigma^2_{TP}\). Il denominatore invece contiene la stessa componente di varianza, sommata alla componente di varianza dell’errore, divisa per il numero di item \(k\). Si noti che la componente di varianza dell’errore è la somma \(\sigma^2_{TPI} + \sigma^2_{v}\).

19.7.1 Un esempio concreto

Applichiamo questi concetti ai dati di Bolger e Laurenceau (2013) riguardanti uno studio che ha coinvolto 50 persone valutate per 10 giorni su 4 item. Gli item sono “interessato,” “determinato,” “entusiasta” e “ispirato,” rispettivamente. Le valutazioni per ciascun item sono state fatte su una scala da 1 (per niente) a 5 (estremamente).

Nel contesto della Teoria della Generalizzabilità, possiamo esaminare la variabilità dei punteggi dei partecipanti e suddividerla nelle diverse fonti di errore, che in questo caso includono la variazione dovuta ai diversi partecipanti (fonte di errore “Valutatori”), a diversi giorni (fonte di errore “Giorni”) e agli item specifici utilizzati (fonte di errore “Item”). Possiamo valutare quanto della variazione totale nei punteggi è attribuibile a ciascuna di queste fonti di errore.

Per ottenere misure più precise e generalizzabili degli stati emotivi delle persone, possiamo calcolare gli “Score dell’Universo” per ciascun individuo. Gli score dell’universo rappresentano la media dei loro punteggi su tutti gli item, in tutti i giorni e su tutti i partecipanti. Questi score ci forniranno una stima più accurata del livello medio di “interessato,” “determinato,” “entusiasta” e “ispirato” per ciascun partecipante, considerando tutte le fonti di errore specificate.

Infine, utilizzando la Teoria della Generalizzabilità, possiamo progettare uno studio ottimale (“D Study”) per massimizzare l’affidabilità delle misurazioni con il minor numero possibile di partecipanti, giorni e item. In questo modo, otterremo misurazioni più affidabili senza la necessità di sottoporre i partecipanti a un numero eccessivo di giorni di valutazione o di utilizzare troppi item.

In questo esempio, ci poniamo la seguente domanda: “Le variazioni all’interno dei soggetti possono essere misurate in modo affidabile?” Per rispondere a questa domanda, dobbiamo specificare le dimensioni di generalizzabilità. In questo caso, le dimensioni sono i momenti nel tempo, le persone e gli item.

Per condurre questa analisi, useremo un modello a effetti misti per ciascuna delle dimensioni specificate.

Iniziamo leggendo i dati di Bolger e Laurenceau (2013).

filepath <- "https://quantdev.ssri.psu.edu/sites/qdev/files/psychometrics.csv"
d <- read.csv(filepath)
head(d)
A data.frame: 6 x 4
person time item y
<int> <int> <int> <int>
1 301 1 1 2
2 301 1 2 2
3 301 1 3 3
4 301 1 4 4
5 301 2 1 2
6 301 2 2 3

Ricodifichiamo la variabile item in modo che sia categorica utilizzando la funzione factor().

d$item <- factor(d$item)

Il pacchetto lme4 contiene la funzione lmer(), che permette di adattare un modello lineare a effetti misti a un specifico set di dati. Utilizzando il summary() del nostro modello, possiamo osservare gli effetti di ciascuna dimensione di generalizzabilità. Questo modello è specificato solo con l’intercetta (ANOVA con effetti casuali) allo scopo di comprendere le fonti di variabilità tra le diverse dimensioni.

model1 <- lmer(
    y ~ 1 +
        (1 | person) +
        (1 | time) +
        (1 | item) +
        (1 | person:time) +
        (1 | person:item) +
        (1 | time:item),
    data = d
)
summary(model1)
Linear mixed model fit by REML ['lmerMod']
Formula: 
y ~ 1 + (1 | person) + (1 | time) + (1 | item) + (1 | person:time) +  
    (1 | person:item) + (1 | time:item)
   Data: d

REML criterion at convergence: 4046.2

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-3.2721 -0.5311 -0.0105  0.5044  3.8614 

Random effects:
 Groups      Name        Variance Std.Dev.
 person:time (Intercept) 0.255272 0.50524 
 person:item (Intercept) 0.190111 0.43602 
 person      (Intercept) 0.361774 0.60148 
 time:item   (Intercept) 0.004983 0.07059 
 time        (Intercept) 0.000000 0.00000 
 item        (Intercept) 0.048596 0.22044 
 Residual                0.299542 0.54730 
Number of obs: 1802, groups:  
person:time, 455; person:item, 200; person, 50; time:item, 40; time, 10; item, 4

Fixed effects:
            Estimate Std. Error t value
(Intercept)   2.4340     0.1456   16.71
optimizer (nloptwrap) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')

Utilizzando la funzione VarCorr(), possiamo estrarre e salvare ciascun valore di varianza dalla tabella di riepilogo dei risultati.

(personTime <- VarCorr(model1)[[1]][1, 1]) # person:time
0.25527190865661
(personItem <- VarCorr(model1)[[2]][1, 1]) # person:item
0.190110610750237
(person <- VarCorr(model1)[[3]][1, 1]) # person
0.361774346872358
(timeItem <- VarCorr(model1)[[4]][1, 1]) #time:item 
0.00498254640955633
(time <- VarCorr(model1)[[5]][1, 1]) #time 
0
(item <- VarCorr(model1)[[6]][1, 1]) # item
0.0485955132048978
(residual <- sigma(model1)^2) # residual
0.299541866895693

Tornando alla nostra domanda iniziale: Esistono differenze affidabili all’interno di una persona nel corso del tempo?

Utilizzeremo la seguente formula per calcolare il coefficiente di affidabilità:

\[ R_c = \frac{\sigma^2_{\text{persona:tempo}}}{\sigma^2_{\text{persona:tempo}} + \frac{\sigma^2_{\text{persona:tempo:item}} + \sigma^2_{\text{errore}}}{k}}, \]

dove \(k\) si riferisce al numero di elementi. Nel nostro caso, \(k\)=4.

Non possiamo distinguere il termine \(\sigma^2_{\text{persona:tempo:item}}\) da \(\sigma^2_{\text{errore}}\), quindi useremo il termine di errore residuo.

k <- 4
(Rc <- personTime / (personTime + residual / k))
0.773182511408047

Questo coefficiente rappresenta il grado di adeguatezza e sistematicità delle misurazioni ripetute. Utilizzando le stesse regole interpretative del coefficiente alfa di Cronbach, possiamo determinare che quattro elementi possono catturare il cambiamento all’interno di una persona in modo affidabile, con \(R_c = 0.77\).

Un altro coefficiente di interesse è \(R_{1F}\), che viene calcolato come:

\[ R_{1F} = \frac{\sigma^2_{\text{persona}} + \left(\frac{\sigma^2_{\text{persona:item}}}{k}\right)}{\sigma^2_{\text{persona}} + \left(\frac{\sigma^2_{\text{persona:item}}}{k}\right) + \left(\frac{\sigma^2_{\text{errore}}}{k}\right)} \]

dove \(k\) si riferisce al numero di item. Nel nostro caso, \(k\)=4.

Per i dati presenti, abbiamo:

k <- 4
(R1f <- (person + (personItem / k)) / (person + (personItem / k) + (residual / k)))
0.845337866139592

Il coefficiente di affidabilità \(R_{1F}\) rappresenta la stima attesa dell’affidabilità tra le persone per un giorno fisso, una sorta di media degli alfa di Cronbach specifici per ogni giorno in diverse occasioni. Utilizzando le stesse regole interpretative del coefficiente alfa di Cronbach, possiamo concludere che quattro item possono catturare in modo affidabile le differenze tra le persone in qualsiasi giorno specifico, con \(R_{1F}\) = 0.85.

19.8 Conclusioni

La Teoria della Generalizzabilità (G theory) fornisce un quadro completo per stimare l’impatto di molteplici fonti di errore di misurazione simultaneamente. La G theory si basa su un modello ANOVA in cui i fattori sono chiamati “facet” (fattori) e i loro livelli sono noti come “conditions” (condizioni). Ad esempio, gli studenti potrebbero essere valutati su un insieme di compiti da un gruppo di valutatori in diverse occasioni. Compiti, valutatori e occasioni potrebbero tutti contribuire all’errore di misurazione e verrebbero considerati “facet” nel disegno della G theory. La varianza dovuta a questi “facet” e alle loro interazioni potrebbe essere stimata, e le loro relative contribuzioni alla varianza dell’errore di misurazione valutate.

Il concetto di generalizzabilità o affidabilità nella G theory è analogo al concetto di affidabilità nella CTT. Nella G theory, l’interesse è rivolto al grado in cui i punteggi osservati ottenuti in un determinato insieme di condizioni possono essere generalizzati alla media del punteggio che potrebbe essere ottenuto in un insieme di condizioni più ampiamente definite, noto come “UAO” (Universal Attribute Object). L’UAO è definito dal ricercatore e include tutte le condizioni che produrrebbero punteggi accettabili. Il grado in cui i punteggi si generalizzano dalle condizioni osservate all’UAO è definito come affidabilità. Livelli elevati di affidabilità indicano che i punteggi ottenuti nelle condizioni osservate si generalizzeranno ai punteggi universali delle persone. Il punteggio universale è analogo al punteggio vero nella CTT e può essere concepito come il punteggio medio che una persona otterrebbe se sottoposta a ripetuti test in tutte le possibili combinazioni di condizioni presenti nell’UAO.

19.9 Session Info

sessionInfo()
R version 4.4.1 (2024-06-14)
Platform: aarch64-apple-darwin20
Running under: macOS 15.0.1

Matrix products: default
BLAS:   /Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/lib/libRblas.0.dylib 
LAPACK: /Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/lib/libRlapack.dylib;  LAPACK version 3.12.0

locale:
[1] C

time zone: Europe/Rome
tzcode source: internal

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

other attached packages:
 [1] lme4_1.1-35.5     Matrix_1.7-0      nortest_1.0-4    
 [4] MASS_7.3-61       ggokabeito_0.1.0  viridis_0.6.5    
 [7] viridisLite_0.4.2 ggpubr_0.6.0      ggExtra_0.10.1   
[10] gridExtra_2.3     patchwork_1.3.0   bayesplot_1.11.1 
[13] semTools_0.5-6    semPlot_1.1.6     lavaan_0.6-19    
[16] psych_2.4.6.26    scales_1.3.0      markdown_1.13    
[19] knitr_1.48        lubridate_1.9.3   forcats_1.0.0    
[22] stringr_1.5.1     dplyr_1.1.4       purrr_1.0.2      
[25] readr_2.1.5       tidyr_1.3.1       tibble_3.2.1     
[28] ggplot2_3.5.1     tidyverse_2.0.0   here_1.0.1       

loaded via a namespace (and not attached):
  [1] rstudioapi_0.16.0  jsonlite_1.8.9     magrittr_2.0.3    
  [4] TH.data_1.1-2      estimability_1.5.1 farver_2.1.2      
  [7] nloptr_2.1.1       rmarkdown_2.28     vctrs_0.6.5       
 [10] minqa_1.2.8        base64enc_0.1-3    rstatix_0.7.2     
 [13] htmltools_0.5.8.1  broom_1.0.7        Formula_1.2-5     
 [16] htmlwidgets_1.6.4  plyr_1.8.9         sandwich_3.1-1    
 [19] emmeans_1.10.4     zoo_1.8-12         uuid_1.2-1        
 [22] igraph_2.0.3       mime_0.12          lifecycle_1.0.4   
 [25] pkgconfig_2.0.3    R6_2.5.1           fastmap_1.2.0     
 [28] shiny_1.9.1        digest_0.6.37      OpenMx_2.21.12    
 [31] fdrtool_1.2.18     colorspace_2.1-1   rprojroot_2.0.4   
 [34] Hmisc_5.1-3        fansi_1.0.6        timechange_0.3.0  
 [37] abind_1.4-8        compiler_4.4.1     withr_3.0.1       
 [40] glasso_1.11        htmlTable_2.4.3    backports_1.5.0   
 [43] carData_3.0-5      ggsignif_0.6.4     corpcor_1.6.10    
 [46] gtools_3.9.5       tools_4.4.1        pbivnorm_0.6.0    
 [49] foreign_0.8-87     zip_2.3.1          httpuv_1.6.15     
 [52] nnet_7.3-19        glue_1.8.0         quadprog_1.5-8    
 [55] promises_1.3.0     nlme_3.1-166       lisrelToR_0.3     
 [58] grid_4.4.1         pbdZMQ_0.3-13      checkmate_2.3.2   
 [61] cluster_2.1.6      reshape2_1.4.4     generics_0.1.3    
 [64] gtable_0.3.5       tzdb_0.4.0         data.table_1.16.0 
 [67] hms_1.1.3          car_3.1-3          utf8_1.2.4        
 [70] sem_3.1-16         pillar_1.9.0       IRdisplay_1.1     
 [73] rockchalk_1.8.157  later_1.3.2        splines_4.4.1     
 [76] lattice_0.22-6     survival_3.7-0     kutils_1.73       
 [79] tidyselect_1.2.1   miniUI_0.1.1.1     pbapply_1.7-2     
 [82] stats4_4.4.1       xfun_0.48          qgraph_1.9.8      
 [85] arm_1.14-4         stringi_1.8.4      pacman_0.5.1      
 [88] boot_1.3-31        evaluate_1.0.0     codetools_0.2-20  
 [91] mi_1.1             cli_3.6.3          RcppParallel_5.1.9
 [94] IRkernel_1.3.2     rpart_4.1.23       xtable_1.8-4      
 [97] repr_1.1.7         munsell_0.5.1      Rcpp_1.0.13       
[100] coda_0.19-4.1      png_0.1-8          XML_3.99-0.17     
[103] parallel_4.4.1     jpeg_0.1-10        mvtnorm_1.3-1     
[106] openxlsx_4.2.7.1   crayon_1.5.3       rlang_1.1.4       
[109] multcomp_1.4-26    mnormt_2.1.1