10.1 L’incertezza della misura

Secondo la CTT, l’errore standard della misurazione può essere stimato utilizzando una formula che richiede la conoscenza della deviazione standard della distribuzione dei punteggi del test e dell’affidabilità del test. Se questi valori sono noti (o possono essere calcolati), allora si può ottenere una stima dell’errore standard di un particolare punteggio. Tale misura di errore è utile per comprendere quanto il punteggio osservato si discosta dal vero punteggio del soggetto.

Secondo la CTT, è possibile stimare l’errore standard della misurazione (\(\sigma_E\)) utilizzando l’equazione:

\[ \sigma_E = \sigma_X \sqrt{1 -\rho_{XX^\prime}}, \tag{10.1} \]

dove \(\sigma_X\) è la deviazione standard dei punteggi ottenuti in un campione di rispondenti e \(\rho_{XX^\prime}\) è il coefficiente di attendibilità. Per calcolare \(\sigma_E\), si sottrae l’attendibilità del test da 1, si prende la radice quadrata della differenza e si moltiplica per la deviazione standard dei punteggi del test.

L’errore standard della misurazione si basa sull’assunzione che, se una persona facesse un gran numero di test equivalenti, i punteggi di questi test sarebbero distribuiti normalmente, con il vero punteggio della persona come media. In altre parole, possiamo immaginare che la persona completi molte versioni identiche del test, senza ricordare le risposte precedenti e in condizioni simili ogni volta. In questo scenario ipotetico, l’errore standard della misurazione sarebbe semplicemente la deviazione standard di queste misurazioni ripetute.

È importante notare che l’errore standard della misurazione \(\sigma_E\) è direttamente legato all’attendibilità del test: l’errore standard della misurazione diminuisce al crescere dell’attendibilità del test. Se l’attendibilità del test è uguale a 0 \(\sigma_E\) diventa uguale alla deviazione standard del punteggio osservato del test. Se l’attendibilità del test è uguale a 1 \(\sigma_E\) diventa uguale a zero: se il test è perfettamente affidabile non ci sono errori e \(\sigma_E\) è uguale a zero.

10.1.1 Interpretazione

McDonald sostiene che il termine \(E\) segue una propensity distribution, che rappresenta le fluttuazioni casuali nel tempo di un individuo che risponde al test. Queste fluttuazioni possono essere causate da fattori come l’umore, la motivazione, ecc. L’errore standard di misura fornisce una stima della deviazione standard di tali punteggi, ovvero una stima della deviazione standard dei punteggi che un singolo individuo otterrebbe nel caso di infinite somministrazioni del test (o di forme parallele del test) sotto le stesse identiche condizioni, se il punteggio vero rimanesse costante.

D’altra parte, la teoria classica dei test (CTT) presuppone che i punteggi ottenuti da un individuo in infinite somministrazioni del test nelle stesse identiche condizioni seguano una distribuzione normale centrata sul valore vero. L’errore standard di misura è quindi la stima della deviazione standard di tale distribuzione ipotetica di punteggi. Maggiore è l’errore standard di misura, maggiore è l’errore che si commette nell’utilizzo del test per valutare l’abilità latente del rispondente.

Il coefficiente di attendibilità, la varianza dell’errore e l’errore standard della misurazione sono tutti indicatori diretti o indiretti della precisione del test. Tuttavia, questi indici forniscono informazioni diverse sul grado di precisione del test:

  • l’errore standard della misurazione ci consente di fare inferenze sulla precisione del punteggio osservato di un singolo rispondente, ma non è possibile assegnare tale interpretazione al coefficiente di attendibilità;
  • l’errore standard della misurazione è espresso nella stessa unità di misura del punteggio osservato, mentre la varianza di \(E\) è espressa nei termini del quadrato del punteggio osservato;
  • l’attendibilità corrisponde ad un rapporto tra varianze e dunque è un numero puro (privo di unità di misura).

Esempio 1. Supponiamo che un test di intelligenza produca un punteggio medio pari a 100 con una deviazione standard di 15. Supponiamo inoltre che il test abbia una attendibilità pari a 0.73. Si calcoli l’errore standard della misurazione.

Applicando la formula dell’errore standard della misurazione, otteniamo

\[\begin{equation} \begin{aligned} \sigma_E &= \sigma_X \sqrt{1 -\rho_{XX^\prime}} \notag\\ &= 15 \sqrt{1 - 0.73} \notag\\ &= 7.79.\notag \end{aligned} \end{equation}\]

Il valore di 7.79 significa che, se immaginiamo di somministrare molte volte il test ad un rispondente, sotto le stesse identiche condizioni, ci aspettiamo che i valori ottenuti differiscano tra loro, in media, di circa 8 punti tra le successive somministrazioni del test. Inoltre, se immaginiamo di somministrare molte volte il test ad un rispondente, sotto le stesse identiche condizioni, ci aspettiamo che il 95% dei punteggi così ottenuti sia compreso nell’intervallo

\[ \text{punteggio vero del rispondente} \pm 1.96 \cdot \text{errore standard della misurazione}. \] Questa è una proprietà della distribuzione gaussiana.

Per il caso presente, questo intervallo è uguale a \(2 \cdot 1.96 \cdot 7.79 = 30.54\) punti.

In altre parole, ci possiamo aspettare che, nel caso di somministrazioni ripetute del test sotto le stesse identiche condizioni, i punteggi del QI di un singolo rispondente varino tra loro all’interno di un intervallo di 30 punti. Ciò significa che, se il test avesse un’attendibilità pari a 0.73, e se la deviazione standard dei punteggi del test nella popolazione fosse pari a 15, la somministrazione di un tale test ad un singolo individuo sarebbe di scarsa utilità, a causa dell’enorme errore di misurazione. Per fare un confronto con i dati di questo esempio, la Full Scale IQ (FSIQ) della WAIS-IV (Wechsler 2008) ha un’attendibilità split-half pari a 0.98, con errore standard di misurazione pari a 2.16.

Si noti che l’errore standard della misurazione può essere calcolato con la funzione SE.Means() del pacchetto psychometric.

suppressWarnings(suppressMessages(library("psychometric")))

SE.Meas(15, .73)
#> [1] 7.794229

Esempio 2. Continuando con l’esempio precedente, per gli ipotetici dati riportati sopra, poniamoci ora la seguente domanda: qual è la probabilità che un rispondente ottenga un punteggio minore o uguale a 116 nel test, se il suo punteggio vero è uguale a 120?

Il problema si risolve rendendosi conto che i punteggi del rispondente si distribuiscono normalmente attorno al punteggio vero di 120, con una deviazione standard uguale a 7.79. Dobbiamo dunque trovare l’area sottesa alla normale \(\mathcal{N}(120, 7.79)\) nell’intervallo \([-\infty, 116]\). Utilizzando , la soluzione si trova nel modo seguente:

pnorm(116, 120, 7.79)
#> [1] 0.3038082

Se la variabile aleatorie corrispondente al punteggio osservato segue una distribuzione \(\mathcal{N}(120, 7.79)\), la probabilità che il rispondente ottenga un punteggio minore o uguale a 116 è dunque uguale a 0.30.

Esempio 3. Sempre per l’esempio discusso, poniamoci ora la seguente domanda: quale intervallo di valori centrato sul punteggio vero contiene, con una probabilità di 0.95, i punteggi che il rispondente otterrebbe in ipotetiche somministrazioni ripetute del test sotto le stesse identiche condizioni?

Dobbiamo trovare i quantili della distribuzione \(\mathcal{N}(120, 7.79)\) a cui sono associate le probabilità di 0.025 e 0.975. La soluzione è dunque data da:

qnorm(c(.025, .975), 120, 7.79)
#> [1] 104.7319 135.2681

L’intervallo cercato è dunque \([104.7, 135.3]\).

Esempio 4. Calcoliamo ora l’errore standard di misurazione utilizzando un set di dati grezzi.

Iniziamo a definire una funzione che ritorna il coefficiente di attendibilità \(\alpha\) di Cronbach (questo argomento sarà discusso in un capitolo successivo).

coeff.alpha <- function(responses) {
  # Get number of items (N) and individuals
  n.items <- ncol(responses)
  n.persons <- nrow(responses)
  # Get individual total scores
  x <- rowSums(responses)
  # Get observed-score variance of whole test (X)
  var.x <- var(x) * (n.persons - 1) / n.persons
  # Get observed-score variance of each item (Y_j)
  var.y <- numeric(n.items)
  for (i in 1:n.items) {
    var.y[i] <- var(responses[, i]) * (n.persons - 1) / n.persons
  }
  # Apply the alpha formula
  alpha <- (n.items / (n.items - 1)) * (1 - sum(var.y) / var.x)
  return(alpha)
}

Definiamo una funzione per calcolare l’errore standard di misurazione usando la formula che abbiamo discusso in questo capitolo.

se.m <- function(responses, rel.est = "alpha") {
  # The number of subjects
  n.persons <- nrow(responses)
  # Get the total score and its standard deviation
  total <- rowSums(responses)
  sd.x <- sqrt(var(total) * (n.persons - 1) / n.persons)
  if (rel.est == "alpha") {
    rel <- coeff.alpha(responses)
  } else {
    error("rel.est must be either alpha")
  }
  se.m <- sd.x * sqrt(1 - rel)
  return(se.m)
}

Leggiamo ora un set di dati dal pacchetto hemp. Per l’installazione di hemp si procede nel modo seguente.

install.packages("devtools")
library("devtools")
install_github("cddesja/hemp")

Carichiamo hemp e leggiamo i dati.

library("hemp")
data(SAPA)
head(SAPA)
#>    reason.4 reason.16 reason.17 reason.19 letter.7 letter.33 letter.34
#> 5         0         0         0         0        0         1         0
#> 6         0         0         1         0        1         0         1
#> 7         0         1         1         0        1         0         0
#> 8         1         0         0         0        0         0         1
#> 9         0         1         1         0        0         1         0
#> 10        1         1         1         1        1         1         1
#>    letter.58 matrix.45 matrix.46 matrix.47 matrix.55 rotate.3 rotate.4 rotate.6
#> 5          0         0         0         0         1        0        0        0
#> 6          0         0         0         0         0        0        0        1
#> 7          0         1         1         0         0        0        0        0
#> 8          0         0         0         0         0        0        0        0
#> 9          0         1         1         0         0        0        0        0
#> 10         1         1         1         1         0        1        1        1
#>    rotate.8
#> 5         0
#> 6         0
#> 7         0
#> 8         0
#> 9         0
#> 10        0

Useremo qui i dati SAPA. Il set di dati SAPA è costituito da 1525 risposte a un test di abilità a scelta multipla di 16 item tratti da un progetto di valutazione della personalità chiamato Synthetic Aperture Personality Assessment (SAPA). Gli item misurano il ragionamento di base, la manipolazione di serie alfanumeriche, il ragionamento con matrici e la capacità di rotazione mentale.

Iniziamo con il verificare se ci sono dati mancanti.

num_miss(SAPA)
#>           num_miss perc_miss
#> reason.4         2      0.13
#> reason.16        1      0.07
#> reason.17        2      0.13
#> reason.19        2      0.13
#> letter.7         1      0.07
#> letter.33        2      0.13
#> letter.34        2      0.13
#> letter.58        0      0.00
#> matrix.45        2      0.13
#> matrix.46        1      0.07
#> matrix.47        2      0.13
#> matrix.55        1      0.07
#> rotate.3         2      0.13
#> rotate.4         2      0.13
#> rotate.6         2      0.13
#> rotate.8         1      0.07

Dato che ci sono solo pochi dati mancanti, rimuoviamo tutte le righe che contengono dati mancanti.

df <- na.omit(SAPA)

Possiamo ora usare la funzione se.m() che abbiamo definito sopra.

se.m(df, "alpha")
#> [1] 1.625003

10.1.2 Simulazione

Torniamo ora alla simulazione precedente in cui abbiamo messo in relazione il modello della CTT con il modello di regressione lineare. In base a tale simulazione, poniamoci lo scopo di chiarire il significato dell’errore standard della misurazione.

Impostiamo la simulazione come abbiamo fatto in precedenza. Chiamiamo \(X\) il valore osservato in un test. Per la CTT, il punteggio osservato \(X\) è costituito da due componenti, la componente vera \(T\) e la componente d’errore \(E\). Si suppone che gli errori siano gaussiani e incorrelati con la componente vera. Immaginiamo di somministrare 200 volte il test ad un individuo sotto le stesse identiche condizioni.

library("MASS")
library("arm")
set.seed(123)
n <- 200
Sigma <- matrix(
  c(
    11, 0,
    0, 4
  ),
  byrow = TRUE, ncol = 2
)
mu <- c(100, 0)
Y <- mvrnorm(n, mu, Sigma, empirical = TRUE)
T <- Y[, 1]
E <- Y[, 2]

Verifichiamo l’incorrelazione tra \(T\) ed \(E\):

cor(T, E)
#> [1] -1.069186e-16

I valori ottenuti sono la somma del valore vero e della componente d’errore:

X <- T + E

Per questi dati, il coefficiente di attendibilità è uguale a:

rxx <- cor(X, T)^2
rxx
#> [1] 0.7333333

Possiamo ora calcolare l’errore standard della misurazione utilizzando la (10.1):

sd(X) * sqrt(1 - rxx)
#> [1] 2

Si noti che tale valore non è altro che la deviazione standard degli errori della misurazione:

sd(E)
#> [1] 2

Verifichiamo ora quanto segue: nei termini del modello di regressione \(X = 0 + 1 \cdot T + E\), l’errore standard della misurazione della CTT è uguale all’errore standard della regressione:

fm <- lm(formula = X ~ T)
summary(fm)
#> 
#> Call:
#> lm(formula = X ~ T)
#> 
#> Residuals:
#>     Min      1Q  Median      3Q     Max 
#> -4.4315 -1.4041 -0.1474  1.2191  7.2121 
#> 
#> Coefficients:
#>               Estimate Std. Error t value Pr(>|t|)    
#> (Intercept) -1.929e-13  4.288e+00    0.00        1    
#> T            1.000e+00  4.285e-02   23.34   <2e-16 ***
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Residual standard error: 2.005 on 198 degrees of freedom
#> Multiple R-squared:  0.7333, Adjusted R-squared:  0.732 
#> F-statistic: 544.5 on 1 and 198 DF,  p-value: < 2.2e-16

References

Wechsler, David. 2008. “Wechsler Adult Intelligence Scale–Fourth Edition (WAIS–IV).” San Antonio, TX: NCS Pearson 22 (498): 816–27.