Istnieje kilka postów na temat wybierania funkcji. Jedna z metod opisuje ważność funkcji na podstawie statystyki t. W R varImp(model)
zastosowanym na modelu liniowym ze znormalizowanymi cechami stosuje się wartość bezwzględną statystyki t dla każdego parametru modelu. Zasadniczo wybieramy funkcję na podstawie jej statystyki t, co oznacza, jak precyzyjny jest współczynnik. Ale czy dokładność mojego współczynnika mówi mi coś o zdolnościach predykcyjnych funkcji?
Czy może się zdarzyć, że moja funkcja ma niską statystykę t, ale nadal poprawi (powiedzmy) dokładność modelu? Jeśli tak, to kiedy należy wykluczyć zmienne na podstawie statystyki t? Czy może to tylko punkt wyjścia do sprawdzenia zdolności predykcyjnych nieistotnych zmiennych?
varImp()
ma ona być funkcją informacyjną lub diagnostyczną i nie jest bezpośrednio wykorzystywana do wyboru lub eliminacji funkcji.Odpowiedzi:
Statystyka t nie może mieć prawie nic do powiedzenia na temat zdolności predykcyjnej cechy, i nie należy ich używać do wykluczania predyktora lub pozwalania predyktorom na model predykcyjny.
Wartości P mówią, że fałszywe cechy są ważne
Rozważ następujący scenariusz w R. Stwórzmy dwa wektory, pierwszy to po prostu losowych rzutów monetą:5000
Drugi wektor to obserwacji, z których każda jest losowo przypisana do jednej z losowych klas jednakowej wielkości:5005000 500
Teraz dopasowujemy model liniowy do przewidzenia
y
danegorand.classes
.Poprawna wartość dla wszystkich współczynników wynosi zero, żaden z nich nie mają żadnej mocy predykcyjnej. Niemniej jednak wiele z nich ma znaczenie na poziomie 5%
W rzeczywistości powinniśmy oczekiwać, że około 5% z nich będzie znaczących, nawet jeśli nie mają mocy predykcyjnej!
Wartości P nie wykrywają ważnych funkcji
Oto przykład w innym kierunku.
Stworzyłem dwa skorelowane predyktory, każdy z mocą predykcyjną.
Wartości p nie wykrywają mocy predykcyjnej obu zmiennych, ponieważ korelacja wpływa na to, jak dokładnie model może oszacować dwa indywidualne współczynniki na podstawie danych.
Statystyki wnioskowania nie są w stanie powiedzieć o mocy predykcyjnej lub znaczeniu zmiennej. Używanie ich w ten sposób jest nadużywaniem tych pomiarów. Dostępne są znacznie lepsze opcje wyboru zmiennych w predykcyjnych modelach liniowych, rozważ użycie
glmnet
.(*) Zauważ, że pomijam tutaj przecięcie, więc wszystkie porównania dotyczą linii zerowej, a nie średniej grupy z pierwszej klasy. To była sugestia @ Whubera.
Ponieważ doprowadziło to do bardzo interesującej dyskusji w komentarzach, oryginalny kod był
i
co doprowadziło do następującego histogramu
źródło
lm(y ~ rand.class - 1)
. Nie zmienia to ważności wszystkich twoich uwag (+1). Aby być jeszcze bardziej przekonującym, zrównoważyć rozmiary grup:rand.class <- cut(1:N, N.classes)
Statystyka t zależy od wielkości efektu i wielkości próby. Może się zdarzyć, że wielkość efektu jest różna od zera, ale wielkość próbki nie jest wystarczająco duża, aby uczynić ją znaczącą.
W prostym teście dla średniej zerowej (który jest analogiczny do testowania, czy wpływ cechy jest równy zero) statystyka T wynosit=(x¯¯¯s)n−−√
√x¯¯¯s to przykładowe oszacowanie wielkości efektu, jeśli jest małe, to wartość p nie pokaże się, dopóki się duży.n−−√
W twoim przypadku dowolna funkcja z niezerowym efektem poprawi wydajność, ale możesz nie mieć wystarczającej ilości danych, aby wartość p tej funkcji była znacząca.
źródło