La statistica t non può quasi avere nulla da dire sulla capacità predittiva di una funzione e non dovrebbe essere utilizzata per escludere il predittore o consentire ai predittori un modello predittivo.
I valori P indicano che le caratteristiche spurie sono importanti
Considera la seguente impostazione dello scenario in R. Creiamo due vettori, il primo è semplicemente lanci di monete casuali:5000
set.seed(154)
N <- 5000
y <- rnorm(N)
Il secondo vettore è osservazioni, ciascuna assegnata in modo casuale a una delle classi casuali di uguali dimensioni:5005000500
N.classes <- 500
rand.class <- factor(cut(1:N, N.classes))
Ora adattiamo un modello lineare per prevedere ydato rand.classes.
M <- lm(y ~ rand.class - 1) #(*)
Il valore corretto per tutti i coefficienti è zero, nessuno di essi ha alcun potere predittivo. Tuttavia, molti di loro sono significativi al livello del 5%
ps <- coef(summary(M))[, "Pr(>|t|)"]
hist(ps, breaks=30)

In effetti, dovremmo aspettarci che circa il 5% di essi sia significativo, anche se non hanno un potere predittivo!
I valori P non riescono a rilevare caratteristiche importanti
Ecco un esempio nell'altra direzione.
set.seed(154)
N <- 100
x1 <- runif(N)
x2 <- x1 + rnorm(N, sd = 0.05)
y <- x1 + x2 + rnorm(N)
M <- lm(y ~ x1 + x2)
summary(M)
Ho creato due predittori correlati , ciascuno con un potere predittivo.
M <- lm(y ~ x1 + x2)
summary(M)
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.1271 0.2092 0.608 0.545
x1 0.8369 2.0954 0.399 0.690
x2 0.9216 2.0097 0.459 0.648
I valori p non riescono a rilevare il potere predittivo di entrambe le variabili perché la correlazione influenza la precisione con cui il modello può stimare i due coefficienti individuali dai dati.
Le statistiche inferenziali non sono lì per raccontare il potere predittivo o l'importanza di una variabile. È un abuso di queste misurazioni usarle in quel modo. Ci sono opzioni molto migliori disponibili per la selezione variabile nei modelli lineari predittivi, considera l'utilizzo glmnet.
(*) Nota che sto lasciando un'intercettazione qui, quindi tutti i confronti sono alla base di zero, non alla media di gruppo della prima classe. Questo è stato il suggerimento di @ whuber.
Dal momento che ha portato a una discussione molto interessante nei commenti, il codice originale era
rand.class <- factor(sample(1:N.classes, N, replace=TRUE))
e
M <- lm(y ~ rand.class)
che ha portato al seguente istogramma
