Spline Begriffe: Grad des Polynoms, Freiheitsgrad, Kontinuit

Alle Verfahren der Regressionanalyse.

Spline Begriffe: Grad des Polynoms, Freiheitsgrad, Kontinuit

Beitragvon FloFlo » Do 28. Mär 2024, 18:49

Hallo alle zusammen,

ich bin verzweifelt dabei eine Hausarbeit über Spline zu schreiben und seit Tagen verstehe ich die Literatur nicht, insbesondere die Begriffe :oops:
Ich erstelle in R folgende Funktion:
Code: Alles auswählen
spline_model <- lm(sales ~ bs(data_clean$visits, df = 3, knots = 3)+ data_clean$discount -1, data = data_clean)

In der Literatur habe ich drei verschiedene Begriffe gefunden:
  • Grad des Polynoms: Der Parameter heißt in R "degree". Ich denke, Grad 1 ist linear. Grad 2 ist eine Kurve. Grad 3 ist ein kubischer Spline mit so etwas wie einer Multikurve.
  • Freiheitsgrad: Parameter "df" in R. Dies ist so etwas wie die Gesamtflexibilität des gesamten Splines. Was ich nicht verstehe: Was ist flexibel?
  • Grad der Kontinuität: Das habe ich in der Literatur gefunden. Das bedeutet so etwas wie: So intensiv sind die Veränderungen an den Knoten. Aber irgendwo anders in der Literatur klingt es nach Freiheitsgrad. An anderer Stelle wird erwähnt, dass der 3. Grad ein kubischer Spline ist. Aber dann muss es der Grad des Polynoms sein, bezieht sich aber auch auf Freiheitsgrade. Darüber bin ich am meisten verwirrt.

Zusätzlich gibt es einen Basis-Spline, der von meiner Funktion bs verwendet wird. Doch was ist das Besondere am Basis-Spline?

Danke schonmal!

LG
FloFlo
Grünschnabel
Grünschnabel
 
Beiträge: 4
Registriert: Do 28. Mär 2024, 18:41
Danke gegeben: 3
Danke bekommen: 0 mal in 0 Post

Re: Spline Begriffe: Grad des Polynoms, Freiheitsgrad, Konti

Beitragvon bele » Do 28. Mär 2024, 19:54

FloFlo hat geschrieben:[*]Grad des Polynoms: Der Parameter heißt in R "degree". Ich denke, Grad 1 ist linear. Grad 2 ist eine Kurve. Grad 3 ist ein kubischer Spline


Soweit ich selbst Spline-Regression verstanden habe, stimmt das so.

Freiheitsgrad: Parameter "df" in R. Dies ist so etwas wie die Gesamtflexibilität des gesamten Splines. Was ich nicht verstehe: Was ist flexibel?


Wenn Du eine einfache lineare Regression machst, dann zwingst Du den Daten einen linearen Zusammenhang auf und brauchst dann nur wenig Daten, um die entsprechende Gerade zu finden. Wenn Du einen quadratischen Term dazunimmst, dann gibst Du der Regression etwas mehr Freiheit in Sachen Form. Durch diese Freiheit, wie die Form aussehen darf, brauchst Du aber auch mehr Daten, um die Form zu bestimmen. Mit der Spline-Regression gibst Du dem Modell nochmal mehr Möglichkeiten, wie der Zusammenhang zwischen x und y aussehen kann und letztlich musst Du vorgeben, wieviel Freiheit das Modell hat. Soll der Graph von x und y beliebig hoch und runter wackeln oder doch eher gerade aussehen und nur wenige und weite Kurven nehmen? Wenn Du sehr viele Knoten zulässt, dann kann die Spline beliebig hoch und runter wackeln, wenn Du wenige Knoten zulässt, dann nicht.
Je mehr Daten Du hast, umso mehr Freiheitsgrade kannst Du der Spline geben, je weniger Daten Du hast, umso größer ist die Gefahr durch Overfitting. Bist Du von der lineare Regression mit dem Konzept der Freiheitsgrade vertraut?


Grad der Kontinuität: Das habe ich in der Literatur gefunden. Das bedeutet so etwas wie: So intensiv sind die Veränderungen an den Knoten. Aber irgendwo anders in der Literatur klingt es nach Freiheitsgrad. An anderer Stelle wird erwähnt, dass der 3. Grad ein kubischer Spline ist. Aber dann muss es der Grad des Polynoms sein, bezieht sich aber auch auf Freiheitsgrade.


Mit dem Begriff bin ich nicht vertraut, aber wenn Du lineare Funktionen zusammensetzt, dann hast Du Knicke den Knoten, weil die Steigung sich schlagartig ändert. Je höher der Grad der verwendeten Polynome, umso besser kannst Du die Anschlüsse an den Knoten aneinander anpassen. Polynome 3. Grades sind üblich und mit denen schaffst Du es, dass die Steigung an den Knoten ist identisch.

Zusätzlich gibt es einen Basis-Spline, der von meiner Funktion bs verwendet wird. Doch was ist das Besondere am Basis-Spline?


Meinst Du ganz bestimmt Basis-Spline oder meinst Du die Basisfunktion der Spline? Du verwendest die Funktion `bs` welche sog. B-Splines codiert ( https://www.rdocumentation.org/packages ... /topics/bs ). Für B-Splines gilt: "Die B-Spline-Basisfunktionen Bi,1(t) der Ordnung 1 sind Rechteckfunktionen der Höhe 1 über dem Intervall [t, ti+1]. Sie sind stückweise konstant und außerhalb des Intervalls identisch Null." ( https://www.inf.fu-berlin.de/lehre/SS06 ... esung4.pdf )

LG,
Bernhard
----
`Oh, you can't help that,' said the Cat: `we're all mad here. I'm mad. You're mad.'
`How do you know I'm mad?' said Alice.
`You must be,' said the Cat, `or you wouldn't have come here.'
(Lewis Carol, Alice in Wonderland)
bele
Schlaflos in Seattle
Schlaflos in Seattle
 
Beiträge: 5776
Registriert: Do 2. Jun 2011, 23:16
Danke gegeben: 15
Danke bekommen: 1356 mal in 1343 Posts

folgende User möchten sich bei bele bedanken:
FloFlo

Re: Spline Begriffe: Grad des Polynoms, Freiheitsgrad, Konti

Beitragvon FloFlo » Do 28. Mär 2024, 20:38

Danke, das hilft mir schon viel weiter. Ich glaube, du rettest mich noch :-)

Noch als Rückfrage:
Grad der Kontinuität lasse ich dann am besten einfach weg. Im Buch "The Elements of Statistical Learning" S. 143 https://hastie.su.domains/Papers/ESLII.pdf gibt es First und Second Derivative, siehe auch Screenshot: https://postimg.cc/cvrKdCM4 Bezieht sich das auf Freiheitsgrad? Und ist der zweite Derivative dann der dritte Freiheitsgrad?
Bei dem Befehl bs() gibt es sowohl den Parameter knots als auch df. Wo unterscheidet sich das Konzept dahinter? Die scheinen sich gegenseitig zu beeinflussen.
FloFlo
Grünschnabel
Grünschnabel
 
Beiträge: 4
Registriert: Do 28. Mär 2024, 18:41
Danke gegeben: 3
Danke bekommen: 0 mal in 0 Post

Re: Spline Begriffe: Grad des Polynoms, Freiheitsgrad, Konti

Beitragvon bele » Do 28. Mär 2024, 21:10

FloFlo hat geschrieben:First und Second Derivative


Weißt Du noch, wie Du damals in der elften Klasse das Ableiten von Funktionen geübt hast? Das hier sind die erste und zweite Ableitung. Wie oft man ein Polinom ableiten kann hängt natürlich am Grad des Polinoms.

ist der zweite Derivative dann der dritte Freiheitsgrad?


Nein, das ist die zweite Ableitung, in der Kurvendiskussion als Krümmung bezeichnet. Wenn man will, dass an den Anschlussstellen die gleichen Krümmungen bestehen muss man Polynome mit ausreichend vielen Freiheitsgraden wählen.

Bei dem Befehl bs() gibt es sowohl den Parameter knots als auch df. Wo unterscheidet sich das Konzept dahinter?


Wenn Du viele Knoten haben willst, musst Du viele Freiheitsgrade opfern. Auf meine Rückfrage, wie vertraut Du mit Freiheitsgraden sonst bist hast Du nicht geantwortet, daher gehe ich davon aus, dass Du ausreichend damit vertraut bist. Du gibst der Funktion die Anzahl der Knoten, wenn Du eine Vorstellung davon hast, wie flexibel die Funktion sein soll, die Freiheitsgrade wenn Du eine Vorstellung davon hast, wieviele Daten Du hast und wieviel Information Du bereit bist für die Flexibilität der Kurve zu opfern.

Die scheinen sich gegenseitig zu beeinflussen.


Stimmt. Deshalb musst Du auch nur eines von beiden angeben. Wenn die Zahl der Knoten vorgegeben ist errechnet sich die Zahl der Freiheitsgrade nach der Formel in der oben von mir verlinkten Dokumentation der bs - Funktion (siehe unter Value).

LG,
Bernhard
----
`Oh, you can't help that,' said the Cat: `we're all mad here. I'm mad. You're mad.'
`How do you know I'm mad?' said Alice.
`You must be,' said the Cat, `or you wouldn't have come here.'
(Lewis Carol, Alice in Wonderland)
bele
Schlaflos in Seattle
Schlaflos in Seattle
 
Beiträge: 5776
Registriert: Do 2. Jun 2011, 23:16
Danke gegeben: 15
Danke bekommen: 1356 mal in 1343 Posts

folgende User möchten sich bei bele bedanken:
FloFlo

Re: Spline Begriffe: Grad des Polynoms, Freiheitsgrad, Konti

Beitragvon FloFlo » Do 28. Mär 2024, 21:49

Ja, an die Ableitungen kann ich mich erinnern :-) Das wirkt sich irgendwie auf den Grad der Kontinuität, glaube ich aus.
Sorry, ich habe das überlesen: Ich kenne mich mit Freiheitsgraden leider nicht aus. Ich weiß nur, dass mehr Freiheitsgrade die gesamte Spline-Funktion ausgeglichener macht und weniger intensive Kurven. Oder ist das falsch?

Degree ändert man denke ich üblicherweise nicht in bs oder?
Ich habe df und knots parallel zueinander eingesetzt. Aber wenn ich dich richtig verstehe, kann ich beide Parameter ja gar nicht gleichzeitig setzen? Also kann das gar nicht funktionieren, was ich gemacht habe? Standardmäßig ist in der Funktion bs wohl der Freiheitsgrad (df = 3) gesetzt.

Ein bisschen habe ich Basisspline jetzt besser verstanden. Aber mit den Formeln etc. kann ich leider nichts anfangen. Das ist bestimmt recht schwierig zu erklären. Vielleicht schaffe ich das Thema auch zu umschiffen.
FloFlo
Grünschnabel
Grünschnabel
 
Beiträge: 4
Registriert: Do 28. Mär 2024, 18:41
Danke gegeben: 3
Danke bekommen: 0 mal in 0 Post

Re: Spline Begriffe: Grad des Polynoms, Freiheitsgrad, Konti

Beitragvon bele » Do 28. Mär 2024, 22:33

FloFlo hat geschrieben:Ich weiß nur, dass mehr Freiheitsgrade die gesamte Spline-Funktion ausgeglichener macht und weniger intensive Kurven. Oder ist das falsch?


Anders herum: Viele Freiheitsgrade erlauben der Funktion, sich sehr frei den Daten anzupassen.

Degree ändert man denke ich üblicherweise nicht in bs oder?


Ich weiß nicht, was "man" üblicherweise macht, (oder ob "man" dafür überhaupt bs nutzt) aber wenn ich darüber lese, ist immer von kubischen Splines die Rede, als Splines die aus Polynomen dritten Grades zusammengesetzt sind.

Ich habe df und knots parallel zueinander eingesetzt.


Die interne Hilfe sagt "one can specify df rather than knots" ( https://stat.ethz.ch/R-manual/R-devel/l ... ml/bs.html )

Standardmäßig ist in der Funktion bs wohl der Freiheitsgrad (df = 3) gesetzt.


Nein, der Standardwert ist NULL und das ist dann davon abhängig, was Du bei knots gesetzt hast. degree ist als Standard auf den Wert 3 gesetzt. Du musst df und degree strikt trennen.

Aber mit den Formeln etc. kann ich leider nichts anfangen. Das ist bestimmt recht schwierig zu erklären.


Statistik ist ein Zweig der Mathematik und nutzt deren Notation. Das ist für uns Nicht-Mathematiker oft nicht sehr zugänglich. Oft genug aber aus einer Anwenderperspektive auch nicht unbedingt nötig.

Viel Erfolg,
Bernhard

PS: Ich hab Dir ein Code-Beispiel gemacht, in dem ein Kosinus durch eine bs-B-Spline nachgeahmt wird. Da kannst Du mit df und knots und dergleichen spielen und einen Eindruck gewinnen, was geht und was nicht geht:

Code: Alles auswählen
library(splines)
set.seed(4711)
x <- sort(runif(200, 0, 15))
y <- 4*cos(x) + rnorm(200)
daten <- data.frame(x, y)
plot(x, y, xlim = c(0, 20))

reg.mod1 <- lm(y ~ bs(x, df = 3), data = daten)
lines(daten$x, reg.mod1$fitted.values, col = "red", lwd = 2)

reg.mod2 <- lm(y ~ bs(x, df = 5), data = daten)
lines(daten$x, reg.mod2$fitted.values, col = "blue", lwd = 2)

reg.mod3 <- lm(y ~ bs(x, df = 10), data = daten)
lines(daten$x, reg.mod3$fitted.values, col = "violet", lwd = 2)

legend(x = 15, y = 2, legend = c("df = 3", "df = 5", "df = 10"), lty = c(1, 1, 1),
       col = c("red", "blue", "violet"), lwd = c(2, 2, 2))
----
`Oh, you can't help that,' said the Cat: `we're all mad here. I'm mad. You're mad.'
`How do you know I'm mad?' said Alice.
`You must be,' said the Cat, `or you wouldn't have come here.'
(Lewis Carol, Alice in Wonderland)
bele
Schlaflos in Seattle
Schlaflos in Seattle
 
Beiträge: 5776
Registriert: Do 2. Jun 2011, 23:16
Danke gegeben: 15
Danke bekommen: 1356 mal in 1343 Posts

folgende User möchten sich bei bele bedanken:
FloFlo

Re: Spline Begriffe: Grad des Polynoms, Freiheitsgrad, Konti

Beitragvon FloFlo » Di 2. Apr 2024, 14:54

Hallo zusammen, ich habe eine Antwort gefunden, auch dank deiner Hilfe:
Der Grad des Polynoms beträgt normalerweise 3 für ein kubisches Polynom. Es zeigt wie verrückt die Linien sind, z.B. 1 ist linear. Mehr als 3 ist nicht erforderlich. In R Parameter: degree
Freiheitsgrad: Dies sind Knoten + Polynomgrad. Wenn der Grad des Polynoms 3 ist, müssen sie mindestens den Freiheitsgrad 3 haben. Wir können Knoten oder Freiheitsgrade wählen, weil diese miteinander verbunden sind. Der Parameter in R ist: df.
Grad an Kontinuität habe ich nicht gefunden.
Aber Knoten sind die Anzahl oder Position der Knoten im Spline. Parameter in R sind knots.
FloFlo
Grünschnabel
Grünschnabel
 
Beiträge: 4
Registriert: Do 28. Mär 2024, 18:41
Danke gegeben: 3
Danke bekommen: 0 mal in 0 Post


Zurück zu Regressionanalyse

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste