Ist es möglich, das R-Quadrat auf einer Regression der kleinsten Quadrate zu berechnen?

8

Ich verwende die von Terry T. bereitgestellte Deming-Funktion für diesen archivierten R-Help-Thread . Ich vergleiche zwei Methoden, daher habe ich Daten, die so aussehen:

y  x     stdy   stdx
1  1.2   0.23   0.67
2  1.8   0.05   0.89
4  7.5   1.13   0.44
... ...  ...   ...

Ich habe meine Deming-Regression durchgeführt (auch als "Total Least Squares Regression" bezeichnet) und bekomme eine Steigung und einen Achsenabschnitt. Ich möchte einen Korrelationskoeffizienten erhalten, also beginne ich mit der Berechnung des . Ich habe die Formel manuell eingegeben:R2

R2 <- function(coef,i,x,y,sdty){
    predy    <- (coef*x)+i
    stdyl    <- sum((y-predy)^2)   ### The calculated std like if it was a lm (SSres)
    Reelstdy <- sum(stdy)          ### the real stdy from the data  (SSres real)
    disty    <- sum((y-mean(y))^2) ### SS tot
    R2       <- 1-(stdyl/disty)    ### R2 formula
    R2avecstdyconnu <- 1-(Reelstdy/disty) ### R2 with the known stdy
    return(data.frame(R2, R2avecstdyconnu, stdy, Reelstdy))
}

Diese Formel funktioniert und gibt mir Ausgabe.

  • R2
  • Gibt es eine Möglichkeit, einen Korrelationskoeffizienten aus einer Regression des kleinsten Quadrats zu erhalten?

ERGEBNIS DER DEMING-REGRESSION:

Call:
deming(x = Data$DS, y = Data$DM, xstd = Data$SES, ystd = Data$SEM,     dfbeta = T)

               Coef  se(coef)         z            p
Intercept 0.3874572 0.2249302 3.1004680 2.806415e-10
Slope     1.2546922 0.1140142 0.8450883 4.549709e-02

   Scale= 0.7906686 
> 
Nico Coallier
quelle
2
ρR2
Ich versuche zu sehen, wie gut y mit x korreliert. Ich habe meine Ausgabe zu der Frage aus der Deming-Regression (Total Least Squared Regression) hinzugefügt. Ich möchte sagen können, dass die beiden Methoden mit anderen Worten ähnliche Ergebnisse liefern.
Nico Coallier

Antworten:

6

Um die Antwort von whuber oben zu erläutern - Pearson wird Ihnen geben, was Sie wollen. Es bestimmt, wie gut y mit x korreliert, indem ein vom Regressionsmodell unabhängiger Ansatz verwendet wird :

ρX,Y=cov(X,Y)σXσY

gx.rma aus dem rgr-Paket führt insgesamt die kleinsten Quadrate aus und berechnet Pearson für Sie (oder Sie können mit Deming fortfahren und dies manuell tun).

require(rgr)
set.seed(3)
x<-rnorm(101,mean=2.3,sd=4.2)
x<-x+seq(0,100) 
set.seed(3)
y<-rnorm(101,mean=4.9,sd=1.9)
y<-y+seq(6,206,length=101)

rma<-gx.rma(x,y)
rma$corr
[1] 0.9922014

Die grundlegende Antwort auf Ihre Frage lautet also: Wenn Sie die kleinsten Quadrate ausführen, vergessen Sie das R-Quadrat und verwenden Sie einfach Pearson. Sie können das immer quadrieren, wenn Sie ein Ergebnis zwischen 0 und 1 wünschen. Dies wird alles tun, was Sie brauchen.

Trotzdem werde ich ein wenig näher darauf eingehen, da ich verstehe, dass wir in der Lage sein sollten, ein R-Quadrat-Äquivalent zu berechnen.

Versuchen wir zunächst eine normale Regressionssumme der Quadrate für die Daten mit lm. Beachten Sie, dass es den gleichen Korrelationskoeffizienten wie Pearson gibt (nach quadratischer Wurzelbildung und offensichtlich nur mit Sorge um die Größe).

ols<-lm(y~x)
sqrt(summary(ols)$r.squared)
[1] 0.9922014

Dies wird aus dem Ergebnis des lm-Modells unter Verwendung des traditionellen Ansatzes der Quadratsumme berechnet

R2=1SresStot

Vorausgesetzt, Sie verwenden das von lm angegebene Modell, sind (Pearson) -Quadrat und R-Quadrat äquivalent.

Wenn Sie jedoch das Modell aus der Gesamtsumme der Quadratregression verwenden und versuchen, die letztere Gleichung zu verwenden, erhalten Sie ein etwas anderes Ergebnis. Dies ist offensichtlich, da normale und kleinste Quadrate unterschiedliche Minimierungsfunktionen verwenden. Geben Sie daher Modelle mit leicht unterschiedlichen Verläufen und Abschnitten an. (Denken Sie daran, dass die erste Gleichung immer noch das gleiche Ergebnis liefert, wenn nur die Daten betrachtet werden.)

Hier werde ich allerdings aufgehängt. Wenn die beiden Gleichungen bei Verwendung des lm-Modells das gleiche Ergebnis liefern, muss es sicherlich eine äquivalente Formulierung für die letztere Gleichung geben, aber bei Verwendung des Modells der kleinsten Quadrate insgesamt, das auch das gleiche Ergebnis liefert?

Ich hatte ein kurzes Herumspielen mit verschiedenen Ansätzen unter Verwendung der entsprechenden Minimierungsfunktion (wie das Poster hier: Bestimmungskoeffizient einer orthogonalen Regression ), kann aber keinen Weg finden, dies zu tun - wenn es einen Weg gibt.

Vielleicht hängen wir beide daran, dass Pearson und R-Quadrat das gleiche Ergebnis erzielen, wenn sie normale kleinste Quadrate verwenden - und es gibt einfach keine Möglichkeit, R-Quadrat auf insgesamt kleinsten Quadraten zu machen, was das gleiche Ergebnis liefert als Pearson. Aber ich weiß nicht genug darüber, um zu sagen, warum nicht.

Mooks
quelle
Vielen Dank für Ihre Antwort, aber ... Ich denke immer noch, dass gx.rma nicht für das geeignet ist, was ich versuche. Deshalb verwende ich Deming-Regression. Weil ich nicht verstehe, wie die gx.rma den bekannten Standardfehler tatsächlich erklärt ... Aber es könnte sein, dass ich hier etwas falsch
verstehe
1
Der Punkt ist, dass Sie einen Korrelationskoeffizienten zwischen x und y (den Sie erwähnen) berechnen können, ohne dass eine Regression erforderlich ist . Ich denke, Sie sind über den Unterschied einer Korrelation zwischen den Daten und einer Bewertung der Qualität der Regression aufgehängt - sie sind nicht unbedingt dasselbe. Pearson ^ 2 gibt Ihnen das erstere und ist im Fall von normalem LS (mit lm) dasselbe wie R ^ 2. Für orthogonale LS sind sie nicht. Fragen Sie also nach dem Korrelationskoeffizienten. und R ^ 2 (besonders jetzt erwähnen Sie den Standardfehler) sind eigentlich zwei verschiedene Fragen. Möglicherweise möchten Sie das OP umformulieren.
Mooks
Ich war vielleicht nicht klar genug ... was ich tun möchte, ist der Pearson. Aber was mich nervt ist, dass es kein R ^ 2 für die gesamte Regression der kleinsten Quadrate gibt. Ich benutze das kleinste Quadrat insgesamt, um meinen Koeffizienten (Steigung) anzupassen. Aber ich werde den Pearson für die Korrelation verwenden, wie Sie vorgeschlagen haben. Vielen Dank
Nico Coallier
Ich verstehe, es ist etwas, das mich auch nervt! Ich denke, es sollte eine äquivalente Formel geben, um ein R2 auch für die kleinsten Quadrate zu erhalten, aber wahrscheinlich verstehe ich das nicht vollständig. Wenn Sie jedoch nur Ihre Steigung anpassen möchten, können Sie einfach die Minimierungsfunktion verwenden, die die Grundlage für die Gesamt-LS in Deming bildet. Versuchen Sie es mit mathworld.wolfram.com/… oder arxiv.org/pdf/math/9805076.pdf . Sie können auch die Analyse von Hauptkomponenten mit prcomp oder princomp in Betracht ziehen - es ist im Grunde dasselbe und vielleicht werfen sie etwas heraus, das hilft.
Mooks
1

Verwenden des Pakets "mcr"

und Verwenden der Funktion zum Generieren Ihres Deming-Regressionsmodells

yourmodel<-mcreg(x, y, ...) # you need to be familiar with the various types of deming constant SD or CV%. these can give very different results. But that's different question.

und Erstellen eines Diagramms unter Verwendung der Funktion

MCResult.plot(your model)

Dies zeigt die Korrelation des Pearson-Produktionsmoments auf dem Plot für das Modell an, die Ihnen die Stärke und die Richtung der linearen Beziehung zwischen Ihren beiden x, y-Variablen angibt, aber nicht den Anteil der erklärten Variation angibt.

Ich hoffe, das hilft.

George
quelle