按行业分组运行SFA模型并将结果存入变量的技术问询
分组运行SFA模型并保存各行业结果的实现方法
你当前的代码问题在于do()块里只是给mod赋值,但没有把模型结果返回给dplyr的分组流程,导致无法保存每个行业的模型。调整方式很简单,让do()返回包含模型的结构即可:
修正后的代码
library(dplyr) library(frontier) # 分组运行SFA并保存每个行业的模型对象 sfa_out <- data %>% group_by(industry) %>% do(model = sfa(log(y1) ~ log(x1) + log(x2) + log(x3), ineffDecrease = TRUE, truncNorm = FALSE, timeEffect = TRUE, data = .))
如何使用保存的模型
sfa_out是一个tibble,每行对应一个行业,包含两列:industry(行业名称)和model(该行业的SFA模型对象)- 提取单个行业的模型:比如要查看"电子信息业"的模型结果,可执行:
sfa_out %>% filter(industry == "电子信息业") %>% pull(model) %>% .[[1]] - 批量查看所有行业的模型摘要:可以用
purrr包遍历模型列(如果没装先运行install.packages("purrr")):library(purrr) map(sfa_out$model, summary)
这样每个行业的SFA模型结果就都存在model列里了,你可以随时调用、分析单个或批量模型。
内容的提问来源于stack exchange,提问作者fsure
相关产品推荐
相关产品推荐

