da der Code so funktioniert für einen Monat, muss man ihn jetzt nur noch verallgemeinern, indem man ihn in eine Funktion packt.
Ich habe mal an der data.table-Version weitergebastelt:
Code: Alles auswählen
library("data.table")
A <- fread("http://forum.r-statistik.de/download/file.php?id=306")
BetasDT <- function(Aktie) {
n <- 60
Fenster <- 1:n
Betai <- function(i) lm(Aktienrendite ~ Marktrendite, data=Aktie[i+Fenster,])$coefficients[2]
c(rep(NA, n-1), sapply(0:(nrow(Aktie)-n), Betai))
}
A[, Beta:=BetasDT(.SD), AktienNummer]
A[AktienNummer==1] ## Kontrolle
A <- na.omit(A)
myDelta <- function(S) {
Q <- S[, ntile(Beta, 2)]
S[Q==1, mean(Aktienrendite)] - S[Q==2, mean(Aktienrendite)] ## a100 - b100
}
A[, myDelta(.SD), Monats_id]
Code: Alles auswählen
A[, .(t100=myDelta(.SD), .N), Monats_id]
... oder man kupfert den Quelltext von ntile()
... oder man bastelt sich etwas mit frank()
Gruß, Jörg