Aiutami ad adattare questa regressione multipla non lineare che ha sfidato tutti gli sforzi precedenti


9

EDIT: Da quando ho pubblicato questo post, ho seguito un post aggiuntivo qui .

Sintesi del testo seguente: sto lavorando a un modello e ho provato la regressione lineare, le trasformazioni di Box Cox e GAM ma non ho fatto molti progressi

Utilizzando R, sto attualmente lavorando su un modello per prevedere il successo dei giocatori di baseball della lega minore a livello di lega maggiore (MLB). La variabile dipendente, carriera offensiva vince al di sopra della sostituzione (oWAR), è un proxy per il successo a livello di MLB e viene misurata come la somma dei contributi offensivi per ogni gioco in cui il giocatore è coinvolto nel corso della sua carriera (dettagli qui - http : //www.fangraphs.com/library/misc/war/). Le variabili indipendenti sono variabili offensive della lega minore con punteggio z per le statistiche che si ritiene siano importanti predittori di successo a livello di lega maggiore, compresa l'età (i giocatori con maggiore successo in età più giovane tendono ad essere migliori prospettive), tasso di sciopero [SOPct ], walk rate [BBrate] e produzione adattata (una misura globale della produzione offensiva). Inoltre, poiché ci sono più livelli dei campionati minori, ho incluso variabili fittizie per il livello di gioco minore della lega (doppio A, alto A, basso A, principiante e stagione corta con triplo A [il livello più alto prima dei campionati maggiori] come variabile di riferimento]). Nota: ho ridimensionato WAR per essere una variabile che va da 0 a 1.

Il diagramma a dispersione variabile è il seguente:

grafico a dispersione

Per riferimento, la variabile dipendente, oWAR, ha il seguente diagramma:

dependentvariableplot

Ho iniziato con una regressione lineare oWAR = B1zAge + B2zSOPct + B3zBBPct + B4zAdjProd + B5DoubleA + B6HighA + B7LowA + B8Rookie + B9ShortSeasone ho ottenuto i seguenti grafici di diagnostica:

linearRegressionDiagnostics

Ci sono chiari problemi con una mancanza di imparzialità dei residui e una mancanza di variazione casuale. Inoltre, i residui non sono normali. I risultati della regressione sono mostrati di seguito:

linearRegressionResults

Seguendo i consigli di una discussione precedente , ho provato una trasformazione Box-Cox senza successo. Successivamente, ho provato una GAM con un collegamento al registro e ho ricevuto questi grafici:

spline

Originale diagnosticChecksGAM

Nuovo diagramma diagnostico GAMDiag

Sembra che le spline abbiano contribuito ad adattare i dati, ma i grafici diagnostici mostrano ancora un adattamento inadeguato. EDIT: Pensavo di guardare i valori residui vs adattati inizialmente ma non ero corretto. La trama mostrata originariamente è contrassegnata come Originale (sopra) e la trama che ho caricato successivamente è contrassegnata come Nuovo diagramma diagnostico (anche sopra)

GAMResults

La del modello è aumentataR2

ma i risultati prodotti dal comando gam.check(myregression, k.rep = 1000)non sono così promettenti.

GAMResults2

Qualcuno può suggerire un prossimo passo per questo modello? Sono felice di fornire qualsiasi altra informazione che ritieni possa essere utile per comprendere i progressi che ho fatto finora. Grazie per tutto l'aiuto che potete fornire.


2
Ho trovato il codice in questo eccellente primer su GAM in R - www3.nd.edu/~mclark19/learn/GAMS.pdf Il codice: library (car) scatterplotMatrix (mydata [, c (1,1: 8)], pch = 19, cex = .5, reg.line = F, lwd.smooth = 1.25, spread = F, ellisse = T, col = c ('gray60', '# 2957FF', '# FF8000'), asse col. = 'gray50')
zgall1

1
Puoi condividere il tuo set di dati? Inoltre, +1 per quella matrice scatterplot. È eccellente
Zach,

1
È un peccato, sembra un set di dati interessante. Il mio suggerimento sarebbe di provare alcuni altri algoritmi di apprendimento automatico, ad esempio una foresta casuale.
Zach,

2
Le foreste casuali si basano su alberi decisionali. Dai un'occhiata al pacchetto randomForest in R e alla pagina di Wikipedia casuale della foresta: en.wikipedia.org/wiki/Random_forest
Zach

2
"La variabile dipendente ... è misurata come la somma dei contributi offensivi per ogni gioco in cui il giocatore è coinvolto nel corso della sua carriera." Questo mi salta fuori. Un serio confuso qui è da quanto tempo un giocatore gioca, sia in quanto [a] un tempo di gioco più lungo significa più tempo per "raccogliere" oWAR [b] che i giocatori migliori probabilmente giocheranno per periodi di tempo più lunghi.
Affine,

Risposte:


6

Ottimo lavoro Penso che questa situazione sia candidata al modello logistico ordinale semiparametrico a probabilità proporzionale. La lrmfunzione nel rmspacchetto R si adatterà al modello. Per ora potresti voler arrotondare per avere solo 100-200 livelli. Presto verrà rilasciata una nuova versione di con una nuova funzione che consente in modo efficiente migliaia di intercettazioni nel modello, ovvero consente a di essere completamente continuo [aggiornamento: questo è apparso nel 2014]. Il modello di probabilità proporzionale s è invariante rispetto alla trasformazione diCiò significa che anche i quantili sono invarianti. Quando si desidera una media prevista, si presume che si trovi sulla scala dell'intervallo corretto.YrmsormYβYY


1
Per livelli, intendi il binning della variabile Y in 100-200 bucket? In tal caso, esiste un metodo preferito per scegliere la dimensione del cestino? Dovrebbero avere le stesse dimensioni?
zgall1,

1
Esegui temporaneamente il binning a meno che non abbiamo la soluzione continua. Puoi inserire bin in 100 percentili, ad esrequire(Hmisc); cut2(y, g=100, levels.mean=TRUE)
Frank Harrell il

Quando dici che una nuova versione di rmsverrà rilasciata presto, hai idea di quando potrebbe essere?
zgall1,

Se usi Linux posso dartelo ora, altrimenti aspettati 2 settimane.
Frank Harrell,

Non uso Linux, quindi credo che dovrò aspettare. Per favore fatemi sapere quando è disponibile.
zgall1,

1

Penso che rielaborare la variabile e il modello dipendenti possa essere fruttuoso qui. Guardando i tuoi residui dal lm(), sembra che il problema principale sia con i giocatori con una GUERRA di alta carriera (che hai definito come somma di tutta la GUERRA). Nota che la tua GUERRA (scalata) più alta prevista è 0,15 su un massimo di 1! Penso che ci siano due cose con questa variabile dipendente che sta esacerbando questo problema:

  • I giocatori che semplicemente giocano più a lungo hanno più tempo per collezionare WAR
  • I buoni giocatori tenderanno a rimanere più a lungo e avranno quindi l'opportunità di avere quel tempo più lungo per collezionare WAR

Tuttavia, nel contesto della previsione, incluso il tempo giocato esplicitamente come controllo (in qualsiasi modo, sia come peso, sia come denominatore nel calcolo della guerra di carriera media) è controproducente (anche io sospetto che il suo effetto sarebbe anche non lineare). Quindi suggerisco un po 'meno esplicitamente il tempo di modellazione in un modello misto usando lme4o nlme.

La tua variabile dipendente sarebbe WAR stagionale e avresti un numero diverso di stagioni per giocatore . Il modello avrebbe il giocatore come effetto casuale e sarebbe sulla falsariga di:j=mii

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

Con lme4, questo sarebbe qualcosa di simile
lmer(sWAR ~ <other stuff> + (1|Player), data=mydata)

Potrebbe essere necessario a , ma penso che ciò contribuirà a quel circuito di feedback.sWAR


Non sono sicuro di capire appieno. Se la variabile dipendente è WAR stagionale, quali sono le variabili indipendenti? Una linea statistica della lega minore identica per ciascun giocatore? Sostanzialmente stiamo dicendo che la linea statica minore della lega A può portare alla guerra maggiore della lega B, C, D ed E?
zgall1,

Inoltre, da quando ho pubblicato questo modello, ho seguito un post aggiuntivo che potresti voler consultare qui: stats.stackexchange.com/questions/61711/…
zgall1
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.