10 Metodi di stima dell’affidabilità
Preparazione del Notebook
10.1 Introduzione
I punteggi ottenuti da test psicologici possono variare per differenze tra item, occasioni di somministrazione o modalità di valutazione. La CTT affronta questo problema introducendo il concetto di affidabilità, intesa come stabilità e coerenza delle misure ottenute, distinguendo tra “punteggio vero” e “errore di misurazione”.
Nel capitolo precedente abbiamo visto che l’affidabilità riflette la proporzione della varianza dovuta al punteggio vero rispetto alla varianza totale. Il problema successivo è stimare accuratamente l’affidabilità, considerando diverse modalità di errore.
10.2 Come Stimare l’Affidabilità
Per stimare l’affidabilità (\(\rho^2_{XT}\)), dobbiamo affrontare la difficoltà legata all’impossibilità di osservare direttamente il punteggio vero o l’errore di misurazione. La strategia di stima dipende da come definiamo e interpretiamo l’errore di misurazione (\(\sigma^2_E\)):
-
Affidabilità delle Forme Parallele:
- considera l’errore come differenza tra punteggi ottenuti da forme equivalenti del test.
-
Consistenza Interna:
- valuta quanto gli item all’interno dello stesso test siano omogenei rispetto al costrutto misurato (es. Alpha di Cronbach).
-
Affidabilità Test-Retest (Coerenza Temporale):
- misura l’errore come variazione dei punteggi nel tempo, attraverso somministrazioni ripetute dello stesso test.
La principale differenza tra questi metodi è nella definizione operativa e nel calcolo della varianza d’errore (\(\sigma^2_E\)).
10.3 Affidabilità come Consistenza Interna
La consistenza interna valuta l’omogeneità tra item. Nella CTT, esistono tre principali modelli teorici che descrivono come i punteggi veri di diversi item si relazionano tra loro (cfr. sec-ctt-foundations):
10.3.1 Item paralleli
Definizione in CTT:
-
\(\tau\)-equivalenti con intercetta nulla e fattore di scala pari a 1,
- stessa varianza dell’errore di misura.
Formule generiche:
\[ \begin{cases} X_1 = T + E_1 \\ X_2 = T + E_2 \\ \end{cases} \]
con \(\mathbb{E}[E_1] = \mathbb{E}[E_2] = 0\) e \(\mathrm{Var}(E_1) = \mathrm{Var}(E_2)\).
In questo caso, la correlazione \(\mathrm{corr}(X_1, X_2)\) coincide con l’affidabilità, data da
\[ \rho_{X_1 X_2} \;=\; \frac{\sigma_T^2}{\sigma_T^2 + \sigma_E^2}. \]
Esempio in R.
set.seed(123)
n <- 100000 # numero di osservazioni
# 1) Generiamo il punteggio vero T
T <- rnorm(n, mean = 50, sd = 10)
# 2) Generiamo errori di misura con stessa varianza
E1 <- rnorm(n, mean = 0, sd = 5)
E2 <- rnorm(n, mean = 0, sd = 5)
# 3) Costruiamo i due item paralleli
X1_parallel <- T + E1
X2_parallel <- T + E2
# 4) Calcoliamo la correlazione tra i due item
corr_par <- cor(X1_parallel, X2_parallel)
# 5) Calcoliamo la "affidabilità" teorica di uno qualunque di questi item
# secondo CTT: var(T) / var(X1_parallel)
rel_par <- var(T) / var(X1_parallel)
cat("Item paralleli:\n")
#> Item paralleli:
cat("Correlazione (X1, X2):", round(corr_par, 2), "\n")
#> Correlazione (X1, X2): 0.8
cat("Affidabilità teorica :", round(rel_par, 2), "\n")
#> Affidabilità teorica : 0.8
Risultato: La correlazione tra \(X_1\) e \(X_2\) dovrebbe approssimare molto da vicino la stima dell’affidabilità: se i due item sono paralleli, “vedono” lo stesso punteggio vero con la stessa qualità di misura.
10.3.2 Item \(\tau\)-equivalenti
Definizione in CTT:
- Stesso coefficiente di pendenza (\(b_{ij} = 1\)),
- Possibile shift costante (intercetta diversa) o differenze nelle varianze d’errore,
- In generale, \(\mathrm{corr}(X_1, X_2)\) non è uguale all’affidabilità, anche se i punteggi veri differiscono solo per un termine costante.
Formule generiche (possibilità di shift di media e/o errori differenti):
\[ \begin{cases} X_1 = T + E_1,\\ X_2 = (T + c) + E_2, \end{cases} \] dove \(c \neq 0\) è uno shift nella media o \(\mathrm{Var}(E_1)\neq \mathrm{Var}(E_2)\).
Esempio in R.
# 1) Punteggio vero T
T <- rnorm(n, mean = 50, sd = 10)
# 2) Generiamo errori con varianze diverse
E1_tau <- rnorm(n, mean = 0, sd = 4)
E2_tau <- rnorm(n, mean = 0, sd = 6)
# 3) Aggiungiamo un piccolo shift (c)
c_shift <- 5
# 4) Costruiamo i due item tau-equivalenti (stessa "pendenza" = 1)
X1_tau <- T + E1_tau
X2_tau <- (T + c_shift) + E2_tau
# 5) Correlazione
corr_tau <- cor(X1_tau, X2_tau)
# 6) "Affidabilità" teorica di X1_tau (ad es.)
rel_tau <- var(T) / var(X1_tau)
cat("\nItem tau-equivalenti:\n")
#>
#> Item tau-equivalenti:
cat("Correlazione (X1, X2):", round(corr_tau, 3), "\n")
#> Correlazione (X1, X2): 0.796
cat("Affidabilità teorica :", round(rel_tau, 3), "\n")
#> Affidabilità teorica : 0.867
Risultato: Qui la correlazione tra \(X_1\) e \(X_2\) non coincide con la stima di affidabilità, perché abbiamo violato una delle condizioni di parallelismo (stessa varianza d’errore e/o zero shift). Pur avendo la stessa “pendenza” (\(b=1\)), lo shift e la differente varianza d’errore fanno sì che \(\mathrm{corr}(X_1, X_2)\neq \mathrm{var}(T)/\mathrm{var}(X_1)\).
10.3.3 Item congenerici
Definizione in CTT:
- Gli item possono avere pendenze (slopes) diverse e intercette diverse.
- In formula: \(X_1 = a_1 + b_1 T + E_1\), \(X_2 = a_2 + b_2 T + E_2\).
- I rapporti tra varianze e correlazioni diventano più complessi, e non è possibile che la mera correlazione tra \(X_1\) e \(X_2\) coincida con l’affidabilità di uno dei due, se non per casi particolari.
Esempio in R.
# 1) Punteggio vero T
T <- rnorm(n, mean = 50, sd = 10)
# 2) Generiamo errori con varianze (o distribuzioni) diverse
E1_cong <- rnorm(n, mean = 0, sd = 4)
E2_cong <- rnorm(n, mean = 0, sd = 8)
# 3) Fattori di scala e intercette diverse
a1 <- 10
b1 <- 1.2
a2 <- -5
b2 <- 0.8
# 4) Costruiamo i due item congenerici
X1_cong <- a1 + b1 * T + E1_cong
X2_cong <- a2 + b2 * T + E2_cong
# 5) Correlazione
corr_cong <- cor(X1_cong, X2_cong)
# 6) Affidabilità teorica di X1_cong (ad es.)
# var( T' ) / var( X1_cong ),
# dove T' = b1 * T (non va scordato che a1 è un shift)
# ma in CTT spesso si assume T' come 'vera' per X1
var_true_X1 <- var(b1 * T) # var(b1*T) = b1^2 * var(T)
var_X1 <- var(X1_cong)
rel_cong <- var_true_X1 / var_X1
cat("\nItem congenerici:\n")
#>
#> Item congenerici:
cat("Correlazione (X1, X2):", round(corr_cong, 3), "\n")
#> Correlazione (X1, X2): 0.673
cat("Affidabilità teorica di X1:", round(rel_cong, 3), "\n")
#> Affidabilità teorica di X1: 0.899
Risultato: La correlazione \(\mathrm{corr}(X_1, X_2)\) non coincide con \(\mathrm{var}(b_1 T)/\mathrm{var}(X_1)\). Gli item congenerici “vedono” il costrutto latente con pendenze e intercette diverse, quindi non c’è motivo che la semplice correlazione tra \(X_1\) e \(X_2\) equivalga all’affidabilità di uno dei due.
Conclusioni.
-
Item paralleli: stessa media, stessa varianza vera (e d’errore), \(\mathrm{corr}(X_1, X_2) =\) affidabilità.
-
Item \(\tau\)-equivalenti: stessa “pendenza” (\(b=1\)), ma possibili shift di media o differenze di varianza d’errore; la correlazione tra i due item non equivale all’affidabilità di un singolo item.
- Item congenerici: pendenza e intercetta diverse; la correlazione tra i due item si discosta ancora di più dall’affidabilità.
10.3.4 Coefficiente Alpha di Cronbach
I coefficiente Alpha di Cronbach è l’indice più utilizzato fornito dalla CTT per misurare la consistenza interna. Il coefficiente Alpha è adatto per item \(\tau\)-equivalenti:
\[ \alpha = \frac{k}{k-1} \left(1 - \frac{\sum \sigma_i^2}{\sigma_X^2}\right) , \tag{10.1}\]
dove:
- \(k\) è il numero di item,
- \(\sigma_i^2\) è la varianza dell’item i,
- \(\sigma_X^2\) è la varianza totale del test.
Una derivazione della formula del coefficiente alpha di Cronbach sarà fornita nel capitolo sec-fa-reliability.
L’Alpha di Cronbach fornisce una stima conservativa (limite inferiore) dell’affidabilità solo quando le assunzioni del modello \(\tau\)-equivalente sono rispettate. In caso contrario, può sovrastimare l’affidabilità. In altre parole, per utilizzare il coefficiente alpha di Cronbach è necessario che gli item soddisfino la condizione di \(\tau\)-equivalenza.
Esempio 10.1 Per illustrare la procedura di calcolo del coefficiente \(\alpha\), useremo i dati bfi
contenuti nel pacchetto psych
. Il dataframe bfi
comprende 25 item di autovalutazione della personalità. Sono riportati i dati di 2800 soggetti. Ci concentreremo qui sulla sottoscala Openness:
- O1: Am full of ideas;
- O2: Avoid difficult reading material;
- O3: Carry the conversation to a higher level;
- O4: Spend time reflecting on things;
- O5: Will not probe deeply into a subject.
Leggiamo i dati in R.
Esaminiamo la correlazione tra gli item della sottoscale Openness.
È necessario ricodificare due item.
bfi$O2r <- 7 - bfi$O2
bfi$O5r <- 7 - bfi$O5
Consideriamo la matrice di varianze e covarianze della sottoscala Openness.
Calcoliamo alpha:
p <- 5
alpha <- (p / (p - 1)) * (1 - tr(C) / sum(C))
alpha
#> [1] 0.6002
Lo stesso risultato si ottiene utilizzando la funzione alpha()
contenuta nel pacchetto psych
:
psych::alpha(C)
#>
#> Reliability analysis
#> Call: psych::alpha(x = C)
#>
#> raw_alpha std.alpha G6(smc) average_r S/N median_r
#> 0.6 0.61 0.57 0.24 1.5 0.23
#>
#> 95% confidence boundaries
#> lower alpha upper
#> Feldt -0.49 0.6 0.95
#>
#> Reliability if an item is dropped:
#> raw_alpha std.alpha G6(smc) average_r S/N var.r med.r
#> O1 0.53 0.53 0.48 0.22 1.1 0.0092 0.23
#> O2r 0.57 0.57 0.51 0.25 1.3 0.0076 0.22
#> O3 0.50 0.50 0.44 0.20 1.0 0.0071 0.20
#> O4 0.61 0.62 0.56 0.29 1.6 0.0044 0.29
#> O5r 0.51 0.53 0.47 0.22 1.1 0.0115 0.20
#>
#> Item statistics
#> r r.cor r.drop
#> O1 0.65 0.52 0.39
#> O2r 0.60 0.43 0.33
#> O3 0.69 0.59 0.45
#> O4 0.52 0.29 0.22
#> O5r 0.66 0.52 0.42
10.3.5 Coefficiente KR-20
La formula di Kuder-Richardson-20 (KR-20) è un caso particolare del coefficiente \(\alpha\) di Cronbach. Se ogni item è dicotomico, il coefficiente \(\alpha\) di Cronbach diventa il KR-20. Il coefficiente Coefficiente KR-20 si calcola con la formula:
\[ \mathrm{KR}_{20} \;=\; \frac{k}{k - 1} \left( 1 \;-\; \frac{\sum_{i=1}^k p_i \,\bigl(1 - p_i\bigr)}{\sigma_X^2} \right), \tag{10.2}\]
dove:
- \(k\) è il numero di item nel test,
- \(p_i\) è la proporzione di risposte esatte all’item \(i\),
- \(\sigma_{X}^{2}\) è la varianza del punteggio totale.
Esempio 10.2 Consideriamo il data-set LSAT
contenuto nel pacchetto ltm
.
KR20 <- function(responses) {
# Get number of items (N) and individuals
n.items <- ncol(responses)
n.persons <- nrow(responses)
# get p_j for each item
p <- colMeans(responses)
# Get total scores (X)
x <- rowSums(responses)
# observed score variance
var.x <- var(x) * (n.persons - 1) / n.persons
# Apply KR-20 formula
rel <- (n.items / (n.items - 1)) * (1 - sum(p * (1 - p)) / var.x)
return(rel)
}
KR20(LSAT)
#> [1] 0.295
10.3.6 Coefficiente KR-21
Il coefficiente KR-21 si ottiene da KR-20 assumendo che tutti gli item abbiano la stessa difficoltà, ossia la stessa proporzione di risposte corrette \(\bar p\). In tale condizione, la formula si semplifica a:
\[ \mathrm{KR}_{21} \;=\; \frac{k}{k - 1} \Biggl( 1 - \frac{k\,\bar{p}\,\bigl(1 - \bar{p}\bigr)}{\sigma_X^2} \Biggr), \tag{10.3}\]
dove:
- \(k\) è il numero di item,
- \(\bar p = \frac{1}{k}\sum_{i=1}^k p_i\) è la media delle proporzioni di risposte corrette,
- \(\sigma_X^2\) è la varianza del punteggio totale del test (ovvero la varianza della somma di tutti gli item).
Se, invece, si vuole esprimere \(\bar p\) in funzione di \(\sum_{i=1}^k p_i\), la formula rimane comunque la stessa, ma si “nasconde” la somma all’interno del termine \(\bar p\).
Cosa cambia rispetto a KR-20?
-
KR-20 (generale)
\[ \mathrm{KR}_{20} \;=\; \frac{k}{k-1} \Bigl( 1 - \frac{\sum_{i=1}^k p_i(1 - p_i)}{\sigma_X^2} \Bigr). \]-
Non richiede che tutti gli item abbiano la stessa \(\,p_i\).
- La sommatoria \(\,\sum_{i=1}^k p_i(1-p_i)\) cattura la variazione di difficoltà tra i singoli item.
-
Non richiede che tutti gli item abbiano la stessa \(\,p_i\).
-
KR-21 (caso speciale)
\[ \mathrm{KR}_{21} \;=\; \frac{k}{k - 1} \Bigl( 1 - \frac{k\,\bar{p}\,(1 - \bar{p})}{\sigma_X^2} \Bigr), \] con \(\bar{p} = \frac{1}{k}\sum_{i=1}^k p_i\).-
Assume esplicitamente \(\,p_i = \bar{p}\) (cioè tutti gli item hanno la stessa difficoltà).
- In tal caso, la sommatoria di KR-20 si riduce a \(k\,\bar{p}(1-\bar{p})\).
-
Assume esplicitamente \(\,p_i = \bar{p}\) (cioè tutti gli item hanno la stessa difficoltà).
In sintesi: KR-21 è una semplificazione di KR-20 che diventa valida solo sotto l’assunzione (spesso irrealistica) di “item ugualmente difficili”. Per questo, nella pratica, KR-21 è meno utilizzato di KR-20, in quanto meno flessibile e più restrittivo.
10.3.7 Formula di Spearman-Brown
La formula di Spearman-Brown consente di stimare l’affidabilità di un test composto da \(p\) item paralleli, partendo dalla stima dell’affidabilità di un singolo item (\(\rho_1\)):
\[ \rho_p = \frac{p \,\rho_1}{(p - 1)\,\rho_1 + 1}. \tag{10.4}\]
In questo contesto, \(\rho_1\) rappresenta la correlazione (o affidabilità) media di un item rispetto al costrutto che si intende misurare, mentre \(p\) è il numero di item totali. Una derivazione della formula del coefficiente di Spearman-Brown sarà fornita nel capitolo sec-fa-reliability.
Esempio 10.3 Stimiamo l’affidabilità della sottoscala Openness di un questionario, assumendo che gli item siano paralleli. Di seguito, otteniamo la matrice di correlazione degli item e calcoliamo la correlazione media tra di essi, usandola come \(\rho_1\).
R <- cor(
bfi[c("O1", "O2r", "O3", "O4", "O5r")],
use = "pairwise.complete.obs"
)
round(R, 2)
#> O1 O2r O3 O4 O5r
#> O1 1.00 0.21 0.40 0.18 0.24
#> O2r 0.21 1.00 0.26 0.07 0.32
#> O3 0.40 0.26 1.00 0.19 0.31
#> O4 0.18 0.07 0.19 1.00 0.18
#> O5r 0.24 0.32 0.31 0.18 1.00
# Numero di item
p <- 5
# Calcolo della correlazione media tra item (stima di rho_1)
# Sostituiamo la diagonale con NA
diag(R) <- NA
# Calcoliamo la media di tutti i valori non-NA
ro_1 <- mean(R, na.rm = TRUE)
ro_1
#> [1] 0.2365
Infine, applichiamo la formula di Spearman-Brown per ottenere la stima dell’affidabilità dell’intera scala:
rho_p <- (p * ro_1) / ((p - 1) * ro_1 + 1)
rho_p
#> [1] 0.6077
In sintesi, la Spearman-Brown combina il numero degli item (\(p\)) con l’affidabilità di un singolo item (\(\rho_1\)) per stimare la consistenza interna globale di una scala composta da item paralleli.
10.3.8 L’indice \(\omega\) di McDonald
L’indice \(\omega\) di McDonald è un metodo per stimare l’affidabilità come consistenza interna in presenza di item congenerici. Maggiori approfondimenti sul suo calcolo e utilizzo saranno forniti nel sec-fa-reliability.
10.4 Affidabilità delle forme alternative
L’affidabilità delle forme alternative si riferisce alla coerenza tra i punteggi ottenuti da versioni diverse, ma equivalenti, di uno stesso test. Lo scopo principale di queste forme è ridurre gli effetti di pratica e memoria, ma è essenziale assicurarsi che le diverse versioni siano effettivamente parallele o almeno molto simili in termini di contenuto e difficoltà.
Per valutarne l’affidabilità, si esamina la correlazione tra i punteggi delle varie forme. Nei termini della CTT, se le forme alternative possono essere considerate parallele (cioè stesse medie e varianze vere, più varianze d’errore identiche), allora la loro correlazione corrisponde alla affidabilità.
10.5 Affidabilità Test-Retest
L’affidabilità test-retest valuta la stabilità dei punteggi ottenuti somministrando lo stesso test a distanza di tempo sullo stesso gruppo di persone. Questo metodo è particolarmente indicato per costrutti considerati relativamente stabili (ad esempio, intelligenza e tratti di personalità). Di contro, risulta inadeguato per costrutti che possono subire variazioni rapide o frequenti, poiché i mutamenti nei punteggi potrebbero riflettere reali cambiamenti del costrutto piuttosto che una mancanza di attendibilità del test.
10.6 Affidabilità dei Punteggi Compositi
L’affidabilità di un punteggio composito si riferisce alla stabilità di un indice costruito combinando più sottoscale o item. Di norma, un punteggio composito risulta più affidabile rispetto a ciascun sottopunteggio considerato individualmente, perché l’errore specifico di ogni sottoscale/item tende a “compensarsi” quando i punteggi sono tra loro positivamente correlati.
10.6.1 Esempio numerico
Supponiamo di avere due subtest, \(X_1\) e \(X_2\), ciascuno con:
- varianza del punteggio vero pari a \(25\),
- varianza dell’errore di misura pari a \(10\),
- covarianza tra i punteggi veri dei due subtest pari a \(15\).
Varianza del punteggio composito \(Z\) (sola parte vera). Se \(Z\) è la somma dei due subtest:
\[ \mathrm{Var}(Z_{\text{vero}}) = \mathrm{Var}(X_1^{\text{vero}}) + \mathrm{Var}(X_2^{\text{vero}}) + 2\,\mathrm{Cov}(X_1^{\text{vero}},X_2^{\text{vero}}) = 25 + 25 + 2 \cdot 15 = 80. \]Varianza totale del composito (punteggio vero + errore). Dato che ciascun subtest ha 10 di varianza d’errore, la varianza totale di \(Z\) diventa:
\[ \mathrm{Var}(Z_{\text{totale}}) = \underbrace{25 + 25}_{\text{parte vera}} + \underbrace{10 + 10}_{\text{parte errore}} + \underbrace{2 \cdot 15}_{\text{covarianza vera}} = 35 + 35 + 2 \cdot 15 = 100. \]
La varianza totale del punteggio composito \(Z\) è data dalla somma della varianza della componente vera, della varianza della componente di errore e del doppio della covarianza tra le due variabili, in base alle proprietà della varianza di una somma di variabili aleatorie.
Se consideriamo un punteggio composito \(Z\) ottenuto come somma di due subtest \(X_1\) e \(X_2\), la varianza di \(Z\) è data dalla formula:
\[ \text{Var}(Z) = \text{Var}(X_1 + X_2) = \text{Var}(X_1) + \text{Var}(X_2) + 2\cdot\text{Cov}(X_1, X_2) \]
Ciascun subtest \(X_1\) e \(X_2\) è composto da due componenti:
- La parte vera \(X_1^{\text{vero}}\) e \(X_2^{\text{vero}}\)
- La parte di errore \(X_1^{\text{errore}}\) e \(X_2^{\text{errore}}\)
Possiamo quindi scrivere:
\[ X_1 = X_1^{\text{vero}} + X_1^{\text{errore}} \]
\[ X_2 = X_2^{\text{vero}} + X_2^{\text{errore}} \]
Utilizzando la proprietà della varianza per una somma di variabili, la varianza totale di \(Z\) diventa:
\[ \text{Var}(Z) = \text{Var}(X_1^{\text{vero}} + X_1^{\text{errore}} + X_2^{\text{vero}} + X_2^{\text{errore}}) \]
Espandendo il termine:
\[ \text{Var}(Z) = \text{Var}(X_1^{\text{vero}}) + \text{Var}(X_2^{\text{vero}}) + \text{Var}(X_1^{\text{errore}}) + \text{Var}(X_2^{\text{errore}}) + 2\cdot\text{Cov}(X_1^{\text{vero}}, X_2^{\text{vero}}) \]
Dato che si assume che gli errori non siano correlati tra loro né con le parti vere (\(\text{Cov}(X_1^{\text{vero}}, X_1^{\text{errore}}) = 0\) e simili), tutte le altre covarianze sono nulle.
Ora, sostituendo i valori numerici:
-
La varianza della parte vera è:
\[ \text{Var}(X_1^{\text{vero}}) + \text{Var}(X_2^{\text{vero}}) = 25 + 25 = 50 \]
-
La varianza della parte di errore è:
\[ \text{Var}(X_1^{\text{errore}}) + \text{Var}(X_2^{\text{errore}}) = 10 + 10 = 20 \]
-
La covarianza tra le parti vere contribuisce con:
\[ 2\cdot\text{Cov}(X_1^{\text{vero}}, X_2^{\text{vero}}) = 2 \cdot 15 = 30 \]
Pertanto, la varianza totale di \(Z\) è:
\[ \text{Var}(Z) = 50 + 20 + 30 = 100 \]
Il termine \(2\cdot\text{Cov}(X_1^{\text{vero}}, X_2^{\text{vero}})\) appare perché, quando calcoliamo la varianza di una somma, dobbiamo considerare non solo le varianze individuali, ma anche la covarianza tra le due variabili, che rappresenta la loro interdipendenza. Questo termine indica quanto i due punteggi veri tendono a variare insieme in modo sistematico.
Affidabilità del composito. Il coefficiente di affidabilità corrisponde alla proporzione di varianza vera rispetto alla varianza totale:
\[ \rho_Z = \frac{\mathrm{Var}(Z_{\text{vero}})}{\mathrm{Var}(Z_{\text{totale}})} = \frac{80}{100} = 0.80. \]-
Confronto con un singolo subtest. Per un solo subtest:
-
\(\mathrm{Var}(\text{vero}) = 25\).
-
\(\mathrm{Var}(\text{totale}) = 25 + 10 = 35\).
\[ \rho_{X_i} = \frac{25}{35} \approx 0.714. \]
-
\(\mathrm{Var}(\text{vero}) = 25\).
L’affidabilità del punteggio composito (\(0.80\)) risulta quindi maggiore rispetto a quella di un singolo subtest (\(\approx 0.71\)). Questa differenza è dovuta al fatto che la covarianza vera tra i due subtest (15) aumenta la porzione di varianza attribuibile a differenze reali, mentre la parte di errore si “diluisce” nel composito.
10.6.2 Dimostrazione pratica in R
Per confermare questi calcoli, possiamo simulare dati in R:
set.seed(123)
n <- 10000 # numero di soggetti
# Creiamo due punteggi veri correlati
# Varianza = 25 => sd = 5
# Covarianza = 15 => correlazione = 15/(5*5) = 0.60
library(MASS)
Sigma_true <- matrix(c(
25, 15,
15, 25
), nrow = 2)
X_true <- MASS::mvrnorm(
n = n,
mu = c(0, 0),
Sigma = Sigma_true
)
# Aggiungiamo errori indipendenti (varianza 10 => sd = ~3.162)
E1 <- rnorm(n, 0, sqrt(10))
E2 <- rnorm(n, 0, sqrt(10))
# Subtest osservati (X1 e X2)
X1 <- X_true[, 1] + E1
X2 <- X_true[, 2] + E2
# Composito
Z <- X1 + X2
# Calcoliamo varianza vera stimata
var_true_X1 <- var(X_true[, 1]) # Dovrebbe ~25
var_true_X2 <- var(X_true[, 2]) # Dovrebbe ~25
cov_true <- cov(X_true[, 1], X_true[, 2]) # Dovrebbe ~15
c(var_true_X1, var_true_X2, cov_true)
#> [1] 24.84 25.08 14.93
# Verifichiamo varianza e affidabilità osservate
var_X1 <- var(X1)
var_X2 <- var(X2)
var_Z <- var(Z)
c(var_X1, var_X2, var_Z)
#> [1] 35.46 34.46 99.52
# Stima affidabilità subtest 1
reliability_X1 <- var_true_X1 / var_X1
# Stima affidabilità subtest 2
reliability_X2 <- var_true_X2 / var_X2
# Stima affidabilità punteggio composito
# var(Z_vero) = var_true_X1 + var_true_X2 + 2 * cov_true
var_true_Z <- var_true_X1 + var_true_X2 + 2 * cov_true
reliability_Z <- var_true_Z / var_Z
cat("Affidabilità subtest 1:", round(reliability_X1, 3), "\n")
#> Affidabilità subtest 1: 0.701
cat("Affidabilità subtest 2:", round(reliability_X2, 3), "\n")
#> Affidabilità subtest 2: 0.728
cat("Affidabilità composito :", round(reliability_Z, 3), "\n")
#> Affidabilità composito : 0.802
Eseguendo questo codice, troveremo valori prossimi a quelli attesi teoricamente: circa 0.71 per i singoli subtest e circa 0.80 per il punteggio composito.
Conclusioni.
-
Maggiore affidabilità: Combinare più subtest (o item) correlati tende a migliorare l’affidabilità del punteggio totale, perché aumenta la porzione di varianza vera rispetto alla varianza d’errore.
- Vantaggio pratico: Un punteggio composito è spesso considerato più rappresentativo del costrutto di interesse, specialmente in ambito psicometrico, dove il singolo item o subtest può essere soggetto a un errore specifico più elevato.
10.7 Affidabilità dei Punteggi Differenza
Quando si parla di “punteggio differenza”, ci si riferisce generalmente a un valore ottenuto sottraendo due misure, ad esempio i punteggi di un test somministrato prima e dopo un trattamento (punteggi “pre” e “post”). L’affidabilità di questo punteggio differenza si collega alla sua stabilità come indicatore, ovvero alla coerenza con cui misura la variazione tra pre e post.
Nella pratica, tali punteggi differenza spesso risultano meno affidabili rispetto ai punteggi originali, soprattutto quando le due misure sono fortemente correlate. Questo accade perché, all’aumentare della correlazione tra i due test, gran parte della varianza in comune “si annulla” nella differenza, lasciando i punteggi differenza più esposti alla variabilità casuale.
10.7.1 1. Formula Generale
Se \(X\) e \(Y\) sono le due misure (ad es. “pre” e “post”), l’affidabilità del punteggio differenza \((X - Y)\) può essere calcolata con la formula di Lord:
\[ r_{dd} = \frac{0.5\,[r_{xx} + r_{yy}] - r_{xy}}{1 - r_{xy}}, \tag{10.5}\]
dove:
-
\(r_{xx}\) e \(r_{yy}\) sono le affidabilità (per esempio Cronbach \(\alpha\) o test-retest) delle due misure \(X\) e \(Y\);
-
\(r_{xy}\) è la correlazione tra \(X\) e \(Y\);
- \(r_{dd}\) è l’affidabilità del punteggio differenza \((X - Y)\).
Passo 1: Definizione dell’affidabilità di una variabile
L’affidabilità di una variabile è definita come la proporzione di varianza vera sulla varianza totale. Se una variabile \(X\) è composta da una componente vera \(T_X\) e un errore \(E_X\), possiamo scrivere:
\[ X = T_X + E_X \]
L’affidabilità di \(X\) è data da:
\[ r_{xx} = \frac{\text{Var}(T_X)}{\text{Var}(X)} \]
Analogamente, per \(Y\):
\[ Y = T_Y + E_Y \]
\[ r_{yy} = \frac{\text{Var}(T_Y)}{\text{Var}(Y)} \]
Passo 2: Definizione del punteggio differenza
Il punteggio differenza è definito come:
\[ D = X - Y \]
La varianza del punteggio differenza è:
\[ \text{Var}(D) = \text{Var}(X - Y) \]
Utilizzando la proprietà della varianza:
\[ \text{Var}(D) = \text{Var}(X) + \text{Var}(Y) - 2\text{Cov}(X, Y) \]
Poiché la covarianza è:
\[ \text{Cov}(X, Y) = r_{xy} \cdot \sigma_X \cdot \sigma_Y \]
si può riscrivere la varianza del punteggio differenza come:
\[ \text{Var}(D) = \sigma_X^2 + \sigma_Y^2 - 2 r_{xy} \sigma_X \sigma_Y \]
Passo 3: Calcolo della componente vera del punteggio differenza
Analogamente a quanto fatto per \(X\) e \(Y\), scriviamo la componente vera del punteggio differenza:
\[ T_D = T_X - T_Y \]
La sua varianza è:
\[ \text{Var}(T_D) = \text{Var}(T_X - T_Y) \]
Utilizzando la stessa proprietà della varianza:
\[ \text{Var}(T_D) = \text{Var}(T_X) + \text{Var}(T_Y) - 2\text{Cov}(T_X, T_Y) \]
Poiché l’affidabilità è definita come il rapporto tra la varianza vera e la varianza osservata:
\[ \text{Var}(T_X) = r_{xx} \text{Var}(X), \quad \text{Var}(T_Y) = r_{yy} \text{Var}(Y) \]
\[ \text{Cov}(T_X, T_Y) = r_{xy} \sqrt{r_{xx} r_{yy}} \sigma_X \sigma_Y \]
Quindi:
\[ \text{Var}(T_D) = r_{xx} \sigma_X^2 + r_{yy} \sigma_Y^2 - 2 r_{xy} \sqrt{r_{xx} r_{yy}} \sigma_X \sigma_Y \]
Passo 4: Calcolo dell’affidabilità del punteggio differenza
L’affidabilità del punteggio differenza è data da:
\[ r_{dd} = \frac{\text{Var}(T_D)}{\text{Var}(D)} \]
Sostituendo le espressioni trovate:
\[ r_{dd} = \frac{r_{xx} \sigma_X^2 + r_{yy} \sigma_Y^2 - 2 r_{xy} \sqrt{r_{xx} r_{yy}} \sigma_X \sigma_Y}{\sigma_X^2 + \sigma_Y^2 - 2 r_{xy} \sigma_X \sigma_Y} \]
Se assumiamo che \(\sigma_X = \sigma_Y\) (varianza uguale per entrambe le misure), possiamo semplificare la formula.
Semplificazione della varianza del punteggio differenza
Abbiamo definito la varianza del punteggio differenza come:
\[ \text{Var}(D) = \sigma_X^2 + \sigma_Y^2 - 2 r_{xy} \sigma_X \sigma_Y \]
Sostituendo \(\sigma_X = \sigma_Y = \sigma\):
\[ \text{Var}(D) = \sigma^2 + \sigma^2 - 2 r_{xy} \sigma \sigma \]
\[ \text{Var}(D) = 2\sigma^2 (1 - r_{xy}) \]
Semplificazione della varianza della componente vera del punteggio differenza
Analogamente, la varianza della componente vera del punteggio differenza è:
\[ \text{Var}(T_D) = r_{xx} \sigma_X^2 + r_{yy} \sigma_Y^2 - 2 r_{xy} \sqrt{r_{xx} r_{yy}} \sigma_X \sigma_Y \]
Sostituendo \(\sigma_X = \sigma_Y = \sigma\):
\[ \text{Var}(T_D) = r_{xx} \sigma^2 + r_{yy} \sigma^2 - 2 r_{xy} \sqrt{r_{xx} r_{yy}} \sigma \sigma \]
\[ \text{Var}(T_D) = \sigma^2 \left( r_{xx} + r_{yy} - 2 r_{xy} \sqrt{r_{xx} r_{yy}} \right) \]
Calcolo dell’affidabilità del punteggio differenza
L’affidabilità del punteggio differenza è:
\[ r_{dd} = \frac{\text{Var}(T_D)}{\text{Var}(D)} \]
Sostituendo le espressioni ottenute per \(\text{Var}(T_D)\) e \(\text{Var}(D)\):
\[ r_{dd} = \frac{\sigma^2 \left( r_{xx} + r_{yy} - 2 r_{xy} \sqrt{r_{xx} r_{yy}} \right)}{2\sigma^2 (1 - r_{xy})} \]
Semplificando \(\sigma^2\):
\[ r_{dd} = \frac{r_{xx} + r_{yy} - 2 r_{xy} \sqrt{r_{xx} r_{yy}}}{2(1 - r_{xy})} \]
Questa è la formula intermedia che, riorganizzata, porta alla formula di Lord.
Passo 5: Ottenimento della formula di Lord
Riscriviamo il numeratore:
\[ r_{xx} + r_{yy} - 2 r_{xy} \sqrt{r_{xx} r_{yy}} = (r_{xx} + r_{yy}) - 2 r_{xy} \sqrt{r_{xx} r_{yy}} \]
Fattorizziamo il numeratore estraendo un fattore \(0.5\):
\[ r_{dd} = \frac{0.5 (r_{xx} + r_{yy}) - r_{xy} \sqrt{r_{xx} r_{yy}}}{1 - r_{xy}} \]
Se \(r_{xx} = r_{yy}\), possiamo riscrivere ulteriormente come:
\[ r_{dd} = \frac{0.5 (r_{xx} + r_{yy}) - r_{xy}}{1 - r_{xy}} \]
Questa è la formula di Lord, che descrive l’affidabilità del punteggio differenza in termini delle affidabilità delle misure individuali e della loro correlazione.
Intuizione:
- Se \(r_{xy}\) è alto, significa che le due misure sono molto correlate e la differenza tra loro ha una varianza ridotta, quindi la sua affidabilità diminuisce.
- Se \(r_{xx}\) e \(r_{yy}\) sono elevate, significa che le misure originali sono più affidabili, aumentando l’affidabilità del punteggio differenza.
- Se \(r_{xy}\) è basso, il punteggio differenza cattura una maggiore variabilità vera, aumentando \(r_{dd}\).
Interpretazione:
- se \(r_{xy}\) è molto alto, allora la parte di varianza in comune tra i due test è ampia e, di conseguenza, la differenza \((X - Y)\) finisce per catturare soprattutto la varianza dovuta all’errore di misura, perdendo stabilità (affidabilità più bassa);
- viceversa, quando la correlazione è bassa, \(X\) e \(Y\) condividono meno varianza (e di conseguenza meno “errore comune”), permettendo al punteggio differenza di essere relativamente più stabile.
10.7.2 Esempio in R (funzione rdd()
)
Un modo per osservare come varia \(r_{dd}\) al variare di \(r_{xy}\) è creare una funzione in R che applichi la formula di Lord. Di seguito un esempio:
# Definizione della formula
rdd <- function(rxx, ryy, rxy) {
(0.5 * (rxx + ryy) - rxy) / (1 - rxy)
}
# Esempio: rxx = 0.9, ryy = 0.8, rxy varia da 0.01 a 0.81
rxx <- 0.9
ryy <- 0.8
corr_values <- seq(0.01, 0.81, by = 0.1)
rdd_values <- rdd(rxx, ryy, corr_values)
rdd_values
#> [1] 0.8485 0.8315 0.8101 0.7826 0.7458 0.6939 0.6154 0.4828 0.2105
Stampando rdd_values
si nota che l’affidabilità del punteggio differenza diminuisce man mano che aumenta la correlazione tra \(X\) e \(Y\), confermando la spiegazione teorica.
10.8 Esempio Completo di Simulazione in R
Per dimostrare in modo empirico la relazione tra correlazione delle misure e affidabilità del punteggio differenza, possiamo simulare due test con caratteristiche desiderate (affidabilità, correlazione, varianza) e confrontare l’affidabilità empirica con il valore teorico previsto dalla formula di Lord.
Passaggio 1: Impostazione dei Parametri.
Definiamo:
-
\(r_{xx}\) e \(r_{yy}\): affidabilità di \(X\) e \(Y\).
-
\(r_{xy}\): correlazione vera tra i costrutti misurati da \(X\) e \(Y\).
-
\(\mathrm{Var}(T_x)\) e \(\mathrm{Var}(T_y)\): varianze delle parti “vere” di \(X\) e \(Y\).
-
n
: numero di soggetti da simulare.
set.seed(123)
# Parametri
r_xx <- 0.9 # affidabilità X
r_yy <- 0.8 # affidabilità Y
r_xy <- 0.5 # correlazione vera tra i costrutti
n <- 100000
# Varianze delle parti vere
var_Tx <- 100
var_Ty <- 100
sd_Tx <- sqrt(var_Tx) # 10
sd_Ty <- sqrt(var_Ty) # 10
# Covarianza vera
cov_TxTy <- r_xy * sd_Tx * sd_Ty # = 50
# Matrice var-cov per (T_x, T_y)
Sigma_true <- matrix(
c(
var_Tx, cov_TxTy,
cov_TxTy, var_Ty
),
nrow = 2
)
Passaggio 2: Calcolo delle Varianze d’Errore.
Dalla Teoria Classica dei Test (TCT) sappiamo che:
\[ r_{xx} = \frac{\mathrm{Var}(T_x)}{\mathrm{Var}(T_x) + \mathrm{Var}(E_x)} \quad\Longrightarrow\quad \mathrm{Var}(E_x) = \frac{\mathrm{Var}(T_x)}{r_{xx}} - \mathrm{Var}(T_x). \]
In modo analogo per \(Y\). Queste varianze d’errore ci serviranno per generare i punteggi osservati.
Passaggio 3: Generazione dei Dati.
- Generiamo la parte vera \((T_x, T_y)\) con varianze e covarianza definite da
Sigma_true
.
- Generiamo gli errori \((E_x, E_y)\) come variabili indipendenti, con le varianze appena trovate.
- Sommiamo le parti vere e gli errori per ottenere i punteggi osservati \(X\) e \(Y\).
- Calcoliamo la differenza \(D = X - Y\).
# (1) Parte vera
T <- MASS::mvrnorm(
n = n,
mu = c(0, 0),
Sigma = Sigma_true
)
T_x <- T[, 1]
T_y <- T[, 2]
# (2) Errori indipendenti
E_x <- rnorm(n, mean = 0, sd = sd_Ex)
E_y <- rnorm(n, mean = 0, sd = sd_Ey)
# (3) Punteggi osservati
X <- T_x + E_x
Y <- T_y + E_y
# (4) Punteggio differenza
D <- X - Y
Passaggio 4: Stima dell’Affidabilità Empirica di \(D\).
In TCT, l’affidabilità è il rapporto tra la varianza vera e la varianza totale.
Per il punteggio differenza \(D\):
parte vera: \(T_d = T_x - T_y\);
varianza vera: \(\mathrm{Var}(T_d)\);
varianza totale osservata: \(\mathrm{Var}(D)\);
-
affidabilità:
\[ r_{dd} = \frac{\mathrm{Var}(T_d)}{\mathrm{Var}(D)}. \]
Passaggio 5: Confronto con la Formula di Lord.
Richiamiamo la formula teorica:
\[ r_{dd} = \frac{0.5 \,[r_{xx} + r_{yy}] - r_{xy}}{1 - r_{xy}}. \]
E applichiamola ai nostri parametri:
rdd_theoretical <- (0.5 * (r_xx + r_yy) - r_xy) / (1 - r_xy)
cat("Affidabilità differenza (empirica): ", round(rdd_empirical, 3), "\n")
#> Affidabilità differenza (empirica): 0.742
cat("Affidabilità differenza (formula Lord): ", round(rdd_theoretical, 3), "\n")
#> Affidabilità differenza (formula Lord): 0.7
Idealmente, i due valori coincidono (o sono molto simili) se la simulazione rispecchia bene i presupposti della formula (grande campione, corretta generazione di errori, ecc.).
In sintesi:
-
all’aumentare di \(r_{xy}\), diminuisce in genere l’affidabilità del punteggio differenza, poiché crescono le porzioni di varianza in comune tra \(X\) e \(Y\), che si sottraggono a vicenda;
- se \(r_{xy}\) è più basso, i punteggi di \(X\) e \(Y\) condividono meno varianza: la parte vera delle differenze risulta più “solida”, innalzando il potenziale di affidabilità del punteggio differenza.
Questo esempio dimostra chiaramente perché i punteggi differenza (ad esempio, nei confronti pre-post) possano spesso presentare un’affidabilità inferiore rispetto ai singoli punteggi originali, specialmente in presenza di misure molto simili o fortemente correlate.
10.9 Scelta del Coefficiente di Affidabilità
La selezione del coefficiente di affidabilità più adeguato dipende dal tipo di test, dal contesto d’uso e dallo scopo della misurazione.
-
Affidabilità Test-Retest
- Valuta la stabilità nel tempo della misura.
- Indicata quando si vuole verificare se un costrutto permane stabile (o se varia) in assenza di fattori esterni che possano influenzarlo.
- Valuta la stabilità nel tempo della misura.
-
Consistenza Interna (ad esempio, Cronbach’s Alpha, KR-20)
- Appropriata con una singola somministrazione del test.
- Utile soprattutto quando il test è progettato per misurare un unico costrutto e gli item dovrebbero, teoricamente, essere omogenei tra loro.
- Appropriata con una singola somministrazione del test.
-
Affidabilità di Forme Alternative
- Rilevante quando esistono versioni diverse (parallele o equivalenti) di uno stesso test, e si desidera misurare se forniscono punteggi coerenti.
- Aiuta a ridurre l’effetto dell’apprendimento o della familiarità con un’unica forma del test.
- Rilevante quando esistono versioni diverse (parallele o equivalenti) di uno stesso test, e si desidera misurare se forniscono punteggi coerenti.
-
Affidabilità Inter-Valutatori
- Necessaria in presenza di giudizi soggettivi (ad esempio, valutazioni cliniche o osservazioni dirette).
- Stima l’accordo tra più valutatori, misurando in che misura le discrepanze siano dovute a differenze reali nel comportamento/situazione osservata e non a differenze di criterio tra osservatori.
- Necessaria in presenza di giudizi soggettivi (ad esempio, valutazioni cliniche o osservazioni dirette).
10.9.1 Linee Guida Generali sui Valori di Affidabilità
Sebbene le soglie di accettabilità varino in base allo scopo specifico del test e al contesto (clinico, educativo, di ricerca), le indicazioni più comuni sono:
-
≥ 0.90: raccomandato per decisioni di grande importanza, come diagnosi cliniche o valutazioni ad alto impatto.
-
≥ 0.80: standard desiderabile per test di rendimento o di personalità, dove serve un livello di precisione piuttosto elevato.
-
≥ 0.70: spesso considerato accettabile per screening didattici o contesti in cui il rischio di errore è più tollerabile.
- ≥ 0.60: talvolta considerato sufficiente in contesti di ricerca di base o di gruppo, ma occorre molta cautela al di sotto di 0.70 perché la variabilità dovuta all’errore può influenzare notevolmente l’interpretazione dei punteggi.
In sintesi, la decisione su quale coefficiente adottare e su quale soglia considerare “accettabile” deve sempre tener conto:
- della finalità del test (diagnostico, selettivo, esplorativo);
- della natura del costrutto misurato (omogeneo o multi-dimensionale);
- del contesto (clinico, organizzativo, educativo, di ricerca).
Un’analisi delle esigenze e degli obiettivi specifici permette di scegliere con maggiore precisione quale forma di affidabilità risulti più indicata e quali valori siano ritenuti adeguati.
10.10 Riflessioni Conclusive
La stima dell’affidabilità non costituisce un mero esercizio metodologico, bensì un passaggio cruciale per validare la solidità di qualsiasi misura psicologica. Scegliere l’indice più adeguato in base al contesto, al tipo di test e alla natura del costrutto consente di:
-
ridurre il rischio di interpretazioni errate, poiché una misura non affidabile mette in dubbio i risultati e le eventuali decisioni che ne conseguono;
-
contestualizzare correttamente i risultati, valutando come il tipo di errore (temporale, inter-valutatore, differenze di forme, ecc.) possa incidere sull’uso finale del punteggio;
- guidare l’ottimizzazione del test, rivelando quali aree dello strumento possono essere migliorate per incrementare la coerenza e la precisione della misurazione.
Integrare queste considerazioni nella fase di progettazione e valutazione di una misura consente di sviluppare strumenti più sensibili e appropriati alle finalità dell’indagine psicologica, garantendo robustezza e credibilità alle conclusioni tratte.
10.11 Session Info
sessionInfo()
#> R version 4.4.2 (2024-10-31)
#> Platform: aarch64-apple-darwin20
#> Running under: macOS Sequoia 15.3.2
#>
#> 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/UTF-8/C/C/C/C
#>
#> time zone: Europe/Rome
#> tzcode source: internal
#>
#> attached base packages:
#> [1] stats graphics grDevices utils datasets methods base
#>
#> other attached packages:
#> [1] ltm_1.2-0 polycor_0.8-1 msm_1.8.2
#> [4] modelsummary_2.3.0 ggokabeito_0.1.0 see_0.11.0
#> [7] MASS_7.3-65 viridis_0.6.5 viridisLite_0.4.2
#> [10] ggpubr_0.6.0 ggExtra_0.10.1 gridExtra_2.3
#> [13] patchwork_1.3.0 bayesplot_1.11.1 semTools_0.5-6
#> [16] semPlot_1.1.6 lavaan_0.6-19 psych_2.4.12
#> [19] scales_1.3.0 markdown_1.13 knitr_1.50
#> [22] lubridate_1.9.4 forcats_1.0.0 stringr_1.5.1
#> [25] dplyr_1.1.4 purrr_1.0.4 readr_2.1.5
#> [28] tidyr_1.3.1 tibble_3.2.1 ggplot2_3.5.1
#> [31] tidyverse_2.0.0 here_1.0.1
#>
#> loaded via a namespace (and not attached):
#> [1] rstudioapi_0.17.1 jsonlite_1.9.1 magrittr_2.0.3
#> [4] TH.data_1.1-3 estimability_1.5.1 farver_2.1.2
#> [7] nloptr_2.2.1 rmarkdown_2.29 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.7 zoo_1.8-13 admisc_0.37
#> [22] igraph_2.1.4 mime_0.13 lifecycle_1.0.4
#> [25] pkgconfig_2.0.3 Matrix_1.7-3 R6_2.6.1
#> [28] fastmap_1.2.0 rbibutils_2.3 shiny_1.10.0
#> [31] digest_0.6.37 OpenMx_2.21.13 fdrtool_1.2.18
#> [34] colorspace_2.1-1 rprojroot_2.0.4 Hmisc_5.2-3
#> [37] timechange_0.3.0 abind_1.4-8 compiler_4.4.2
#> [40] withr_3.0.2 glasso_1.11 htmlTable_2.4.3
#> [43] backports_1.5.0 carData_3.0-5 ggsignif_0.6.4
#> [46] corpcor_1.6.10 gtools_3.9.5 tools_4.4.2
#> [49] pbivnorm_0.6.0 foreign_0.8-88 zip_2.3.2
#> [52] httpuv_1.6.15 nnet_7.3-20 glue_1.8.0
#> [55] quadprog_1.5-8 nlme_3.1-167 promises_1.3.2
#> [58] lisrelToR_0.3 grid_4.4.2 checkmate_2.3.2
#> [61] cluster_2.1.8.1 reshape2_1.4.4 generics_0.1.3
#> [64] gtable_0.3.6 tzdb_0.5.0 data.table_1.17.0
#> [67] hms_1.1.3 car_3.1-3 tables_0.9.31
#> [70] sem_3.1-16 pillar_1.10.1 rockchalk_1.8.157
#> [73] later_1.4.1 splines_4.4.2 lattice_0.22-6
#> [76] survival_3.8-3 kutils_1.73 tidyselect_1.2.1
#> [79] miniUI_0.1.1.1 pbapply_1.7-2 reformulas_0.4.0
#> [82] stats4_4.4.2 xfun_0.51 expm_1.0-0
#> [85] qgraph_1.9.8 arm_1.14-4 stringi_1.8.4
#> [88] pacman_0.5.1 boot_1.3-31 evaluate_1.0.3
#> [91] codetools_0.2-20 mi_1.1 cli_3.6.4
#> [94] RcppParallel_5.1.10 rpart_4.1.24 xtable_1.8-4
#> [97] Rdpack_2.6.3 munsell_0.5.1 Rcpp_1.0.14
#> [100] coda_0.19-4.1 png_0.1-8 XML_3.99-0.18
#> [103] parallel_4.4.2 jpeg_0.1-10 lme4_1.1-36
#> [106] mvtnorm_1.3-3 openxlsx_4.2.8 rlang_1.1.5
#> [109] multcomp_1.4-28 mnormt_2.1.1