r - 如何为回归创建循环

标签 r loops regression lm repeat

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

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

首先,我导入了 .csv 文件,将其称为“数据集”,并以这种方式计算对数 yield ,并对所有股票“S1-S20”加上指数进行计算。

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)

然后我使用日志返回运行回归(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

关于r - 如何为回归创建循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46266211/

相关文章:

r - 如何对 "stepfun"类的两个阶跃函数(R-stepfun)求和?

php - PHP foreach 循环在重叠日期时间上出现问题

python isinstance in 循环嵌套

r - 如何使用 R 获取 Azure ML 中的置信区间?

r - 如何绘制堆积点直方图?

r - 在 R 环境中工作的绘图,但不是通过 RScript

c - C 中的循环优化

r - 如何从分位数回归 rq() 中提取系数的上限/下限

R:使用具有重复数的列表的稳健线性回归

r - 如何使用 RSelenium 检查网页中是否存在元素?