[英]How to perform multiple regressions grouped by 2 factors and create a file containing N and R-squared?
我又遇到了一些问题,希望有人能帮助我。 我正在研究 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"))
更新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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.