Линейный регрессионный анализ - переход по строкам

Мне нужно предложение о том, как преобразовать результаты моего регрессионного анализа в объект.

Я не хочу выполнять рядный регрессионный анализ с окном в 20 дней. Объект Slope должен сохранять результаты (наклоны) анализа регрессий за каждый день над окном.

    #Loading Library 
    require(quantmod)
    #Initiation of Example
    mc_result  <- matrix(sample(c(1:200)), ncol = 200, nrow =1)
    mc_result1 <- matrix(sample(c(1:200)), ncol =200, nrow =1)
    mc_result <- rbind(mc_result, mc_result1)
    a <- c(1:200)          


    Slope <- matrix(ncol=2, nrow=181)

Осторожно, этот цикл не работает. Цикл должен применять Rollapply по строкам и сохранять результаты для каждого дня в объекте Slope.

Однако вот так должен выглядеть результат, но с изменяющимися значениями Slope. На данный момент значение наклона стабильно, и я не знаю почему.

    for (i in 1:2) { 

    Slope[,i] <- rollapply(data =mc_result[i,], width=20, 
                          FUN = function(z)
                            summary(lm(mc_result[i,]  ~ a, data =  as.data.frame(z)))$coefficients[2], by.column = FALSE) 
    }

person user6771241    schedule 21.09.2016    source источник


Ответы (1)


Я думаю, что вам нужно следующее (в вашем коде ни один из mc_result [i,] или a не переключает индексы в данных, поэтому коэффициенты линейной регрессии не меняются, поскольку вы тренируетесь на одном наборе данных, только z меняется, вам нужно изменить код примерно на следующий):

#Loading Library 
require(quantmod)
#Initiation of Example
mc_result  <- matrix(sample(c(1:200)), ncol = 200, nrow =1)
mc_result1 <- matrix(sample(c(1:200)), ncol =200, nrow =1)
mc_result <- rbind(mc_result, mc_result1)
a <- c(1:200)          
Slope <- matrix(ncol=2, nrow=181)

for (i in 1:2) { 

  Slope[,i] <- rollapply(data = 1:200, width=20, 
                         FUN = function(z) {
                           summary(lm(mc_result[i,z]  ~ a[z]))$coefficients[2]
                         }, by.column = FALSE) 
}

head(Slope)
          [,1]      [,2]
[1,] 1.3909774 2.0278195
[2,] 1.0315789 2.8421053
[3,] 1.5082707 2.8571429
[4,] 0.0481203 1.6917293
[5,] 0.2969925 0.2060150
[6,] 1.3526316 0.6842105
person Sandipan Dey    schedule 21.09.2016