broom::augment returns 矩阵无法取消嵌套

broom::augment returns matrix can't unnest

我正在尝试 运行 扫帚增强 lm(y ~poly(x, 3), data = dat)。

使用该公式 broom::augment returns 嵌套列中的矩阵。当我尝试取消嵌套时,失败并显示类似于“无法投射 poly...

的错误消息

我发现了一个类似的问题,但没有答案 Trying to unnest broom::augment data, but R "can't cast"

library(rmarkdown)
library(tidyverse)
library(fs)

structure(list(a = c("2019-11-25", "2019-11-25", 
"2019-11-25", "2019-11-25", "2019-11-25"), 
b = c("laktat-felttest", "laktat-felttest", 
"laktat-felttest", "laktat-felttest", 
"laktat-felttest"), 
c = c("kai", "kai", "kai", "kai", "kai"), 
maaling = c(1, 2, 3, 4, 5), 
load = c(800, 850, 900, 1000, 1100), 
time_mm = c(5, 5, 4, 4, 4), 
time_ss = c(9, 0, 55, 35, 45), 
hr = c(125, 140, 140, 160, 172), 
rpe = c(2, 4, 4, 8, 9), 
laktat = c(2.7, 2.1, 2, 4.8, 10.2), 
time = c(309, 300, 295, 275, 285), 
x = c(2.58899676375405, 2.83333333333333, 
3.05084745762712, 3.63636363636364, 3.85964912280702), 
la_x = c(1.042875, 0.741176470588235, 
0.655555555555556, 1.32, 2.64272727272727)), 
class = c("tbl_df", "tbl", "data.frame"), 
row.names = c(NA, -5L)) ->
dat

dat %>% 
    group_by(a,b,c) %>% 
    nest() %>% 
    mutate(model = data %>% map( ., ~lm( data = ., laktat ~ poly(x, 3), na.action = "na.exclude")),
           tidied = model %>% map( ., broom::tidy ),
           glance = model %>% map(., broom::glance), 
           augment = map( model, broom::augment), 
           augment = map( augment, janitor::clean_names, "snake" )) ->
    model_tbl

##model_tbl %>% 
##    unnest(augment) 

在我看来,嵌套列(augment 所在的位置)有一个矩阵。我不知道如何将其更改为 listcolumns。

来自丹麦的问候 丹·奥莱森

poly() 函数是问题所在。它会导致奇怪的列名。您可以将其替换为 x + I(x^2) + I(x^3) 并获得更好的列名。

dat %>% 
  group_by(a,b,c) %>% 
  nest() %>% 
  mutate(model = data %>% map( ., ~lm( data = ., laktat ~ x + I(x^2) + I(x^3), na.action = "na.exclude")),
         tidied = model %>% map( ., broom::tidy ),
         glance = model %>% map(., broom::glance), 
         augment = map( model, broom::augment),
         augment = map( augment, janitor::clean_names, "snake" )) ->
  model_tbl

更新:
我刚刚意识到一个问题。使用 x + I(x^2) + I(x^3)poly(x, 3) 并不完全相同。如果您使用后者,则系数不相关,但如果您使用第一个,则它们是相关的。暂时不知道怎么解决。