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

Code: Alles auswählen

dput(DeinDataframe)
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