Seite 1 von 1
for-Schleife bei linearer Regression
Verfasst: Fr Mai 17, 2019 1:59 pm
von luckynele
Hallo zusammen,
ich bin- was R betrifft leider ziemlich unerfahren daher habe ich gehofft hier etwas Hilfe zu finden.
Ich habe bereits eine lineare Regression folgendermaßen durchgeführt:
Ich möchte iterationsweise immer eine Zeile mehr von der Matrix hinzufügen bis ich das Ende - Zeile 1113 erreicht habe (bzw. immer einen 1-er mehr in meinen Vektor). Bei jeder Regression sollen die Koeffizienten gespeichert werden.
Ich habe leider keine Ahnung von Schleifen und habe gehofft mir kann hier jemand weiterhelfen.
Ich bin für jeden Tipp dankbar!!
Re: for-Schleife bei linearer Regression
Verfasst: Fr Mai 17, 2019 2:08 pm
von jogo
Hallo Nele,
willkommen im Forum!
Ich habe Deine ursprüngliche Regression etwas aufgehübscht:
Code: Alles auswählen
REG1 <- lm(rep(1, times = 120) ~ . + 0, data=famafrench[451:570,])
Schau mal, ob das so funktioniert.
Den Rest gucke ich mir auch gleich an ...
... ich denke da an
lapply() ...
Und Du brauchst nur die Koeffizienten der Regression, etwa wie bei:
Wenn ja, dann sieht es beim Dataframe
iris bei mir so aus:
Code: Alles auswählen
sapply(126:nrow(iris), function(i) lm( rep(1, i-5) ~ . + 0, data=iris[6:i, -5])$coef)
inzwischen hat Bernhard eine Antwort geschrieben - jetzt sieht mein Kommentar dazu etwas drollig aus:
Auch ich habe ein ungutes Gefühl, wenn man eine Konstante als abhängig von einer/mehreren Variablen betrachtet.
Bitte gönne uns eine Erklärung.
Gruß, Jörg
Re: for-Schleife bei linearer Regression
Verfasst: Fr Mai 17, 2019 2:12 pm
von bigben
Hallo,
ich muss zugeben, dass ich die Aufgabenstellung noch nicht erfasst habe. Soll denn jetzt
rep(1,...) as abhängige Variable stehen oder
Y? Was ist
Y? Im Text willst Du in jedem Durchlauf eine Zeile mehr von
X einbringen, in Deinem Code-Vorschlag bringst Du mit steigendem
i jedes Mal eine Zeile weniger ein?
Vorschlag 1: Um die Koeffizienten nicht zu verlieren, ließ meine Hinweise hier:
viewtopic.php?f=20&t=30
Vorschlag 2: Damit wir mitmachen können, erstelle bitte ein reproduzierbares Minimalbeispiel:
viewtopic.php?f=20&t=11 bzw.
https://stackoverflow.com/help/reprex
Vorschlag 3: Mein Bauchgefühl zeigt ein Hohes Risiko für ein XY-Problem an:
http://xyproblem.info/ Überleg nochmal, ob Du uns nicht erklären willst, wofür das gut sein soll.
LG,
Bernhard
Re: for-Schleife bei linearer Regression
Verfasst: Fr Mai 17, 2019 4:10 pm
von schubbiaschwilli
Gude!
Frage zum Verständnis: Willst du einfach nur ein FF3F (
https://de.wikipedia.org/wiki/Fama-Fren ... orenmodell) nachrechnen, und die Regressoren über verschiedene Zeiträume bzw. Intervalle berechnen?
Dank&Gruß
schubbiaschwilli
Re: for-Schleife bei linearer Regression
Verfasst: Sa Mai 18, 2019 10:14 am
von luckynele
Vielen Dank schon mal für die Antworten.
Dass der Einser Vektor als abhängige Variable eine Konstante ist, ist so beabsichtigt.
Und so wie Jörg das verstanden hat habe ich es eigentlich gemeint,
also meine erste Regression lautet dann (danke für die Verschönerung):
REG1 <- lm(rep(1, times = 120) ~ . + 0, data=data$coef
die zweite:
REG2 <- lm(rep(1, times = 121) ~ . + 0, data=data)$coef
usw. bis zur letzten Zeile des dataframes.
Das Ergebnis soll dann so ausschauen wie in dem Iris Beispiel aber eben als for- Schleife geschrieben...
Re: for-Schleife bei linearer Regression
Verfasst: So Mai 19, 2019 7:23 am
von jogo
Hallo Nele,
bitte beachte beim Schreiben von Nachrichten die Formatierung von Codestücken:
viewtopic.php?f=20&t=29
Das Ergebnis soll dann so ausschauen wie in dem Iris Beispiel aber eben als for- Schleife geschrieben...
Warum darf es denn kein
sapply() sein
(siehe meine Lösung)
... Zu dieser Frage möchte ich eine echt stichhaltige Begründung in der Antwort lesen.
Code: Alles auswählen
sapply(126:nrow(iris), function(i) lm( rep(1, i-5) ~ . + 0, data=iris[6:i, -5])$coef)
Bei Dir sollte es so aussehen:
Code: Alles auswählen
sapply(570:nrow(famafrench), function(i) lm(rep(1, times = i-450) ~ . + 0, data=famafrench[451:i,])$coef)
Gruß, Jörg
Re: for-Schleife bei linearer Regression
Verfasst: Fr Mai 24, 2019 5:40 pm
von luckynele
Hallo Jörg,
leider kann ich dir keine gute Antwort auf die Frage, warum es kein
sapply() sein soll geben.
Es funktioniert prima mit der Funktion.
Jedoch muss ich mit dem Ergebnis weiter rechnen und dabei wieder (for) Schleifen verwenden.
Ich hatte gehofft die
for- Schleife besser zu verstehen durch das Beispiel.
Aber vielen Dank für deine Hilfe, hat mir trotzdem sehr weitergeholfen!
Re: for-Schleife bei linearer Regression
Verfasst: Fr Mai 24, 2019 7:06 pm
von EDi
Jedoch muss ich mit dem Ergebnis weiter rechnen und dabei wieder (for) Schleifen verwenden.
Solche Probleme hätte ich via functional programming mit purrr gelöst. Zusammen mit dplyr und list-cols ist das extrem mächtig und expressiv.
Beispiel kann ich grade keine liefern, findet man aber im Internetz.
Re: for-Schleife bei linearer Regression
Verfasst: Fr Mai 24, 2019 9:44 pm
von jogo
Eigentlich ist es mir schon klar, dass die Didaktik in Programmiersprachen immer mindestens eine Generation hinterher hinkt.
Ich selber versuch beim Einstieg in die Programmierung in R, die for-Schleife kaum zu erwähnen. ... aber auch das ist schwierig.
Wie seht Ihr das? Habt Ihr Tipps/Kniffe/Tricks bezüglich Didaktik in R?
Gruß, Jörg
p.s.: wahrscheinlich müssen wir hierfür ein neues Thema aufmachen.
Ich wollte es nur gerade mal hier anhängen, weil es halbwegs passt.