【问题标题】:Running linear models for groups within dataframe and storing outputs in dataframe in R为数据框中的组运行线性模型并将输出存储在 R 中的数据框中
【发布时间】:2021-03-09 11:33:12
【问题描述】:

我正在尝试为一个非常大的数据集运行多个线性模型,并将输出存储在数据框中。我已经设法将估计值和 p 值放入数据框中(见下文),但我还想存储每个模型的 AIC。

#example dataframe

dt = data.frame(x = rnorm(40, 5, 5),
                y = rnorm(40, 3, 4),
                group = rep(c("a","b"), 20))

library(dplyr)
library(broom)

# code that runs lm for each group in row z and stores output 
dt_lm <- dt %>%
  group_by(group) %>%  
  do(tidy(lm(y~x, data=.)))

【问题讨论】:

    标签: r dataframe linear-regression lm


    【解决方案1】:

    使用glance 代替tidy

    dt_lm <- dt %>%
      group_by(group) %>%
      do(glance(lm(y~x, data=.))) %>%
      select(AIC)
    

    给出:

    Adding missing grouping variables: `group`
    # A tibble: 2 x 2
    # Groups:   group [2]
      group   AIC
      <chr> <dbl>
    1 a      119.
    2 b      114.
    

    如果您不仅想存储 AIC,还想存储其他指标,请跳过 select 部分。

    【讨论】:

      【解决方案2】:

      在较新版本的dplyr,即&gt;= 1.0,我们也可以使用nest_by

      library(dplyr)
      library(tidyr)
      library(broom)
      dt %>% 
           nest_by(group) %>%
           transmute(out = list(glance(lm(y ~ x, data = data))))  %>% 
           unnest(c(out)) %>% 
           select(AIC)
      # A tibble: 2 x 2
      # Groups:   group [2]
      #  group   AIC
      #  <chr> <dbl>
      #1 a      115.
      #2 b      100.
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多