снова обращаюсь к вам за помощью. Я пытаюсь запустить 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")