У меня есть следующий DF с именем return_data:
date Tech Mining Banks Consumer One.Month FFMkt FFSMB3F FFSMB5F FFHML FFRMW
1991-01-01 0.12 0.13 -0.4 0.5 0.01 0.12 0.5 0.9 0.2 0.2
1991-02-01 0.62 0.33 0.4 0.7 0.31 0.42 0.6 0.2 0.7 0.6
1991-03-01 0.12 0.13 -0.4 0.5 0.01 0.12 0.5 0.5 0.8
Я бы хотел запустить несколько регрессий в следующих столбцах, один за другим.
Техника, майнинг, банки и потребитель. Я надеялся, что мне не придется копировать код несколько раз, чтобы сделать это.
Я назвал это
Portfolio = c (Tech, Mining, Banks, Consumer)
Я пытаюсь запустить следующую функцию
RegCoef <- function(returns_data, port_name, factor_choice){
if(factor_choice == "3F"){
reg_formula = as.formula(paste(port_name, "- One.Month ~
FFMkt +
FFSMB3F +
FFHML"))
}else if(factor_choice == "5F"){
reg_formula = as.formula(paste(port_name, "- One.Month ~ FFMkt +
FFSMB5F+
FFHML +
FFRMW +
"))
}
reg = lm(reg_formula, data = returns_data)
summary_output = c(portfolio = port_name,
intercept = summary(reg)$coef[1,1],
intercept_tstat = summary(reg)$coef[1,2],
summary(reg)$coef[-1, c("Estimate")],
Adj.R2 = summary(reg)$adj.r.squared)
return(summary_output)
}
Я хотел бы применить функцию к списку портфелей
Portfolio = c (Tech, Mining, Banks, Consumer)
reg_summary_5F = cbind(sapply(Portfolio, function(port){RegCoef(returns_merged, port, "5F")}))
Я получаю следующее сообщение об ошибке
Error in model.frame.default(formula = reg_formula, data = returns_data, :
invalid type (list) for variable 'Tech - One.Month.US.Treasury.Bills' In addition: Warning message:
In Ops.factor(left, right) : ‘-’ not meaningful for factors
У меня не так много удачи. В данных есть еще много строк.
Любая помощь приветствуется.