Ist es falsch, Features basierend auf dem p-Wert auszuwählen?


12

Es gibt mehrere Beiträge zum Auswählen von Features. Eine der Methoden beschreibt die Wichtigkeit von Merkmalen basierend auf t-Statistiken. In R, varImp(model)angewendet auf ein lineares Modell mit standardisierten Merkmalen, wird der Absolutwert der t-Statistik für jeden Modellparameter verwendet. Im Grunde genommen wählen wir ein Feature basierend auf seiner t-Statistik aus, was bedeutet, wie genau der Koeffizient ist. Aber sagt mir die Genauigkeit meines Koeffizienten etwas über die Vorhersagefähigkeiten des Merkmals aus?

Kann es vorkommen, dass mein Feature eine niedrige t-Statistik aufweist, aber trotzdem die Genauigkeit des Modells verbessert (sagen wir mal)? Wenn ja, wann würde man Variablen basierend auf der t-Statistik ausschließen wollen? Oder gibt es nur einen Ausgangspunkt, um die Vorhersagefähigkeiten nicht wichtiger Variablen zu überprüfen?


3
Bei einem Test mit einer Stichprobe des Mittelwerts ist die t-Statistik einfach der Stichprobenmittelwert geteilt durch den geschätzten Standardfehler (Stichprobenstandardabweichung geteilt durch die Quadratwurzel der Stichprobengröße). Diese Statistik selbst hängt nicht von einer bestimmten Hypothese ab. Das Ableiten eines Werts aus dieser Statistik hängt von einer Hypothese ab.
Dan Hicks

@DanHicks Ich habe meine Frage bearbeitet.
Alina

Ich bin nicht sehr vertraut mit Caret, aber es scheint, dass varImp()dies eine informative oder diagnostische Funktion sein soll und nicht direkt für die Auswahl oder Beseitigung von Merkmalen verwendet wird.
David25272

Antworten:


11

Die t-Statistik kann so gut wie nichts über die Vorhersagefähigkeit eines Features aussagen, und sie sollte nicht dazu verwendet werden, den Prädiktor auszublenden oder Prädiktoren in ein Vorhersagemodell zuzulassen.

P-Werte sagen, dass Störmerkmale wichtig sind

5000

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

5000500

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

Nun passen wir ein lineares Modell an, um ygegebene Werte vorherzusagen rand.classes.

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

Der korrekte Wert für alle Koeffizienten ist Null, keiner von ihnen hat eine Vorhersagekraft. Trotzdem sind viele von ihnen mit 5% signifikant

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

Histogramm der p-Werte

Tatsächlich sollten wir davon ausgehen, dass ungefähr 5% von ihnen signifikant sind, obwohl sie keine Vorhersagekraft haben!

P-Werte erkennen wichtige Merkmale nicht

Hier ist ein Beispiel in die andere Richtung.

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)

Ich habe zwei korrelierte Prädiktoren mit jeweils prädiktiver Wirkung erstellt.

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

Die p-Werte können die Vorhersagekraft beider Variablen nicht erfassen, da die Korrelation beeinflusst, wie genau das Modell die beiden einzelnen Koeffizienten aus den Daten abschätzen kann.

Inferenzstatistiken geben keinen Aufschluss über die Vorhersagekraft oder Wichtigkeit einer Variablen. Es ist ein Missbrauch dieser Messungen, sie so zu verwenden. Es gibt viel bessere Optionen für die Variablenauswahl in vorhersagenden linearen Modellen glmnet.

(*) Beachten Sie, dass ich hier einen Abschnitt weglasse, sodass sich alle Vergleiche auf die Grundlinie von Null und nicht auf den Gruppenmittelwert der ersten Klasse beziehen. Dies war @ Whubers Vorschlag.

Da dies zu einer sehr interessanten Diskussion in den Kommentaren führte, war der ursprüngliche Code

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

und

M <- lm(y ~ rand.class)

was zu dem folgenden Histogramm führte

Verzerrtes Histogramm der p-Werte


2
Hmm, warum ist diese p-Wert-Verteilung nicht gleichmäßig?
Amöbe sagt Reinstate Monica

4
Wow, wie hast du die Startnummer ausgewählt? Alle anderen Ergebnisse in fast einheitlichen ps ...
psychOle

3
Ich versuche immer den gleichen Samen für solche Sachen zu verwenden
Matthew Drury

9
Sie führen die falschen Tests durch: Sie vergleichen 499 Gruppenmittelwerte mit dem ersten Gruppenmittelwert. Mit dem Startwert 154 ist der erste Gruppenmittelwert von 1,18 ... ungewöhnlich hoch (was passieren kann, weil die Gruppengröße von 5 so klein ist), sodass die meisten anderen signifikant negative Auswirkungen haben. Beheben Sie das Problem, indem Sie das Modell ausführen lm(y ~ rand.class - 1). Dies ändert nichts an der Gültigkeit aller Ihrer Anmerkungen (+1). Um noch überzeugender zu sein, rand.class <- cut(1:N, N.classes)
gleichen Sie

1
Natürlich: / Ich habe zu 100% erwartet, dass @whuber vorbeischaut und etwas ganz klares und offensichtliches sagt, das ich verpasst habe. Ich werde es jetzt reparieren.
Matthew Drury

2

Die t-Statistik wird von der Effektgröße und der Stichprobengröße beeinflusst. Es kann vorkommen, dass die Effektgröße nicht Null ist, die Stichprobengröße jedoch nicht groß genug ist, um sie signifikant zu machen.

t=(x¯s)n

x¯s ist die Stichprobenschätzung der Effektgröße. Wenn sie klein ist, wird der p-Wert erst nach dem angezeigt n Begriff wird groß.

In Ihrem Fall verbessert jedes Feature mit einem Effekt ungleich Null die Leistung, aber Sie verfügen möglicherweise nicht über genügend Daten, um den p-Wert dieses Features signifikant zu machen.


4
Ich halte es nicht für richtig, dass ein Feature mit einem Effekt ungleich Null die Leistung verbessert. Vielleicht trifft dies auf die Trainingsdaten zu, aber es ist sicherlich nicht auf dem Prüfstand .
Matthew Drury

@MatthewDrury Wollen Sie damit sagen, dass uns Methoden fehlen, um Populationsmessungen aus Proben abzuleiten?
Todd D

Nein, aber es ist wahr, dass falsche Funktionen Ihre Fähigkeit, dies zu tun, beeinträchtigen können.
Matthew Drury
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.