for-Schleife bei linearer Regression

Modelle zur Korrelations- und Regressionsanalyse

Moderator: EDi

Antworten
luckynele
Beiträge: 2
Registriert: Fr Mai 17, 2019 11:39 am

for-Schleife bei linearer Regression

Beitrag von luckynele » Fr Mai 17, 2019 1:59 pm

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:

Code: Alles auswählen

REG1 <- lm(rep(1, times = 120) ~ as.matrix(famafrench[451:570,])+0)
meine y Variable stellt einen Einser Vektor dar und meine X Variable eine Matrix (dataframe = famafrench, insgesamt 1113 Zeilen), bei der ich die Zeilen von 451 biss 570 verwendet habe.
Jetzt möchte ich 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.
Hier mal mein erster Versuch:

Code: Alles auswählen

for(i in 1:nrow(famafrench))
{Ergebnis <- lm(Y[i:nrow(famafrench)]~ X[i:nrow(famafrench)]+0)}
Ich bin für jeden Tipp dankbar!!

jogo
Beiträge: 1236
Registriert: Fr Okt 07, 2016 8:25 am

Re: for-Schleife bei linearer Regression

Beitrag von jogo » Fr Mai 17, 2019 2:08 pm

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:

Code: Alles auswählen

lm( rep(1, 120) ~ . + 0, data=iris[6:125, -5])$coef
:?:
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

bigben
Beiträge: 861
Registriert: Mi Okt 12, 2016 9:09 am

Re: for-Schleife bei linearer Regression

Beitrag von bigben » Fr Mai 17, 2019 2:12 pm

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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte

schubbiaschwilli
Beiträge: 21
Registriert: Di Jun 27, 2017 12:09 pm

Re: for-Schleife bei linearer Regression

Beitrag von schubbiaschwilli » Fr Mai 17, 2019 4:10 pm

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

luckynele
Beiträge: 2
Registriert: Fr Mai 17, 2019 11:39 am

Re: for-Schleife bei linearer Regression

Beitrag von luckynele » Sa Mai 18, 2019 10:14 am

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=famafrench[451:570,])$coef

die zweite:

REG2 <- lm(rep(1, times = 121) ~ . + 0, data=famafrench[451:571,])$coef

usw. bis zur letzten Zeile des dataframes famafrench.
Das Ergebnis soll dann so ausschauen wie in dem Iris Beispiel aber eben als for- Schleife geschrieben...

jogo
Beiträge: 1236
Registriert: Fr Okt 07, 2016 8:25 am

Re: for-Schleife bei linearer Regression

Beitrag von jogo » So Mai 19, 2019 7:23 am

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

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast