Seite 1 von 1
logarithmische Regression
Verfasst: Fr Okt 18, 2019 10:54 am
von saskia
Guten Morgen,
ich bin totaler Anfänger in RStudio und soll anhand von Daten eine Funktion erstellen.
Meine Daten sind:
Fläche - Punkte
0,75 - 1
1,25 - 2
2,25 - 3
4 - 4
6,5 - 5
11,5 - 6
20 - 7
32,5 - 8
47,5 - 9
62,5 - 10
77,5 - 11
85 - 12
90 - 12
100 - 12
Die Tabelle ist so zu verstehen, dass man für 0,75 % der landwirtschaftlich genutzen Fläche 1 Punkt bekommt usw.
Ich soll nun aus diesen Daten eine kontinuierliche Funktion erstellen. In R habe ich die Daten bereits geplottet.
Jetzt ist meine Frage, wie ich daraus eine (logarithmische) Funktion erstellen kann?
Kann mir da vielleicht jemand helfen? Ich würde mich riesig über Antworten freuen.
Ganz liebe Grüße,
Saskia
Re: logarithmische Regression
Verfasst: Fr Okt 18, 2019 11:02 am
von jogo
Hallo Saskia,
willkommen im Forum!
Du hast die Daten schon eingelesen? Dann packe doch bitte den output von
in Deine nächste Nachricht.
Formatiere den output passend
- siehe http://forum.r-statistik.de/viewtopic.php?f=20&t=29
Gruß, Jörg
Re: logarithmische Regression
Verfasst: Fr Okt 18, 2019 11:57 am
von saskia
Hallo Jörg,
vielen Dank für deine Antwort.
Ich hoffe, dass es so richtig ist?
Code: Alles auswählen
structure(list(Fläche = c(0.75, 1.25, 2.25, 4, 6.5, 11.5, 20,
32.5, 47.5, 62.5, 77.5, 80), Punkte = c(1, 2, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12)), row.names = c(NA, -12L), class = c("tbl_df",
"tbl", "data.frame"))
Viele Grüße,
Saskia
Re: logarithmische Regression
Verfasst: Fr Okt 18, 2019 1:13 pm
von bigben
Hallo Saskia,
das "ä" in Fläche würde ich nicht nehmen. Kann funktionieren, kann irgendwann plötzlich schief gehen.
Hilft Dir folgendes?
Code: Alles auswählen
werte <- structure(list(Flaeche = c(0.75, 1.25, 2.25, 4, 6.5, 11.5, 20,
32.5, 47.5, 62.5, 77.5, 85, 90, 100), Punkte = c(1L, 2L, 3L,
4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 12L, 12L)), .Names = c("Flaeche",
"Punkte"), class = "data.frame", row.names = c(NA, -14L))
plot(werte$Punkte, werte$Flaeche)
plot(werte$Punkte, log(werte$Flaeche))
modell <- lm(log(Flaeche) ~ Punkte, data = werte)
summary(modell)
plot(werte$Punkte, werte$Flaeche, xlab="Punkte", ylab="Fläche")
curve(exp(.4346*x - .3935), from = .5, to = 12, add = TRUE, col="blue")
text(9.5, 90, expression(e^{.4346*Punkte - .3935}), col="blue")
LG,
Bernhard
Re: logarithmische Regression
Verfasst: Fr Okt 18, 2019 2:08 pm
von saskia
Moin Bernhard,
vielen, vielen Dank für deine Mühe.
Der Ansatz ist super. Ich habe jetzt probiert, die Variablen zu tauschen. Das Ziel ist nämlich, dass ich von der Fläche auf die Punkte schließen kann.
Ich bin leider kläglich gescheitert.
Hier mein Code (nicht wundern - ich habe die letzten drei Datenpaare rausgenommen, da es ab 85% der Fläche 12 Punkte gibt)
Code: Alles auswählen
werte <- structure(list(Flaeche = c(0.75, 1.25, 2.25, 4, 6.5, 11.5, 20,
32.5, 47.5, 62.5, 77.5), Punkte = c(1L, 2L, 3L,
4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L)), .Names = c("Flaeche",
"Punkte"), class = "data.frame", row.names = c(NA, -14L))
plot(werte$Flaeche, werte$Punkte)
plot(werte$Flaeche, log(werte$Punkte))
modell <- lm(log(Punkte) ~ Flaeche, data = werte)
summary(modell)
plot(werte$Flaeche, werte$Punkte, xlab="Fläche", ylab="Punkte")
curve(exp(0.02127*x + 1.0763), from = .5, to = 80, add = TRUE, col="blue")
Hast du eine Idee, welchen Fehler ich gemacht habe?
Ganz liebe Grüße und vielen Dank,
Saskia
Re: logarithmische Regression
Verfasst: Fr Okt 18, 2019 2:30 pm
von bigben
Hallo Saskia,
der Zusammenhang
log(Punkte) ~ Fläche ist nicht linear. Der Zusammenhang
Punkte ~ log(Fläche) hingegen ist linear:
Code: Alles auswählen
plot(werte$Punkte ~ log(werte$Flaeche), xlab = "log(Fläche)", ylab="Punkte")
abline(lm( Punkte ~ log(Flaeche), data = werte), col="blue")
axis(3, at=log(c(1, 2, 5, 10, 20, 50, 100)), labels=c(1, 2, 5, 10, 20, 50, 100))
mtext("Fläche", 3, 2.5)
summary(lm( Punkte ~ log(Flaeche), data = werte))
LG,
Bernhard
Re: logarithmische Regression
Verfasst: Fr Okt 18, 2019 2:55 pm
von saskia
Vielen, vielen Dank für Deine Hilfe!
Du hast mir echt den Tag gerettet
Ganz liebe Grüße,
Saskia