R implementazione del coefficiente di determinazione parziale


9

Qualcuno ha suggerimenti o pacchetti che calcoleranno il coefficiente di determinazione parziale?

Il coefficiente di determinazione parziale può essere definito come la percentuale di variazione che non può essere spiegata in un modello ridotto, ma può essere spiegata dai predittori specificati in un modello (er) completo. Questo coefficiente viene utilizzato per comprendere se uno o più predittori aggiuntivi possono essere utili in un modello di regressione più completamente specificato.

Il calcolo per il r ^ 2 parziale è relativamente semplice dopo aver stimato i due modelli e aver generato le tabelle ANOVA per essi. Il calcolo per il r ^ 2 parziale è:

(SSEreduced - SSEfull) / SSEreduced

Ho scritto questa funzione relativamente semplice che calcolerà questo per un modello di regressione lineare multipla. Non ho familiarità con altre strutture di modello in R dove questa funzione potrebbe non funzionare anche:

partialR2 <- function(model.full, model.reduced){
    anova.full <- anova(model.full)
    anova.reduced <- anova(model.reduced)

    sse.full <- tail(anova.full$"Sum Sq", 1)
    sse.reduced <- tail(anova.reduced$"Sum Sq", 1)

    pR2 <- (sse.reduced - sse.full) / sse.reduced
    return(pR2)

    }

Sarebbe molto apprezzato qualsiasi suggerimento o suggerimento su funzioni più solide per svolgere questo compito e / o implementazioni più efficienti del codice sopra.


2
Suggerisco di provare gli altri modelli e vedere se il codice funziona o meno. R è di solito carino, quindi Anova dovrebbe restituire cose simili per modelli diversi. Il problema è con la tua formula iniziale. Vale per altri modelli? In caso contrario, non ha senso far funzionare il codice, inoltre il codice dovrebbe emettere un avviso che viene utilizzato per i modelli in cui la formula non è valida.
mpiktas,

Non vedo davvero la domanda. Vuoi una funzione che calcola R2 parziale, ma ne hai già una. Conosci la sensibilità del pacchetto (non ci sono R2 parziali ma è implementato pcc che è un caso particolare)?
Robin Girard

@robin - Mi scuso se la mia domanda non è chiara. Sono interessato a trovare un pacchetto che contenga questo calcolo (poiché probabilmente contiene molte altre funzioni utili che sarebbero utili) e / o suggerimenti su come migliorare la funzione che ho scritto sopra. Ovviamente manca un controllo degli errori e potrebbe non essere applicabile a tutti i tipi di modello.
Chase

Suggerisco di migrare questa domanda a sud-est. Al centro della domanda sembra esserci un problema di implementazione, non statistico.
Caracal,

@caracal - qualunque cosa tu ritenga opportuno. So che c'è stata una buona dose di discussione su dove dovrebbe essere tracciata la linea nella sabbia tra SO e CV per quanto riguarda le domande relative a R. Non ho una forte preferenza in entrambi i casi. Il mio lavoro mi ha allontanato da questo specifico problema per l'ultima volta, ma lo rivedrò di nuovo nelle prossime settimane, quindi potrei trovare una soluzione migliore. Sto anche bene lasciando che la domanda svanisca nell'etere ...
Chase,

Risposte:


0

Bene, r ^ 2 è davvero solo una covarianza al quadrato sul prodotto delle varianze, quindi probabilmente potresti fare qualcosa come cov (Yfull, Ytrue) / var (Ytrue) var (Yfull) - cov (YReduced, Ytrue) / var (Ytrue ) var (YRed) indipendentemente dal tipo di modello; controlla per verificare che ti dia la stessa risposta nel caso lm.

http://www.stator-afm.com/image-files/r-squared.gif

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.