Regression für fehlende y-Werte

Modelle zur Korrelations- und Regressionsanalyse

Moderator: EDi

Antworten
kevin

Regression für fehlende y-Werte

Beitrag von kevin »

Servus,
ich bin neu hier im Forum und habe eine evtl. speziellere Frage, ich hoffe dennoch sie so gut wie möglich beschreiben zu können.

Ich habe eine Tabelle in der es zu Bäumen eine Höhe, ein Alter und einen Durchmesser gibt.
In dieser Tabelle habe ich aber einige NA in der Spalte Höhe!
Um diese fehlende Höhen errechnen zu können, machte ich vorerst eine lm-Funktion.
Die Formel für lm die ich anwenden soll, lautet: Höhe = Durchmesser + LOG(Durchmesser) * Alter
In R sieht die Formel so aus:

Code: Alles auswählen

lm(Fichte$Hoehe0~Fichte$BHD0+log(Fichte$BHD0)*Fichte$Alter)
Ich wende die Formel an und durch summary werden mir lauter tolle Dinge angezeigt; sprich R hat die Formel geschluckt und fleißig gerechnet.
Jetzt zu der Frage:
Wie schaffe ich es mit Hilfe dieser Formel meine fehlenden NA in der Spalte Höhe zu errechnen???

Ich bin leider absoluter Neuling auf dem Gebiet der R-Software!
Würde mich daher sakrisch freuen wenn mir geholfen werden kann.
Danke.
Viele Grüße
Zuletzt geändert von jogo am Sa Jul 15, 2017 8:27 am, insgesamt 1-mal geändert.
Grund: Ich habe den Code formatiert. Beim nächsten Mal bitte selbst erledigen!
Benutzeravatar
student
Beiträge: 674
Registriert: Fr Okt 07, 2016 9:52 am

Re: Regression für fehlende y-Werte

Beitrag von student »

Hallo Kevin,

willkommen im Forum! Die Frage ist durchaus nicht speziell, der Umgang mit fehlenden Werten kommt immer wieder mal hoch. Wie möchtest Du mit einem NA rechnen (Ich nehme an, wenn Du von fehlenden NA sprichst, meinst Du, dass an dieser Stelle in Deinen Daten NA steht, richtig?)? In Deiner Tabelle hast Du dann keinen Wert vorliegen, also kann R auch keine Berechnung durchführen. Du kannst natürlich Annahmen bezüglich der fehlenden Beobachtungen machen und die NA's durch die Annahmen ersetzen. Aber bitte mit Vorsicht und begründet.

Denkst bei Deiner Frage an ein Konstrukt wie z. B. mean(x, trim = 0, na.rm = FALSE, ...) bedeutet das nur, dass das Berechnungsverfahren nicht auf die Bretter geht, wenn es auf ein NA geht.
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube

Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Regression für fehlende y-Werte

Beitrag von jogo »

Hallo Kevin,

willkommen im Forum!
kevin hat geschrieben: Mo Jul 10, 2017 5:09 pm Ich habe eine Tabelle in der es zu Bäumen eine Höhe, ein Alter und einen Durchmesser gibt.
In dieser Tabelle habe ich aber einige NA in der Spalte Höhe!
Um diese fehlende Höhen errechnen zu können, machte ich vorerst eine lm-Funktion.
Die Formel für lm die ich anwenden soll, lautet: Höhe = Durchmesser + LOG(Durchmesser) * Alter
In R sieht die Formel so aus: lm(Fichte$Hoehe0~Fichte$BHD0+log(Fichte$BHD0)*Fichte$Alter)
Bitte formatiere den Code entsprechend, siehe viewtopic.php?f=20&t=29
Die Funktion lm() kennt einen Parameter data= - damit kannst Du das viel einfacher schreiben:

Code: Alles auswählen

lm(Hoehe0 ~ BHD0 + log(BHD0)*Alter, data=Fichte)
Ich wende die Formel an und durch summary werden mir lauter tolle Dinge angezeigt; sprich R hat die Formel geschluckt und fleißig gerechnet.
Jetzt zu der Frage:
Wie schaffe ich es mit Hilfe dieser Formel meine fehlenden NA in der Spalte Höhe zu errechnen???
Der erste Schritt ist, das Modell in einem Objekt zu speichert:

Code: Alles auswählen

m <- lm(Hoehe0 ~ BHD0 + log(BHD0)*Alter, data=Fichte)
summary(m)
Bei der Schätzung des Modells werden natürlich alle Beobachtungen weggelassen, bei denen eine der relevanten Variablen NA ist. Du kannst die Funktion predict() verwenden, um das Modell mit neuen Daten schätzen zu lassen:

Code: Alles auswählen

B <- BOD
B$demand[3] <- NA
B
m <- lm(demand ~ Time, data=B)
summary(m)
B$demand.predicted <- predict(m, newdata=B)
B
Gruß, Jörg
Antworten