如何为回归创建循环

How to create a loop for Regression

我刚开始将 R 用于统计目的,非常感谢任何帮助。

我的任务是对一个指数和该指数中的 20 只股票进行计算。数据包含 22 列(DATE、INDEX、S1 .... S20)和大约 4000 行(每天一行)。

首先,我导入了 .csv 文件,将其命名为 "dataset" 并以这种方式计算了 log returns,并对所有股票 "S1-S20" 加上 INDEX 进行了计算。

n <- nrow(dataset)
S1 <- dataset$S1
S1_logret <- log(S1[2:n])-log(S1[1:(n-1)])

其次,我将数据存储在 data.frame:

logret_data <- data.frame(INDEX_logret, S1_logret, S2_logret, S3_logret, S4_logret, S5_logret, S6_logret, S7_logret, S8_logret, S9_logret, S10_logret, S11_logret, S12_logret, S13_logret, S14_logret, S15_logret, S16_logret, S17_logret, S18_logret, S19_logret, S20_logret)

然后我 运行 使用日志 returns 进行回归(S1 到 S20):

S1_Reg1 <- lm(S1_logret~INDEX_logret)

我不知道如何以更有效的方式编写代码并使用某些函数进行重复。

在进一步的步骤中,我必须 运行 在选定的时间间隔内对每一天进行横截面回归。手动完成是不可能的,R 应该提供一些快速的解决方案。我对如何做这部分很不安全。但我也想对之前的计算使用一种循环。

但我缺乏必要的 R 编码知识。非常感谢任何类型的帮助,或者对文献或教程的建议!谢谢!

您可以在矩阵中提供所有单独的因变量以 运行 您的回归。像这样:

#example data
Y1 <- rnorm(100)
Y2 <- rnorm(100)
X  <- rnorm(100)
df <- data.frame(Y1, Y2, X)

#run all models at once
lm(as.matrix(df[c('Y1', 'Y2')]) ~ X)

输出:

Call:
lm(formula = as.matrix(df[c("Y1", "Y2")]) ~ df$X)

Coefficients:
             Y1        Y2      
(Intercept)  -0.15490  -0.08384
df$X         -0.15026  -0.02471