Ist ein gewichtetes


19

Ich habe ein robustes lineares Modell Rmit MM-Gewichten unter Verwendung des rlm()im MASS-Paket enthaltenen Modells geschätzt . `R`` liefert keinen Wert für das Modell, aber ich hätte gerne einen, wenn es sich um eine aussagekräftige Größe handelt. Ich bin auch daran interessiert zu wissen, ob es eine Bedeutung hat, einen Wert zu haben, der die Gesamt- und Restvarianz auf die gleiche Weise wie Beobachtungen in der robusten Regression gewichtet. Mein allgemeiner Standpunkt ist, dass, wenn wir für die Zwecke der Regression im Wesentlichen die Gewichte verwenden, die einen Teil der Schätzungen weniger beeinflussen, weil sie in irgendeiner Weise Ausreißer sind, dann sollten wir möglicherweise auch für die Berechnung von angeben die gleichen Schätzungen weniger Einfluss?R 2 r 2R2R2r2

Ich habe zwei einfache Funktionen für das und das gewichtete , sie sind unten. Ich habe auch die Ergebnisse der Ausführung dieser Funktionen für mein Modell mit dem Namen HI9 angegeben. EDIT: Ich fand Webseite von Adelle Coster von UNSW , die eine Formel gibt für die die Vektor Gewichte enthält in die Berechnung sowohl die Berechnung und wie ich es tat, und bat sie , für eine formelle Referenz: http: //web.maths. unsw.edu.au/~adelle/Garvan/Assays/GoodnessOfFit.html (noch auf der Suche nach Hilfe von Cross Validated zur Interpretation dieses gewichteten )R 2 r 2R2R2R2SSeSStr2

#I used this function to calculate a basic r-squared from the robust linear model
r2 <- function(x){  
+ SSe <- sum((x$resid)^2);  
+ observed <- x$resid+x$fitted;  
+ SSt <- sum((observed-mean(observed))^2);  
+ value <- 1-SSe/SSt;  
+ return(value);  
+ }  
r2(HI9)  
[1] 0.2061147

#I used this function to calculate a weighted r-squared from the robust linear model
> r2ww <- function(x){
+ SSe <- sum((x$w*x$resid)^2); #the residual sum of squares is weighted
+ observed <- x$resid+x$fitted;
+ SSt <- sum((x$w*(observed-mean(observed)))^2); #the total sum of squares is weighted      
+ value <- 1-SSe/SSt;
+ return(value);
+ }
 > r2ww(HI9)
[1] 0.7716264

Vielen Dank an alle, die Zeit damit verbringen, dies zu beantworten. Bitte nehmen Sie meine Entschuldigung entgegen, wenn es bereits einen sehr guten Hinweis gibt, den ich verpasst habe, oder wenn mein Code oben schwer zu lesen ist (ich bin kein Code-Typ).


Setzen Sie die Gewichte in lm () und nehmen Sie das Quadrat von dort (warum das Rad neu erfinden?)
user603

1
Vielen Dank für den Tipp, wie ich das effizienter machen kann. Kann jemand die Bedeutung des von mir beschriebenen / vorgeschlagenen gewichteten R-Quadrats kommentieren?
Craig Milligan

@ user603: Wie würden Sie die Gewichte tatsächlich in lm () einfügen?
Histelheim

Das gewichtete kleinste Quadrat, das in R eingepasst wird, besteht nur aus einem Kompliment darin, die Summe (w * e ^ 2) zu minimieren, wobei e der Rest ist. Für Ihren Berechnungscode sollte daher das gesamte Gewicht w eine Quadratwurzel sein.
Yuanhao Lai

Ich möchte betonen, dass wir keinen gewichteten Mittelwert nehmen müssen, zumindest glaube ich, dass ein von mir geschriebenes Programm ein R-Quadrat nahe 1 ergibt mit: klassisches R-Quadrat gewichtetes R-Quadrat, aber NICHT mit gewichtetem R- Im Quadrat, in dem auch der Mittelwert gewichtet ist, finde ich -6, dass dies selbst für mich kontraintuitiv ist, aber ich glaube an die Erfahrung
Pierre,

Antworten:


22

Die folgende Antwort basiert auf: (1) meiner Interpretation von Willett und Singer (1988) Ein weiterer Warnhinweis zum R-Quadrat: Es wird in der gewichteten Regressionsanalyse der kleinsten Fehlerquadrate verwendet. Der amerikanische Statistiker. 42 (3). pp236-238 und (2) die Prämisse, dass robuste lineare Regression im Wesentlichen die Regression kleinster Quadrate mit den durch einen iterativen Prozess geschätzten Gewichten gewichtet wird.

Die Formel, die ich in der Frage für r2w angegeben habe, muss geringfügig korrigiert werden, um der Gleichung 4 in Willet und Singer (1988) für r2wls zu entsprechen: Die SSt-Berechnung sollte auch einen gewichteten Mittelwert verwenden:

the correction is SSt <- sum((x$w*observed-mean(x$w*observed))^2)].

Was bedeutet dieses (korrigierte) gewichtete r-Quadrat? Willett und Singer interpretieren es als: "den Bestimmungskoeffizienten in dem transformierten [gewichteten] Datensatz. Es ist ein Maß für den Anteil der Variation in gewichtetem Y, der durch gewichtetes X berücksichtigt werden kann , und ist die Menge, die als ausgegeben wird R2 von den wichtigsten statistischen Computerpaketen, wenn eine WLS - Regression durchgeführt wird ".

Ist es als Maß für die Passform sinnvoll? Dies hängt davon ab, wie es dargestellt und interpretiert wird. Willett und Singer warnen davor, dass es in der Regel etwas höher ist als das bei der Regression der kleinsten Quadrate erhaltene r-Quadrat, und der hohe Wert eine auffällige Anzeige fördert ... aber diese Anzeige kann trügerisch sein, wenn sie im herkömmlichen Sinne von r interpretiert wird -quadratisch (als der Anteil der ungewichtetenVariation anhand eines Modells erklärt). Willett und Singer schlagen vor, dass eine weniger 'trügerische' Alternative PseudoR2wls (ihre Gleichung 7) ist, was meiner Funktion r2 in der ursprünglichen Frage entspricht. Im Allgemeinen warnen Willett und Singer auch davor, dass es nicht gut ist, sich auf r2 (auch nicht auf ihre Pseudo2wls) als alleiniges Maß für die Passgenauigkeit zu verlassen. Trotz dieser Vorsichtsmaßnahmen ist die ganze Prämisse einer robusten Regression, dass einige Fälle als „nicht so gut“ beurteilt werden und in der Modellanpassung nicht so stark berücksichtigt werden, und es kann sinnvoll sein, dies in einem Teil des Modellbewertungsprozesses zu reflektieren. Das beschriebene gewichtete r-Quadrat kann ein gutes Maß für die Anpassungsgüte sein - sofern die korrekte Interpretation in der Präsentation klar angegeben ist und nicht als alleinige Beurteilung der Anpassungsgüte herangezogen wird.


1
(+1). Vielen Dank, dass Sie sich die Zeit genommen haben, die Antwort zu geben.
user603

1

@CraigMilligan. Sollte nicht:

  • Das Gewicht liegt außerhalb der eckigen Klammer
  • Der gewichtete Mittelwert wird berechnet, für den wir auch verwenden könnensum(x$w*observed)/sum(x$w)weighted.mean(observed,x$w)

Etwas wie das:

r2ww <- function(x){
  SSe <- sum(x$w*(x$resid)^2)
  observed <- x$resid+x$fitted
  SSt <- sum(x$w*(observed-weighted.mean(observed,x$w))^2)
  value <- 1-SSe/SSt;
  return(value);
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.