Переменная длина отличается регрессией l oop со значениями NA - PullRequest
1 голос
/ 06 апреля 2020

снова обращаюсь к вам за помощью. Я пытаюсь запустить al oop для создания различных линейных регрессий на данном кадре данных (более 400 столбцов). В нескольких строках есть некоторые значения NA, которые я пытаюсь опустить, используя na.action = na.omit, но при запуске l oop R выдает следующее сообщение:

Ошибка в модели. frame.default (формула = фонды [, i] ~ факторы $ Mkt.RF + факторы $ SMB +: переменные длины различаются (найдено для 'множителей $ Mkt.RF')

Может кто-нибудь мне помочь здесь? См. ниже строки кода и выдержку из моих данных. Если вам нужны какие-либо дополнительные данные, пожалуйста, дайте мне знать. Заранее спасибо.

funds <- as.data.frame(funds, row.names = NULL)
factors <- as.data.frame(factors, row.names =  NULL)

set.seed(1)
out <- data.frame(NULL)              
for (i in 1:length(funds)) {
     m <- summary(lm(funds[,i] ~ factors$Mkt.RF + factors$SMB + factors$HML + factors$MOM, na.action = na.exclude), data = funds)
     out[i, 1] <- names(y)[i]           
     out[i, 2] <- m$coefficients[1,1]   
     out[i, 3] <- m$coefficients[2,1]   
     out[i, 4] <- m$coefficients[3,1]   
     out[i, 5] <- m$coefficients[4,1]   
}

names(out) <- c("y.variable", "intercept", "coef.x")

Вывод:

    > rownames(funds) <- funds$Date
    > funds$Date <- NULL

    > 
    > rownames(factors) <- factors$Date
    > factors$Date <- NULL

    > set.seed(1)
    > out <- data.frame(NULL)              
    > for (i in 1:length(funds)) {
    +      m <- summary(lm(funds[,i] ~ factors$Mkt.RF + factors$SMB + factors$HML + factors$MOM, na.action = na.exclude), data = funds)
    +      out[i, 1] <- names(y)[i]           
    +      out[i, 2] <- m$coefficients[1,1]   
    +      out[i, 3] <- m$coefficients[2,1]   
    +      out[i, 4] <- m$coefficients[3,1]   
    +      out[i, 5] <- m$coefficients[4,1]   
    + }
    Error in model.frame.default(formula = funds[, i] ~ factors$Mkt.RF + factors$SMB +  : 
      variable lengths differ (found for 'factors$Mkt.RF')

DPUT:

#Factor variable
structure(list(Mkt.RF = c(-0.06, 4.18, 0.13, 0.46, 5.44), SMB = c(-0.56, 
-0.1, -1.6, 0.43, 1.41), HML = c(4.83, 3.17, -2.67, 0.6, 4.93
), RF = c(0.25, 0.26, 0.3, 0.25, 0.3), MOM = c(0.44, -2.01, 3.59, 
4.19, 3.01)), row.names = 192701:192705, class = "data.frame")

#Below my "Funds" variable
structure(list(LPA0HHC9 = c(7.8230315, -2.3377663, -1.5936528, 
1.6568067, 2.1277897, -2.457893, 1.5437286, -5.560534, 0.357859, 
0.212156, -2.4966745, -9.730683, 5.7866847, -6.2293317, 5.0703387, 
-1.5625391), LPA0HNP2 = c(4.6186144, 0.8695652, 0.530504, 1.9788918, 
1.9404916, -1.4593909, 3.86349, -1.6738996, 2.5851198, 3.0731407, 
0.0596303, -2.920143, 5.2179251, -1.6919487, -0.1780415, 1.1890606
), LPA0HNP3 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 0.9, 
-2.8741328, 4.3877551, -1.4662757, 0.0992063, 1.1892963), LPA0HNP4 = c(5.1759834, 
0.656168, 0, 2.2164276, 2.2959184, -0.4987531, 2.443609, -1.2844037, 
2.2924411, 3.4524531, 0.8782201, -2.9599536, 4.3062201, -1.4908257, 
-0.0582072, 1.1648224), LPA0J22F = c(4.753623, -0.5246329, 0.3443459, 
3.0796593, 2.1799129, 0.0715029, 4.054363, -2.0230006, 2.0954634, 
3.3837521, 0.9665872, -3.9676485, 5.5744768, -0.568624, 1.6424237, 
1.1643458)), row.names = c("28.02.2014", "31.03.2014", "30.04.2014", 
"31.05.2014", "30.06.2014", "31.07.2014", "31.08.2014", "30.09.2014", 
"31.10.2014", "30.11.2014", "31.12.2014", "31.01.2015", "28.02.2015", 
"31.03.2015", "30.04.2015", "31.05.2015"), class = "data.frame")
...