【问题标题】:Unable to program a loop for regression analysis in R无法在 R 中编写用于回归分析的循环
【发布时间】:2021-06-17 07:51:16
【问题描述】:

我的 R 代码有问题。我想运行大约 100 次回归并循环执行此过程。我曾尝试使用 YouTube 等的帮助自己对循环进行编程,但我一无所获。因此,我想问你是否可以帮助我。 具体来说,是关于以下几点: 我有一个 Nasdaq100 中 100 家公司的数据集,我想按季度对每股销售额和股价表现进行回归。另一个问题是数据集包含这 100 家公司,并且必须为每个额外的公司创建一个带有各自股票代码的子集,以便 R 可以在每次回归时正确访问它。

以下是代码的摘录:

Nasdaq_100 = read_xlsx("Nasdaq_100_Sales_Data.xlsx")

#Correlation between quarterly close price and Sales of AMD
AMD <- subset (Nasdaq_100, Nasdaq_100$TickerSymbol=="AMD")
AMD_regression = lm(AMD$Sales ~ AMD$Stockprice_quarterly, data = Nasdaq_100)
summary(AMD_regression)

你能帮我编写这个循环进行回归分析吗?

提前感谢您的帮助!

【问题讨论】:

    标签: r loops linear-regression repeat


    【解决方案1】:

    要将其转换为 for 循环,首先获取工作目录中 .xlsx 文件的列表:

    require(data.table)
    myfiles <- list.files(pattern="*.xlsx")
    

    然后遍历每个文件,并在对现有代码稍作修改的情况下保存:

    for (file in myfiles) {
    Nasdaq_100 <- data.table::fread(file)
    AMD <- subset (Nasdaq_100, Nasdaq_100$TickerSymbol=="AMD")
    AMD_regression = lm(AMD$Sales ~ AMD$Stockprice_quarterly, data = Nasdaq_100)
    summary(AMD_regression)
    data.table::fwrite(AMD_regression, file=paste0("output_", file), quote = F, sep = "\t", row.names = F)
    }
    

    复制粘贴到 r 中,让我知道它是否有效。

    【讨论】:

      【解决方案2】:
      file <- choose.files()
      
      lmset <- data.frame(x='x',y='y')
      
      for(i in seq_len(100))
      
      {
      
        data <- read_excel(file,sheet=i)
      
        lmset <- rbind(lmset,lm(AMD$Sales~AMD$Stockprice_quarterly,data=data)$coefficients)
      
      }
      

      【讨论】:

      • 您应该解释您作为答案发布的代码。 Code only answers 多次像这个一样被标记为审查。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-07
      • 2015-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多