【问题标题】:How to create a loop for Regression如何为回归创建循环
【发布时间】:2018-02-26 05:14:44
【问题描述】:

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

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

首先我导入了 .csv 文件,将其称为“数据集”并以这种方式计算日志返回,并对所有股票“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)

然后我使用对数返回运行回归(S1 到 S20):

S1_Reg1 <- lm(S1_logret~INDEX_logret)

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

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

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

【问题讨论】:

    标签: r loops regression lm repeat


    【解决方案1】:

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

    #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
    

    【讨论】:

    • 很高兴我能帮上忙 :)。
    • 这完美!我只是想知道如何在一段时间内以相同的有效方式运行横截面回归(每天一次回归)。以每只股票的对数回报(S1-S20)作为一天的因变量,之前计算的系数作为解释变量。我不需要与 Y ~ X + 0 一起使用的截距来消除截距。运行这种回归在我看来要复杂得多。如果回归超过 50 天,我应该得到 50 个估计系数(每天一个)和 50*20=1000 个错误。
    • 这是一个新问题,这些不应该在 cmets 中讨论。随意添加一个新问题(您可以提出的问题没有限制),并确保您添加一个示例来阐明您想要实现的目标(这样回答的人就不需要像我一样创建自己的示例确实)。
    • 感谢您的评论。我添加了一个新问题:stackoverflow.com/questions/46268146/… 也许你也可以看看这个,因为你在我之前的问题上的帖子非常有用;)
    猜你喜欢
    • 2019-01-02
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 2018-07-29
    • 2017-09-27
    • 1970-01-01
    • 2014-01-06
    • 2020-07-16
    相关资源
    最近更新 更多