Bestimmtheitsmaß R² extrahieren

Modelle zur Korrelations- und Regressionsanalyse

Moderator: EDi

Antworten
Moritz F.
Beiträge: 21
Registriert: Mo Jan 22, 2018 3:17 pm

Bestimmtheitsmaß R² extrahieren

Beitrag von Moritz F. »

Hallo R Gemeinde,

ich möchte aus einer Tabelle das Bestimmtheitsmaß R² extrahieren und den Wert in eine neue Tabelle schreiben.
Bis jetzt sieht es so aus:

x <- Ausgabetabelle$X-Werte
y <- Ausgabetabelle$Y-Werte
model <- lm(formula=y~x)
summary(model)

In der summary wird mir jetzt unter anderem das R² , als Multiple R-squared, angezeigt. Wie kann ich dieses nun extrahieren und in eine neue Tabelle schreiben. Ebenso will ich auch den Regressionskoeffizienten und den p-Wert in die neue Tabelle schreiben.

Vielen Dank im Voraus.

Moritz F.
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Bestimmtheitsmaß R² extrahieren

Beitrag von jogo »

Hallo Moritz,

Code: Alles auswählen

model <- lm(demand~Time, data=BOD)
summary(model)$r.squared
Bitte lies den Hilfetext der Funktion summary.lm - dort besonders den Abschnitt Value :!:
Probier auch mal:

Code: Alles auswählen

str(summary(model))
Gruß, Jörg
Moritz F.
Beiträge: 21
Registriert: Mo Jan 22, 2018 3:17 pm

Re: Bestimmtheitsmaß R² extrahieren

Beitrag von Moritz F. »

Super.

Funktioniert.

Besten Dank!!!
Moritz F.
Beiträge: 21
Registriert: Mo Jan 22, 2018 3:17 pm

Re: Bestimmtheitsmaß R² extrahieren

Beitrag von Moritz F. »

Hallo,

ich habe noch eine Frage dazu. Ich arbeite mit einer Schleife, dass heißt ich führe Berechnungen durch und erstelle mir dann eine Tabelle mit X- und Y-Werten erstelle mir dann das R² und schreibe es in eine neue Tabelle. Anschließend ergolgt die nächste Berechnung usw...
Mein Problem ist, dass bei den Berechnungen auch Werte nicht rechenbar sind, ich also das R² nicht immer aus alle Werten erstellen möchste sondern teilweise nur aus ein paar wenigen.
Kann ich das in R umsetzen, dass nur das R² aus den Werten berechnet wird, die "funktioniert" haben, für diese Werte steht aktuell dann ein Wert von -99999 in der Spalte für nodata.

Vielen Dank

Moritz
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Bestimmtheitsmaß R² extrahieren

Beitrag von jogo »

Hallo Moritz,

so ganz konkret kann ich mir nicht vorstellen, was Du wie umgesetzt hast.
Kannst Du bitte den bisherigen Code zeigen?
Ansonsten muss meine Antwort genauso vage bleiben wie Deine Beschreibung ist:
Wenn man die innere Berechnung in eine Funktion packt, kann man statt der äußeren Schleife sapply(), lapply(), by(), aggregate() oder etwas ähnliches verwenden.

Gruß, Jörg
Moritz F.
Beiträge: 21
Registriert: Mo Jan 22, 2018 3:17 pm

Re: Bestimmtheitsmaß R² extrahieren

Beitrag von Moritz F. »

Hier mein momentaner Code:

{{
...Berechnungen...
}
{
{
x <- Ausgabetabelle_x_y$X-Werte
y <- Ausgabetabelle_x_y$Y-Werte
plot(x,y, xlim=c(0,8), ylim=c(0,12), ylab="Y-Werte",
xlab="X-Werte",pch=19,cex=0.5, main="Simple Linear Regression")
Tabelle_PK$Regressionskoeffizienten[a]=lm(y~x)
model=lm(y~x)
summary(model)$r.squared
Tabelle_PK$Bestimmtheitsmaß_r²[a]=summary(model)$r.squared
summary(model)$adj.r.squared
Tabelle_PK$adj_r²[a]=summary(model)$adj.r.squared
Tabelle_PK$P_Wert[a]=anova(model)$'Pr(>F)'[1]
}
}}

Ich will mir also nach einer Berechnung (insgesamt sind es 300) das R² in eine Tabelle schreiben. Jetzt kann es aber vorkommen, dass bei einer Berechnungen bei ein paar Grids nichts herausgekommen ist und in der Spalte dann der Wert -99999 steht für nodata. Momentan berechnet er dann das R² für alle Werte auch die mit nodata. Ich will jetzt ins Script schreiben, dass das R² nur aus denjenigen berechnert werden deren Wert größer 0 ist und nicht -99999.

Vielen Dank schonmal im Voraus!
consuli
Beiträge: 479
Registriert: Mo Okt 10, 2016 8:18 pm

Re: Bestimmtheitsmaß R² extrahieren

Beitrag von consuli »

Moritz F. hat geschrieben: Do Mai 10, 2018 10:11 am Jetzt kann es aber vorkommen, dass bei einer Berechnungen bei ein paar Grids nichts herausgekommen ist und in der Spalte dann der Wert -99999 steht für nodata. Momentan berechnet er dann das R² für alle Werte auch die mit nodata. Ich will jetzt ins Script schreiben, dass das R² nur aus denjenigen berechnert werden deren Wert größer 0 ist und nicht -99999.
Hm, steht da nicht eigentlich die R Missing Konstante NA drin?

Sicherlich wird NA intern anders dargestellt. Aber wie kommst Du an den internen Wert. Liest Du die Ergebnisdatei mit Python aus, oder ähnlich?

Consuli
Irmgard.
Antworten