Hallo Damian,
darrgans hat geschrieben: Mo Jul 23, 2018 4:36 pm
Ich muss zugeben, dass ich die BOD-Funktion nicht kenne. In der Beschreibung steht "Biochemical Oxygen Demand" und dass das Dataframen aus 6 Zeilen und 2 Spalten besteht. Die Zeilen sind Time und Demand.
ja, es ist ein Dataframe, den auch Du zur Verfügung hast. Bei dem, was Du bisher an Daten geliefert hast, handelt es sich eher um einen print() der Daten: daraus geht z.B. nicht hervor, welche Datentypen die einzelnen Daten haben. Um Dir die Überwindung wenigstens eines Problemes zu zeigen, benötigte ich Daten, mit denen ich auch wirklich arbeiten kann.
Ich habe aber doch mindestens zwei Demand Spalten für den DAX und für das Unternehmen, oder sehe ich das falsch? Wahrscheinlich habe ich das nicht so gut dargestellt, aber Datensatz (2) hat natürlich 31 Spalten für alle Unternehmen des DAX (30 Stück an der Zahl) und für die Performance des DAX selber.
Wenn Du das so sagst, wird es wohl so sein.
Ich habe Deine Daten nicht.
Ich hatte unglücklicherweise ein verkürztes Beispiel gewählt. Hat das Auswirkungen auf den Code?
Bezüglich des einen Problems - nämlich auf den rollenden Daten eine Regression auszuführen - kaum.
Erst habe ich mit rollapply() aus dem Paket
zoo experimentiert, aber vermutlich gibt es dabei ein anderes Problem.
Kann das irgendwie angepasst werden, i.S.v ich gebe die Spalten an, die zur Erstellung des Datensatzes verwendet werden? Wobei die Spalte für den DAX (als unabgängige Variable der Regression) halt immer Spalte 2 wäre, weil Spalte 1 der Time Spalte entspricht und die Spalte für das Unternehmen (als abhängige Variable) von Spalte 3 bis 32 variiert.
Um das Problem mit den mehreren Spalten habe ich mich bis jetzt noch nicht gekümmert. Wenn ich das richtig verstanden habe möchtest Du in der Regressionsformel einige Variablen austauschen.
Kannst Du das bitte exemplarisch mit drei oder vier Variablen zeigen?
Die Lösung könnte etwa so aussehen:
Code: Alles auswählen
lapply(2:4, function(i) lm(Sepal.Length ~ ., data=iris[, c(1,i)]))
Und bevor wieder die üblichen Fragen kommen:
1. Auch der Dataframe
iris gehört standardmäßig zu R
2. Der Dataframe
iris hat fachlich nichts mit Deinen Daten zu tun.
3. Dieser Code soll nur eine Möglichkeit aufzeigen, wie Du das Problem der verschiedenen Variablen in der Regression bei der Programmierung angehen kannst; der Code muss noch entsprechend an Deine Situation angepasst werden. Es gibt auch noch viel radikalere Methoden, z.B. kann man sich sie Formel aus den Zeichenketten der Variablenbezeichner zusammelnbasteln (mit
paste0() oder
sprintf()) und dann in eine Formel umwandeln mit
as.formula()
Zusätzlich verstehe ich nicht wieso width auf 3 festgelegt wird, hängt das mit BOD zusammen?
ja, bei Dir sollten dann
width den Wert 180 haben, wenn ich das richtig verstanden habe. Und ja,
width <- 3 hängt mit BOD zusammen, da der Dataframe BOD keine 180 Zeilen hat.
Ich habe Deine Daten nicht.
Oder ist das ein Beispiel, welches nicht auf den Datensatz angepasst ist, sodass ich das ganze auf 180 (oder 200 minus der letzten 20 Tage) anpassen müsste?
jepp
Ich habe auch eine Frage bezüglich des Speicherns der verschiedenen Regressionsmodelle. Ich brauche die Modelle ...
jedes Ergebnis einer Funktion kannst Du speichern. Die Funktion
lapply() liefert üblicherweise eine Liste.
Code: Alles auswählen
L <- lapply(0:(nrow(BOD)-width), FUN=function(i) lm(demand ~ Time, data=BOD[i+I,]))
liefert z.B. eine Liste
L; jedes Element der Liste ist so wie im Abschnitt
Value der Dokumentation der Funktion
lm() beschrieben.
Über so eine Liste kann man wieder mit
lapply() oder
sapply() drüberrollen und mit einer geeigneten Funktion die Elemente bearbeiten.
...
Ich habe eigentlich eine gute Vorstellung was zu machen ist, leider scheitert das Ganze an der technischen Umsetzung, weil ich echt wenig Erfahrung mit R habe.
Trotzdem wirst Du einige Teile selber programmieren müssen.
Ich wollte Dir für den Anfang zeigen, dass es eigentlich für alles eine Lösung gibt - besonders auf der Metaebene: also wenn es darum geht, die gleiche Prozedur leicht abgewandelt mehrfach zu wiederholen.
Wichtig ist vor allem, dass Du die kleinen einzelnen Teile selbst programmierst, damit Du uns genau erklären kannst, was daran abgewandelt wiederholt werden soll.
Vielen Dank an dieser Stelle nochmal für deine Hilfe, Zeit und Geduld mit mir.

ist schon in Ordnung.
Es ist nett, dass Du Dich bedankst.
Gruß, Jörg