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)
并不完全相同。如果您使用后者,则系数不相关,但如果您使用第一个,则它们是相关的。暂时不知道怎么解决。
我正在尝试 运行 扫帚增强 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)
并不完全相同。如果您使用后者,则系数不相关,但如果您使用第一个,则它们是相关的。暂时不知道怎么解决。