繁体   English   中英

使用 dplyr 按行创建多个线性模型

[英]Using dplyr rowwise to create multiple linear models

考虑这篇文章: https://www.tidyverse.org/blog/2020/06/dplyr-1-0-0/

我试图使用多个公式为数据集创建多个模型。 这个例子说:

library(dplyr, warn.conflicts = FALSE)

models <- tibble::tribble(
  ~model_name,    ~ formula,
  "length-width", Sepal.Length ~ Petal.Width + Petal.Length,
  "interaction",  Sepal.Length ~ Petal.Width * Petal.Length
)

iris %>% 
  nest_by(Species) %>% 
  left_join(models, by = character()) %>% 
  rowwise(Species, model_name) %>% 
  mutate(model = list(lm(formula, data = data))) %>% 
  summarise(broom::glance(model))

你可以看到rowwise function 用于得到答案,但是当我不使用这个 function 时,我仍然得到正确的答案

iris %>%
  nest_by(Species) %>% 
  left_join(models, by = character()) %>% 
  mutate(model = list(lm(formula, data = data))) %>% 
  summarise(broom::tidy(model))

我只丢失了“model_name”列,但考虑到rowwise文档说,这个 function 是要计算的,我不明白为什么仍然以这种方式计算,为什么会发生这种情况?

提前致谢。

考虑https://cran.r-project.org/web/packages/dplyr/vignettes/rowwise.html

您可以选择在对 rowwise() 的调用中提供“标识符”变量。 这些变量在您调用 summarise() 时会被保留,因此它们的行为与传递给 group_by() 的分组变量有些相似:

我不明白标识符是如何工作的,所以到目前为止我得到这个“标识符”(物种,模型名称)不会影响如何计算一个值,只会影响你的小标题的呈现方式。

因此,如果您有由 nest_by 创建的nest_by ,则不需要rowwise() function 逐行计算。 因此,在我的示例中, rowwise只会给您额外的信息列,但线性 model 仍然相同。 这只是为了一种“优雅的方式”,它不会改变它的计算方式。

感谢 tmfmnk

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM