Problem mit Schleife

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
wintwin111

Problem mit Schleife

Beitrag von wintwin111 »

Hallo,
ich brauche eure Hilfe. Ich habe einen Vektor

Code: Alles auswählen

a<-c(1:5)
Nun möchte ich folgende Berechnungen mithilfe einer Schleife durchführen.

1. 0.5*a[1]+...+0.5*a[5] -> soll in Vektor b gespeichert werden als b[1]
2. 0.5*a[2]+...+0.5*a[5]+0.5*b[1] -> soll als b[2] gespeichert werden
.
.
.
5. 0.5*a[5]+...+0.5*b[4] -> soll als b[5] gespeichert werden
6. 0.5*b[1]+...+0.5*b[5] -> soll als b[6] gespeichert werden

Am Ende habe ich also einen Vektor b mit 6 Elementen. Da dies eine Vereinfachung meines echten Problems ist, wäre es gut, keine vordefinierten R-Funktionen zu benutzen (wie z.b sum). Ich bin mir ziemlich sicher, dass ich für dieses Problem eine (Doppel ?) Schleife brauche aber ich bekomme dies nicht umgesetzt.

Grüße

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

Re: Problem mit Schleife

Beitrag von bigben »

wintwin111 hat geschrieben: Mo Sep 18, 2017 6:19 pmDa dies eine Vereinfachung meines echten Problems ist, wäre es gut, keine vordefinierten R-Funktionen zu benutzen (wie z.b sum).
Hi!

Meinst Du das ernst? Nicht mal so was basales wie sum? Dann schreib uns doch bitte Dein echtes Problem auf, sonst basteln wir an einer Lösung, und nachher lässt sie sich nicht übertragen oder Du kannst sie nicht übertragen oder ist unnötig kompliziert. Keiner arbeitet gern umsonst, aber einen Versuch bekommst Du, aber von mir keine Hilfe, das Ergebnis anzupassen. Tut das hier das Gewünschte?

Code: Alles auswählen

a <- 1:5
halb_a <- .5*a
b <- numeric(6)
for(i in 1:5)
{
  b[i] <- Reduce(f = `+`, x = halb_a[i:5], init = 0)
}
for(i in 2:5){
  b[i] <- b[i]+.5*b[i-1]
}
b[6] <- Reduce(f = `+`, b, init = 0)
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
wintwin111

Re: Problem mit Schleife

Beitrag von wintwin111 »

Ok dann hier mein echtes Problem. Ich habe einen Datensatz von 2400 Daten in einer Zeitreihe. Nun möchte ich mithilfe verschiedener Zeitreihenmodelle diese Zeitreihe vorhersagen (also Datenpunkt 2401, 2402, etc.). Die Modelle wurden gefittet (mit Akaike Information Criterion, tut glaube ich nichts zur Sache) und dann habe ich zum Beispiel als bestes AR Modell ein AR (6) Modell bekommen. Die Parameter des Modells werden berechnet. Also sieht mein Modell folgendermaßen aus.

X(t+1)=intercept+a1*X(t)+a2*X(t-1)+...+a6*X(t-5)+e(t)

X(t+2)=intercept+a1*X(t+1)+a2*X(t)+...+a6*X(t-4)+e(t)

...

intercept und alle a's habe ich vorher ausgerechnet und sind somit als Konstanten für mein Problem anzusehen. Das Problem ist nun, dass die Daten bis t (also t, t-1, ... t-2399) in einem Vektor gespeichert sind. Die Schleife soll den Wert X(t+1) berechnen und ihn in einen neuen Vektor speichern. Für den Wert X(t+2) muss die Schleife nun aus dem schon bestehenden und dem neuen Vektor Werte nehmen und genau hier liegt mein Problem. Ich hoffe es ist einigermaßen verständlich. Wenn ihr Fragen habt stellt sie bitte

Grüße

Edit: e(t) kann vernachlässigt werden dass ist einfach eine Zufallszahl
Der Code gibt mir folgende Werte zurück:

Code: Alles auswählen

> b
[1]  7.50000 10.75000 11.37500 10.18750  7.59375 47.40625
aber eigentlich sollte rauskommen:

7.5 10.75 15.125 42.375 40.375
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Problem mit Schleife

Beitrag von EDi »

Wie Sie wurden die Modelle gefittet?
Es gibt z.B. ?predict.arima oder predict.ar...
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
wintwin111

Re: Problem mit Schleife

Beitrag von wintwin111 »

Die Modelle wurden mit dem package forecast und auto.arima gefittet.

Edit: Ja ich weiß das es bereits eine Vielzahl von forecasting Methoden in R gibt, ich würde es aber gerne mal per "Hand" versuchen, da ich es für eine wissenschaftliche Arbeit an der Uni brauche.
Antworten