Pomóż mi dopasować tę nieliniową regresję wielokrotną, która oparła się wszystkim poprzednim wysiłkom

9

EDYCJA: Od czasu opublikowania tego posta śledzę tutaj dodatkowy post .

Podsumowanie poniższego tekstu: Pracuję nad modelem i próbowałem regresji liniowej, transformacji Boxa Coxa i GAM, ale nie zrobiłem dużego postępu

Korzystając z tej opcji R, pracuję obecnie nad modelem do przewidywania sukcesu mniejszych graczy baseballowych na poziomie ligi głównej (MLB). Zmienna zależna, ofensywna kariera wygrywa nad wymianą (oWAR), jest wskaźnikiem sukcesu na poziomie MLB i jest mierzona jako suma ofensywnych wkładów w każdą grę, w którą gracz jest zaangażowany w trakcie swojej kariery (szczegóły tutaj - http : //www.fangraphs.com/library/misc/war/). Zmienne niezależne to zmienne ofensywne drugorzędnych lig z punktacją Z dla statystyk, które są uważane za ważne predyktory sukcesu na głównym poziomie ligi, w tym wiek (gracze z większym sukcesem w młodszym wieku są zwykle lepszymi perspektywami), wskaźnik wykonania [SOPct ], wskaźnik marszu [BBrate] i skorygowana produkcja (globalna miara ofensywnej produkcji). Dodatkowo, ponieważ istnieje wiele poziomów mniejszych lig, dołączyłem zmienne obojętne dla poziomu gry w mniejszej lidze (Double A, High A, Low A, Rookie i Short Season z Triple A [najwyższy poziom przed głównymi ligami] jako zmienna referencyjna]). Uwaga: Przeskalowałem WAR, aby była zmienną od 0 do 1.

Zmienny wykres rozrzutu wygląda następująco:

wykres punktowy

Dla porównania zmienna zależna oWAR ma następujący wykres:

zależny wykres zmiennych

Zacząłem od regresji liniowej oWAR = B1zAge + B2zSOPct + B3zBBPct + B4zAdjProd + B5DoubleA + B6HighA + B7LowA + B8Rookie + B9ShortSeasoni uzyskałem następujące wykresy diagnostyczne:

linearRegressionDiagnostics

Istnieją wyraźne problemy z brakiem bezstronności reszt i brakiem losowej zmienności. Ponadto reszty nie są normalne. Wyniki regresji pokazano poniżej:

linearRegressionResults

Postępując zgodnie z radą z poprzedniego wątku , bezskutecznie próbowałem transformacji Box-Coxa. Następnie spróbowałem GAM z linkiem do dziennika i otrzymałem te wykresy:

splajny

Oryginalny diagnostyka SprawdźGAM

Nowy wykres diagnostyczny GAMDiag

Wygląda na to, że splajny pomogły dopasować dane, ale wykresy diagnostyczne nadal wykazują słabe dopasowanie. EDYCJA: Myślałem, że początkowo patrzyłem na wartości resztkowe w stosunku do dopasowanych, ale byłem niepoprawny. Wykres, który został pierwotnie pokazany, jest oznaczony jako Oryginalny (powyżej), a wykres, który przesłałem później, jest oznaczony jako Nowy Wykres Diagnostyczny (również powyżej)

GAMResults

The R2 modelu wzrosła

ale wyniki uzyskane przez polecenie gam.check(myregression, k.rep = 1000)nie są tak obiecujące.

GAMResults2

Czy ktoś może zasugerować kolejny krok dla tego modelu? Z przyjemnością udzielę wszelkich innych informacji, które Twoim zdaniem mogą być przydatne do zrozumienia dotychczasowych postępów. Dzięki za wszelką pomoc, którą możesz udzielić.

zgall1
źródło
2
Znalazłem kod w tym doskonałym podkładzie na GAM w R - www3.nd.edu/~mclark19/learn/GAMS.pdf Kod: Library (car) scatterplotMatrix (mydata [, c (1,1: 8)], pch = 19, cex = .5, reg. Linia = F, lwd.smooth = 1,25, spread = F, elipsa = T, col = c ('gray60', '# 2957FF', '# FF8000'), col.axis = 'gray50')
zgall1
1
Czy możesz udostępnić swój zestaw danych? Również +1 dla tej macierzy wykresów rozrzutu. To jest świetne.
Zach
1
Szkoda, wygląda na interesujący zestaw danych. Moją sugestią byłoby wypróbowanie innych algorytmów uczenia maszynowego, np. Losowy las.
Zach
2
Losowe lasy są oparte na drzewach decyzyjnych. Sprawdź pakiet randomForest w języku R oraz losową stronę wikipedii leśnej: en.wikipedia.org/wiki/Random_forest
Zach.
2
„Zmienna zależna ... jest mierzona jako suma ofensywnych wkładów w każdą grę, w którą gracz jest zaangażowany w trakcie swojej kariery”. To do mnie wyskakuje. Poważnym zamieszaniem jest tutaj to, jak długo gracz gra, zarówno dlatego, że [a] dłuższy czas gry oznacza więcej czasu na „zebranie” OWAR [b] lepsi gracze prawdopodobnie będą grać przez dłuższy czas.
Affine

Odpowiedzi:

6

Bardzo dobra robota. Myślę, że ta sytuacja jest kandydatem do semiparametrycznego modelu logistycznego proporcjonalnych szans. lrmFunkcji w R rmsopakowania będzie pasować modelu. Na razie możesz zaokrąglićYmieć tylko 100-200 poziomów. Wkrótce rmszostanie wydana nowa wersja programu z nową funkcją, ormktóra skutecznie pozwala na tysiące przechwyceń w modelu, tj. PozwalaYbyć w pełni ciągłym [aktualizacja: pojawiła się w 2014 roku]. Model proporcjonalnych kursówβsą niezmienne w jaki sposób Yprzekształca się. Oznacza to, że kwantyle również są niezmienne. Kiedy chcesz przewidywanego środka,Y zakłada się, że znajduje się we właściwej skali przedziałów.

Frank Harrell
źródło
1
Przez poziomy, masz na myśli podzielenie zmiennej Y na segmenty 100-200? Jeśli tak, to czy jest jakaś preferowana metoda wyboru rozmiaru pojemnika? Czy powinny być jednakowej wielkości?
zgall1
1
Po prostu wykonaj binowanie tymczasowo, chyba że mamy ciągłe rozwiązanie. Możesz podzielić na 100 percentyli, np.require(Hmisc); cut2(y, g=100, levels.mean=TRUE)
Frank Harrell,
Kiedy mówisz, że rmswkrótce pojawi się nowa wersja , czy masz pojęcie, kiedy to może być?
zgall1
Jeśli używasz Linuksa, mogę ci go teraz dać, w przeciwnym razie spodziewaj się 2 tygodni.
Frank Harrell,
Nie używam Linuksa, więc chyba będę musiał poczekać. Daj mi znać, kiedy będzie dostępny.
zgall1
1

Myślę, że ponowne przetworzenie zmiennej zależnej i modelu może być tutaj owocne. Patrząc na twoje resztki z lm(), wydaje się, że głównym problemem są gracze z WOJĄ o wysokiej karierze (którą zdefiniowałeś jako sumę całej WOJNY). Zauważ, że twoja najwyższa przewidywana (skalowana) WOJNA to 0,15 na maksymalnie 1! Sądzę, że dwie zmienne zależne zaostrzają ten problem:

  • Gracze, którzy po prostu grają dłużej, mają więcej czasu na zebranie WOJNY
  • Dobrzy gracze mają tendencję do trzymania się dłużej, dzięki czemu będą mieli więcej czasu na zebranie WOJNY

Jednak w kontekście przewidywania, w tym czas odgrywany jawnie jako kontrola (w jakikolwiek sposób, czy to jako waga, czy jako mianownik w obliczaniu średniej WO kariery), przynosi efekt przeciwny do zamierzonego (również podejrzewam, że jego wpływ byłby również nieliniowy). Dlatego sugeruję czas modelowania nieco mniej jawnie w modelu mieszanym przy użyciulme4 lub nlme.

Zmienna zależna byłaby sezonową WOJNĄ i miałbyś inną liczbę j=mi pór roku na gracza i. Model miałby gracza jako efekt losowy i byłby zgodny z następującymi zasadami:

sWARij=α+σi2+<other stuff>+εij

Z lme4wyglądałoby to mniej więcej tak
lmer(sWAR ~ <other stuff> + (1|Player), data=mydata)

Nadal może być konieczne włączenie się sWAR, ale myślę, że pomoże to w sprzężeniu zwrotnym.

Affine
źródło
Nie jestem pewien, czy w pełni rozumiem. Jeśli zmienną zależną jest WAR sezonowa, jakie są zmienne niezależne? Identyczna linia statystyk mniejszej ligi dla każdego gracza? Czy zasadniczo mówimy, że linia A statystyki mniejszej ligi może prowadzić do dużej ligi WAR B, C, D i E?
zgall1
Ponadto, odkąd opublikowałem ten model, śledziłem
zgall1