Est-ce mal de choisir des fonctionnalités basées sur la valeur de p?

12

Il existe plusieurs articles sur la façon de sélectionner des fonctionnalités. L'une des méthodes décrit l'importance des fonctionnalités sur la base des statistiques t. Dans R varImp(model)appliqué sur un modèle linéaire avec des caractéristiques normalisées , la valeur absolue de la statistique t pour chaque paramètre du modèle est utilisée. Donc, fondamentalement, nous choisissons une fonctionnalité en fonction de ses statistiques t, ce qui signifie à quel point le coefficient est précis. Mais la précision de mon coefficient me dit-elle quelque chose sur les capacités prédictives de la caractéristique?

Peut-il arriver que ma fonctionnalité ait une faible statistique t mais qu'elle améliorerait (disons) la précision du modèle? Si oui, quand voudrait-on exclure des variables basées sur les statistiques t? Ou donne-t-il juste un point de départ pour vérifier les capacités prédictives de variables non importantes?

Alina
la source
3
Pour un test de la moyenne sur un échantillon, la statistique t est simplement la moyenne de l'échantillon divisée par l'erreur-type estimée (écart-type de l'échantillon divisé par la racine carrée de la taille de l'échantillon). Cette statistique en elle - même ne dépend d'aucune hypothèse particulière. Dérivation une valeur p de cette statistique ne dépendent d'une hypothèse.
Dan Hicks
@DanHicks J'ai édité ma question.
Alina
Je ne suis pas très familier avec le signe d'insertion, mais il semble que cela varImp()soit destiné à être une fonction informative ou diagnostique et non directement utilisé pour la sélection ou l'élimination des fonctionnalités.
david25272

Réponses:

11

La statistique t peut n'avoir presque rien à dire sur la capacité prédictive d'une caractéristique, et elle ne doit pas être utilisée pour exclure le prédicteur ou autoriser les prédicteurs dans un modèle prédictif.

Les valeurs P indiquent que les caractéristiques parasites sont importantes

Considérez la configuration de scénario suivante dans R. Créons deux vecteurs, le premier est simplement tours de pièces aléatoires:5000

set.seed(154)
N <- 5000
y <- rnorm(N)

Le deuxième vecteur est de observations, chacune assignée au hasard à l'une des 500 classes aléatoires de taille égale:5000500

N.classes <- 500
rand.class <- factor(cut(1:N, N.classes))

Maintenant, nous ajustons un modèle linéaire pour prédire ydonné rand.classes.

M <- lm(y ~ rand.class - 1) #(*)

La valeur correcte pour tous les coefficients est nulle, aucun d'entre eux n'a de pouvoir prédictif. Néanmoins, beaucoup d'entre eux sont significatifs au niveau de 5%

ps <- coef(summary(M))[, "Pr(>|t|)"]
hist(ps, breaks=30)

Histogramme des valeurs de p

En fait, nous devrions nous attendre à ce qu'environ 5% d'entre eux soient significatifs, même s'ils n'ont aucun pouvoir prédictif!

Les valeurs P ne parviennent pas à détecter les caractéristiques importantes

Voici un exemple dans l'autre sens.

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)

J'ai créé deux prédicteurs corrélés , chacun avec une puissance prédictive.

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

Les valeurs de p ne parviennent pas à détecter le pouvoir prédictif des deux variables car la corrélation affecte la précision avec laquelle le modèle peut estimer les deux coefficients individuels à partir des données.

Les statistiques déductives ne sont pas là pour parler du pouvoir prédictif ou de l'importance d'une variable. C'est un abus de ces mesures de les utiliser de cette façon. Il existe de bien meilleures options disponibles pour la sélection des variables dans les modèles linéaires prédictifs, pensez à utiliser glmnet.

(*) Notez que je laisse une interception ici, donc toutes les comparaisons sont à la ligne de base de zéro, pas à la moyenne du groupe de la première classe. C'était la suggestion de @ whuber.

Puisqu'il a conduit à une discussion très intéressante dans les commentaires, le code original était

rand.class <- factor(sample(1:N.classes, N, replace=TRUE))

et

M <- lm(y ~ rand.class)

qui a conduit à l'histogramme suivant

Histogramme asymétrique des valeurs de p

Matthew Drury
la source
2
Hmm, pourquoi cette distribution de valeur p n'est-elle pas uniforme?
Amoeba dit Reinstate Monica
4
Wow, comment avez-vous choisi le numéro de graine? Tout autre résultat dans un ps presque uniforme ...
psychOle
3
J'essaie de toujours utiliser la même graine pour ce genre de chose: en.wikipedia.org/wiki/154_(album)
Matthew Drury
9
Vous effectuez les mauvais tests: vous comparez 499 moyennes de groupe à la première moyenne de groupe. Avec la graine 154, la première moyenne du groupe de 1,18 ... est inhabituellement élevée (ce qui peut arriver parce que la taille du groupe de 5 est si petite), donc la plupart des autres ont des effets négatifs significatifs. Corrigez-le en exécutant le modèle lm(y ~ rand.class - 1). Cela ne change pas la validité de toutes vos remarques (+1). Pour être encore plus convaincant, équilibrez la taille des groupes:rand.class <- cut(1:N, N.classes)
whuber
1
Bien sûr: / Je m'attendais à 100% à @whuber, et dire quelque chose de complètement clair et évident que j'avais manqué. Je vais le réparer maintenant.
Matthew Drury
2

La statistique t est influencée par la taille de l'effet et la taille de l'échantillon. Il se peut que la taille de l'effet soit non nulle mais que la taille de l'échantillon ne soit pas suffisamment grande pour la rendre significative.

t=(x¯s)n

x¯sn

Dans votre cas, toute fonctionnalité avec un effet non nul améliorera les performances, mais vous ne disposez peut-être pas de suffisamment de données pour rendre la valeur p de cette fonctionnalité significative.

Hugh
la source
4
Je ne pense pas qu'il soit vrai que toute fonctionnalité avec un effet non nul améliorera les performances. C'est peut-être vrai pour les données d'entraînement, mais ce n'est certainement pas pour les données de test .
Matthew Drury
@MatthewDrury Êtes-vous en train de dire que nous manquons de méthodes pour déduire les mesures de population à partir d'échantillons?
Todd D
Non, mais il est vrai que des fonctionnalités parasites peuvent interférer avec votre capacité à bien le faire.
Matthew Drury