È sbagliato scegliere le funzionalità in base al valore p?


12

Esistono diversi post su come selezionare le funzionalità. Uno dei metodi descrive l'importanza delle funzionalità in base alle statistiche t. In R varImp(model)applicato su modello lineare con caratteristiche standardizzate viene utilizzato il valore assoluto della statistica t per ciascun parametro del modello. Quindi, fondamentalmente scegliamo una funzione in base alle sue statistiche t, il che significa quanto sia preciso il coefficiente. Ma la precisione del mio coefficiente mi dice qualcosa sulle capacità predittive della funzione?

Può succedere che la mia funzione abbia una statica t bassa ma che possa comunque migliorare (diciamo) l'accuratezza del modello? Se sì, quando si vorrebbe escludere le variabili in base alle statistiche t? Oppure fornisce solo un punto di partenza per verificare le capacità predittive di variabili non importanti?


3
Per un test della media di un campione, la statistica t è semplicemente la media del campione divisa per l'errore standard stimato (deviazione standard del campione divisa per radice quadrata delle dimensioni del campione). Questa statistica da sola non dipende da nessuna particolare ipotesi. Derivando valore di p da quella statistica non dipendono da un'ipotesi.
Dan Hicks,

@DanHicks Ho modificato la mia domanda.
Alina,

Non ho molta familiarità con il cursore, ma sembra che varImp()sia inteso come una funzione informativa o diagnostica e non utilizzato direttamente per la selezione o l'eliminazione delle funzionalità.
david25272,

Risposte:


11

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)

Istogramma dei valori p

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

Istogramma distorto dei valori di p


2
Hmm, perché questa distribuzione del valore p non è uniforme?
ameba dice Ripristina Monica il

4
Wow, come hai scelto il numero di seme? Qualsiasi altro risultato in ps quasi uniforme ...
psychOle,

3
Cerco di usare sempre lo stesso seme per questo genere di cose: en.wikipedia.org/wiki/154_(album)
Matthew Drury,

9
Stai conducendo test sbagliati: stai confrontando 499 medie di gruppo con la prima media di gruppo. Con il seme 154, la prima media di gruppo di 1,18 ... è insolitamente alta (il che può accadere perché la dimensione del gruppo di 5 è così piccola), quindi la maggior parte degli altri ha effetti significativamente negativi. Risolvilo eseguendo il modello lm(y ~ rand.class - 1). Ciò non modifica la validità di tutte le tue osservazioni (+1). Per essere ancora più convincente, bilanciare le dimensioni del gruppo:rand.class <- cut(1:N, N.classes)
whuber

1
Certo: / 100% mi aspettavo che @whuber entrasse e dicesse qualcosa di completamente chiaro e ovvio che mi ero perso. Lo sistemerò ora.
Matthew Drury,

2

La statistica t è influenzata dalla dimensione dell'effetto e dalla dimensione del campione. È possibile che la dimensione dell'effetto sia diversa da zero, ma la dimensione del campione non è abbastanza grande da renderla significativa.

t=(x¯s)n

x¯sn

Nel tuo caso qualsiasi funzione con effetto diverso da zero migliorerà le prestazioni ma potresti non disporre di dati sufficienti per rendere significativo il valore p di quella funzione.


4
Non credo sia vero che qualsiasi funzione con un effetto diverso da zero migliorerà le prestazioni. Forse questo è vero sui dati di allenamento, ma certamente non sui dati di test .
Matthew Drury,

@MatthewDrury Stai dicendo che ci mancano metodi per dedurre le misurazioni della popolazione dai campioni?
Todd D,

No, ma è vero che funzionalità spurie possono interferire con la tua capacità di farlo bene.
Matthew Drury,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.