Может ли rollapply вернуть список матриц?

Я хотел бы сгенерировать ковариационные матрицы (и средние векторы), используя скользящее окно. Но во всех моих попыток rollapplyскладывает ковариационные матрицы из covи исчерпает предварительно выделенное пространство (например, если мои исходные данные содержат 40 наблюдений, то rollapplyне может возвращает более 40 строк).

Есть ли способ заставить rollapplyвернуть список матриц? Или вернуть data.frame, который больше, чем исходный data.frame, который я могу вручную разделить на список? Моя конечная цель - взять панель, разделить панель на список отдельных data.frames, вычислить скользящие ковариации и средние значения для каждого фрейма данных, а затем используйте эти списки ковариаций и средних значений ниже по течению для сравнения с группой отдельных лиц

Вот некоторый код Моя проблема в том, что my.fu nне будет возвращать данные всех вычислений ковариационной матрицы. Является ли мой лучший вариант для моего собственного rollapply? Или мой собственный cov, который возвращает вектор, который я конвертирую обратно в матрицу? Спасибо!

library("zoo")
data.df <- data.frame(sic = rep(1:10, each = 40),
                      year = rep(1:40, len = 10*40),
                      one = rnorm(10*40),
                      two = 2*rnorm(10*40),
                      three = 3*rnorm(10*40))
data.list <- split(data.df, data.df$sic)
data.list <- lapply(data.list, zoo)
my.fun <- function(x) {
    x <- x[, c("one", "two", "three")]
    rollapply(x,
              width = 10, 
              FUN = cov,
              by.column = F, 
              align = "right")
}
cov.list <- lapply(data.list, FUN = my.fun)
5
задан Richard Herron 30 March 2012 в 16:58
поделиться