R 扫帚:显示模型中包含多少观察值
R broom: show how many observations are included in the model
我有来自https://cran.r-project.org/web/packages/broom/vignettes/broom_and_dplyr.html
regressions <- mtcars %>%
nest(data = -am) %>%
mutate(
fit = map(data, ~ lm(wt ~ mpg + qsec + gear, data = .x)),
tidied = map(fit, tidy),
glanced = map(fit, glance),
augmented = map(fit, augment)
)
regressions %>%
unnest(tidied)
现在因为 mtcars
没有缺失值,所以针对 am
的不同值构建的所有模型都具有相同数量的观察值。但是,如果 mtcars
存在各种变量的缺失值,则每个模型都会有不同数量的观察值(观察值因缺失而被删除)。
是否可以在最后的标题中包含每个模型中使用的观测值的数量? tidy
、glance
和 augment
都没有提供我认为在进行模型拟合时非常重要的这个功能。
正如 Kieran 所建议的那样,glance
提供了 nobs
,但是我如何在 tidy
输出
中包含 nobs
它已经在那里了,不是吗? glance
包括作为 nobs
列的观察次数。
编辑:要仅从 glanced
列表列中获取 nobs
列,请使用 hoist()
并命名新列。
library(tidyverse)
library(broom)
mtcars_na <- mtcars
mtcars_na[1:2,1] <- NA
head(mtcars_na)
#> mpg cyl disp hp drat wt qsec vs am gear carb
#> Mazda RX4 NA 6 160 110 3.90 2.620 16.46 0 1 4 4
#> Mazda RX4 Wag NA 6 160 110 3.90 2.875 17.02 0 1 4 4
#> Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
#> Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
#> Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
#> Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
regressions <- mtcars %>%
nest(data = -am) %>%
mutate(
fit = map(data, ~ lm(wt ~ mpg + qsec + gear, data = .x)),
tidied = map(fit, tidy),
glanced = map(fit, glance),
augmented = map(fit, augment)
)
regressions %>%
unnest(tidied) %>%
hoist(glanced, nobs = "nobs")
#> # A tibble: 8 × 11
#> am data fit term estimate std.error statistic p.value nobs glanced
#> <dbl> <list> <lis> <chr> <dbl> <dbl> <dbl> <dbl> <int> <list>
#> 1 1 <tibble> <lm> (Int… 4.28 3.46 1.24 2.47e-1 13 <tibble>
#> 2 1 <tibble> <lm> mpg -0.101 0.0294 -3.43 7.50e-3 13 <tibble>
#> 3 1 <tibble> <lm> qsec 0.0398 0.151 0.264 7.98e-1 13 <tibble>
#> 4 1 <tibble> <lm> gear -0.0229 0.349 -0.0656 9.49e-1 13 <tibble>
#> 5 0 <tibble> <lm> (Int… 4.92 1.40 3.52 3.09e-3 19 <tibble>
#> 6 0 <tibble> <lm> mpg -0.192 0.0443 -4.33 5.91e-4 19 <tibble>
#> 7 0 <tibble> <lm> qsec 0.0919 0.0983 0.935 3.65e-1 19 <tibble>
#> 8 0 <tibble> <lm> gear 0.147 0.368 0.398 6.96e-1 19 <tibble>
#> # … with 1 more variable: augmented <list>
我有来自https://cran.r-project.org/web/packages/broom/vignettes/broom_and_dplyr.html
regressions <- mtcars %>%
nest(data = -am) %>%
mutate(
fit = map(data, ~ lm(wt ~ mpg + qsec + gear, data = .x)),
tidied = map(fit, tidy),
glanced = map(fit, glance),
augmented = map(fit, augment)
)
regressions %>%
unnest(tidied)
现在因为 mtcars
没有缺失值,所以针对 am
的不同值构建的所有模型都具有相同数量的观察值。但是,如果 mtcars
存在各种变量的缺失值,则每个模型都会有不同数量的观察值(观察值因缺失而被删除)。
是否可以在最后的标题中包含每个模型中使用的观测值的数量? tidy
、glance
和 augment
都没有提供我认为在进行模型拟合时非常重要的这个功能。
正如 Kieran 所建议的那样,glance
提供了 nobs
,但是我如何在 tidy
输出
nobs
它已经在那里了,不是吗? glance
包括作为 nobs
列的观察次数。
编辑:要仅从 glanced
列表列中获取 nobs
列,请使用 hoist()
并命名新列。
library(tidyverse)
library(broom)
mtcars_na <- mtcars
mtcars_na[1:2,1] <- NA
head(mtcars_na)
#> mpg cyl disp hp drat wt qsec vs am gear carb
#> Mazda RX4 NA 6 160 110 3.90 2.620 16.46 0 1 4 4
#> Mazda RX4 Wag NA 6 160 110 3.90 2.875 17.02 0 1 4 4
#> Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
#> Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
#> Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
#> Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
regressions <- mtcars %>%
nest(data = -am) %>%
mutate(
fit = map(data, ~ lm(wt ~ mpg + qsec + gear, data = .x)),
tidied = map(fit, tidy),
glanced = map(fit, glance),
augmented = map(fit, augment)
)
regressions %>%
unnest(tidied) %>%
hoist(glanced, nobs = "nobs")
#> # A tibble: 8 × 11
#> am data fit term estimate std.error statistic p.value nobs glanced
#> <dbl> <list> <lis> <chr> <dbl> <dbl> <dbl> <dbl> <int> <list>
#> 1 1 <tibble> <lm> (Int… 4.28 3.46 1.24 2.47e-1 13 <tibble>
#> 2 1 <tibble> <lm> mpg -0.101 0.0294 -3.43 7.50e-3 13 <tibble>
#> 3 1 <tibble> <lm> qsec 0.0398 0.151 0.264 7.98e-1 13 <tibble>
#> 4 1 <tibble> <lm> gear -0.0229 0.349 -0.0656 9.49e-1 13 <tibble>
#> 5 0 <tibble> <lm> (Int… 4.92 1.40 3.52 3.09e-3 19 <tibble>
#> 6 0 <tibble> <lm> mpg -0.192 0.0443 -4.33 5.91e-4 19 <tibble>
#> 7 0 <tibble> <lm> qsec 0.0919 0.0983 0.935 3.65e-1 19 <tibble>
#> 8 0 <tibble> <lm> gear 0.147 0.368 0.398 6.96e-1 19 <tibble>
#> # … with 1 more variable: augmented <list>