R Implementierung des Koeffizienten der Teilbestimmung

9

Hat jemand Vorschläge oder Pakete, die den Koeffizienten der Teilbestimmung berechnen?

Der Teilbestimmungskoeffizient kann als Prozentsatz der Variation definiert werden, der in einem reduzierten Modell nicht erklärt werden kann, aber durch die in einem vollständigen (er) Modell angegebenen Prädiktoren erklärt werden kann. Dieser Koeffizient wird verwendet, um einen Einblick zu geben, ob ein oder mehrere zusätzliche Prädiktoren in einem vollständigeren Regressionsmodell nützlich sein können oder nicht.

Die Berechnung für das partielle r ^ 2 ist relativ einfach, nachdem Sie Ihre beiden Modelle geschätzt und die ANOVA-Tabellen für sie generiert haben. Die Berechnung für den Teil r ^ 2 lautet:

(SSEreduced - SSEfull) / SSEreduced

Ich habe diese relativ einfache Funktion geschrieben, die dies für ein multiples lineares Regressionsmodell berechnet. Ich bin mit anderen Modellstrukturen in R nicht vertraut, bei denen diese Funktion möglicherweise nicht so gut funktioniert:

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)

    }

Vorschläge oder Tipps zu robusteren Funktionen zur Erfüllung dieser Aufgabe und / oder zu effizienteren Implementierungen des obigen Codes sind sehr willkommen.

Verfolgungsjagd
quelle
2
Ich schlage vor, die anderen Modelle auszuprobieren und zu prüfen, ob der Code funktioniert oder nicht. R ist normalerweise nett, daher sollte anova ähnliche Dinge für verschiedene Modelle zurückgeben. Das Problem liegt in Ihrer Ausgangsformel. Gilt es für andere Modelle? Wenn dies nicht der Fall ist, macht es keinen Sinn, Code zum Laufen zu bringen. Außerdem sollte der Code eine Warnung ausgeben, dass er für Modelle verwendet wird, bei denen die Formel nicht gültig ist.
mpiktas
Ich sehe die Frage nicht wirklich. Sie möchten eine Funktion, die Teil R2 berechnet, haben aber bereits eine. Kennen Sie die Paketempfindlichkeit (es gibt kein partielles R2, aber pcc, was ein besonderer Fall ist, ist implementiert)?
Robin Girard
@robin - Ich entschuldige mich, wenn meine Frage nicht klar war. Ich bin daran interessiert, ein Paket zu finden, das diese Berechnung enthält (da es wahrscheinlich viele andere hilfreiche Funktionen enthält, die nützlich wären) und / oder Vorschläge zur Verbesserung der oben beschriebenen Funktion. Es fehlt offensichtlich eine Fehlerprüfung und ist möglicherweise nicht für alle Modelltypen anwendbar.
Chase
Ich schlage vor, diese Frage nach SE zu migrieren. Im Zentrum der Frage scheint ein Implementierungsproblem zu stehen, kein statistisches.
Caracal
@caracal - was auch immer Sie für richtig halten. Ich weiß, es gab eine Menge Diskussionen darüber, wo die Grenze im Sand zwischen SO und CV in Bezug auf R-bezogene Fragen gezogen werden sollte. Ich habe so oder so keine starke Präferenz. Meine Arbeit hat mich für das letzte Stück von diesem speziellen Problem abgehalten, wird es aber in den kommenden Wochen erneut aufgreifen, damit ich selbst eine bessere Lösung finden kann. Mir geht es auch gut, die Frage in den Äther verschwinden zu lassen ...
Chase

Antworten:

0

Nun, r ^ 2 ist wirklich nur eine Kovarianz im Quadrat über dem Produkt der Varianzen, also könnten Sie wahrscheinlich so etwas wie cov (Yfull, Ytrue) / var (Ytrue) var (Yfull) - cov (YReduced, Ytrue) / var (Ytrue) tun ) var (YRed) unabhängig vom Modelltyp; Überprüfen Sie, ob dies im Fall lm die gleiche Antwort liefert.

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

Patrick McCann
quelle