【问题标题】:How to perform multiple regressions grouped by 2 factors and create a file containing N and R-squared?如何执行按 2 个因素分组的多重回归并创建一个包含 N 和 R 平方的文件?
【发布时间】:2021-05-10 11:55:18
【问题描述】:

我又遇到了一些问题,希望有人可以帮助我。我正在研究 ELI 对公司 ROS 的影响,以及大流行是否对此产生影响。对于这项研究,我的论文导师要求我每年按行业 (NAICS) 进行回归分析,我不知道如何做到这一点。我在 46 个不同行业 (NAICS) 拥有公司,每家公司拥有 11 年的公司数据(2010-2020 年)。现在我想对每年的所有行业进行回归ROS ~ ELI + ELI*Pandemic,然后将结果 N(每个行业的公司数量)和 R 平方捕获在一个文件中。下图是我想要实现的示例:

我希望有人可以帮助我,因为我完全不知所措,而且我似乎无法在 SO 上找到类似的问题/答案。

这里以dput(head()) 为例。 NAICS 是行业。

df <- structure(list(NAICS = c(315, 315, 315, 315, 315, 315), 
        Year = c(2010, 2011, 2012, 2013, 2014, 2015), 
        Firm = c("A", "A", "A", "A", "A", "A"), 
        ROS = c(0.17, 0.19, 0.29, 0.3, 0.29, 0.25), 
        ELI = c(0.856264428748774, 0.723379402777553, 0.958341156943977, 0.680567730897854, 0.790480861209701, 0.827279134948296), 
        Pandemic = c(0, 0, 0, 0, 0, 0)), 
        row.names = c(NA, -6L), 
        class = c("tbl_df", "tbl", "data.frame"))

【问题讨论】:

  • 请检查我的最新更新。
  • N 工作正常,但 ELI:Pandemic 似乎仍未出现。
  • 我认为这是因为您的 Pandemic 值大多为零。
  • 它对你有用,所以这很奇怪。
  • 是的,但值都是NA。我不知道我只是将我的最新解决方案放在这里,但您先尝试更新所有软件包。

标签: r


【解决方案1】:

更新02

收到原始数据集后,我已经对我的解决方案进行了必要的修改,我不会有任何其他问题。

library(dplyr)
library(tidyr)
library(broom)
library(purrr)


df %>% 
  group_by(NAICS, Year) %>% 
  add_count(name = "N") %>%
  nest(data = !c(NAICS, Year, N)) %>% 
  mutate(models = map(data, ~ lm(ROS ~ ELI + ELI * Pandemic, data = .)),
         glance = map(models, ~ glance(.x)),
         tidied = map(models, ~ tidy(.x))) %>%
  unnest(glance) %>%
  select(NAICS:N, r.squared, tidied) %>%
  unnest(tidied)


# A tibble: 2,024 x 9
# Groups:   NAICS, Year [506]
   NAICS  Year     N r.squared term         estimate std.error statistic     p.value
   <dbl> <dbl> <int>     <dbl> <chr>           <dbl>     <dbl>     <dbl>       <dbl>
 1   315  2010    12     0.122 (Intercept)    0.0959    0.0123     7.83   0.0000143 
 2   315  2010    12     0.122 ELI            0.0189    0.0160     1.18   0.266     
 3   315  2010    12     0.122 Pandemic      NA        NA         NA     NA         
 4   315  2010    12     0.122 ELI:Pandemic  NA        NA         NA     NA         
 5   315  2011    12     0.129 (Intercept)    0.0999    0.0115     8.70   0.00000559
 6   315  2011    12     0.129 ELI            0.0161    0.0132     1.22   0.251     
 7   315  2011    12     0.129 Pandemic      NA        NA         NA     NA         
 8   315  2011    12     0.129 ELI:Pandemic  NA        NA         NA     NA         
 9   315  2012    13     0.594 (Intercept)   -0.486     0.606     -0.802  0.439     
10   315  2012    13     0.594 ELI            2.11      0.526      4.01   0.00205   
# ... with 2,014 more rows

【讨论】:

  • 这项工作适用于 R 平方,尽管计数仅给出 1。但这在 excel 中很容易解决。非常感谢您的快速回复!。
  • 有没有简单的方法来添加回归的系数?还是更难做到?
  • 不,这很容易。我正在编辑我的解决方案。
  • 是的,每个行业每年的唯一公司数量。抱歉,我对此不够清楚。感谢您的所有帮助。
  • 好像已经修复了。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-30
  • 2022-09-27
  • 2021-05-30
  • 2022-01-09
  • 1970-01-01
  • 2020-05-02
相关资源
最近更新 更多