für die Analyse von Datensätzen möchte ich ein R-Skript schreiben, mit dem ich verschiedene statistische Größen berechnen kann.
Dafür teile ich die Datensätze mit der Funktion rollapply in Gruppen ein und wende Funktionen wie mean (Mittelwert) oder sd (Standardabweichung) an - das ist soweit auch kein Problem. Allerdings möchte ich auch Größen wie Root Mean Square (rms), Median Absolute Deviation (mad) oder die Korrelation ermittlen.
Nehmen wir beispielsweise die Berechnung von mad: Dabei stehe ich vor der Herausforderung, dass ich einerseits die Daten mit rollapply gruppieren und gleichzeitig die einzelnen Werte der Gruppen mit den entsprechenden Gruppenmittelwerten der vorher berechneten Mittelwerte verrechnen möchte.
Ich habe die folgende Lösung gebastelt, die ist für eine große Datenmenge wie ich sie habe allerdings umständlich und ungeeignet:
Code: Alles auswählen
t <- c(1:10)
x <- c(5:14)
res <- sqrt(t^2 + x^2)
test <- data.frame(t, x, res)
# Berechnen der Mittelwerte von jeweils 5 Werten
mean <- rollapply(test$res, width = 5, FUN=mean, by = 5, partial =TRUE, align = 'left')
mean
# Berechnen von mad von den ersten 5 Werten aus res und dem Mittelwert der ersten Gruppe
mad1 <- mad(test$res[1:5], center = mean[1])
mad1
# Berechnen von mad von den nächsten 5 Werten aus res und dem Mittelwert der nächsten Gruppe
mad2 <- mad(test$res[5:10], center = mean[2])
mad2
# Und so weiter für alle Gruppen
Code: Alles auswählen
FUN=funktion(z)
Code: Alles auswählen
mad <- rollapply(test$res, width = 5, FUN=funktion(test$res) mad(test$res[1:5], center = mean[1]), by = 5, partial =TRUE, align = 'left')
Vielen Dank vorab und viele Grüße
Marge