Seite 1 von 1

Regression für fehlende y-Werte

Verfasst: Mo Jul 10, 2017 5:09 pm
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

Re: Regression für fehlende y-Werte

Verfasst: Mo Jul 10, 2017 6:48 pm
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.

Re: Regression für fehlende y-Werte

Verfasst: Mo Jul 10, 2017 7:59 pm
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