在R上嵌套并运行多个模型

在R上嵌套并运行多个模型,r,R,我是这个社区的新手,R,谢谢你的支持。 我通过选择dplyr遇到了新的nest_,它看起来相当不错。我已经成功地拆分了现有的Dataframe,但没有使用它们运行多个模型。我希望遍历所有的数据帧,并获得统计模型(主要是GLM模型)的原始和摘要数据 库(tidyverse) 嵌套%nest_by(循环,循环) #一个tibble:9x3 #行方向:cyl,carb 气缸carb数据 1 4 1[5 x 9] 2 4 2[6 x 9] 361[2x9] 4 6 4[4 x 9] 566[1x9] 6

我是这个社区的新手,R,谢谢你的支持。 我通过选择dplyr遇到了新的nest_,它看起来相当不错。我已经成功地拆分了现有的Dataframe,但没有使用它们运行多个模型。我希望遍历所有的数据帧,并获得统计模型(主要是GLM模型)的原始和摘要数据

库(tidyverse)
嵌套%nest_by(循环,循环)
#一个tibble:9x3
#行方向:cyl,carb
气缸carb数据
1 4 1[5 x 9]
2 4 2[6 x 9]
361[2x9]
4 6 4[4 x 9]
566[1x9]
6 8 2[4 x 9]
7 8 3[3 x 9]
8 8 4[6 x 9]
988[1 x 9]
#现在我想在lm模型中分别运行每一行。这条线应该可以,但不行
适合%
变异(模型=地图(数据,~lm(mpg~hp,数据=))
现在,我正试图为我的统计学老师制作一个所有模型的可打印版本。
嵌套的%nest(数据=-c(循环,carb))
回归%
变异(
拟合=映射(数据,~lm(mpg~hp,数据=.x))
)
正在打印%rowwise()%%>%
突变(打印=粘贴(carb,cyl,“此模型摘要为”),摘要(拟合),sep=“*”)
然而,这并不完全有效。
有什么想法吗?

编辑:在您的情况下,请尝试以下方法:

nested%nest(数据=-c(循环,循环))
回归%
变异(
拟合=映射(数据,~lm(mpg~hp,数据=.x)),
整洁=地图(适合、整洁),
扫视=地图(适合,扫视),
增强=映射(拟合,增强)
)
回归%>%
不耐烦(瞥了一眼)#获取拟合的统计数据
回归%>%
不尽可能(整洁)#获得所有拟合的系数
您可以将
dplyr
broom
结合使用,如下所示。有一个与
mtcars
完全相同的例子:

数据(mtcars)
mtcars%
嵌套(-am)%>%
变异(
拟合=地图(数据,~lm(wt~mpg+qsec+gear,数据=.x)),#S3列表列
整洁=地图(适合、整洁)
) %>% 
不干净(整洁)
###tibble:8 x 8
##am数据拟合项估计标准误差统计p值
##                                       

##我不确定你的确切问题。你有机会看看新的tidymodels网站吗?这段视频展示了如何在多个数据帧上安装一个模型,以及如何在一个数据帧上安装多个模型:谢谢,我已经使用了一些资源并修改了最后一行,仍然不走运。请显示您更改的内容和错误。此外,请详细解释您希望实现/预期产出的具体内容。这有助于调试。谢谢。我已经编辑了我原来的帖子谢谢。我正试图一步一步地完成这个场景,想知道为什么这一行行不通`适合%变异(model=map(data,~lm(mpg~hp,data=))`你会得到什么错误?似乎
nest\u by
不是来自
dplyr
,因此我建议尝试使用
nest
,如我发布的示例所示。有关具体案例,请参见顶部编辑谢谢!我简直不敢相信我花了几个小时在nest vs nest_By上,我运行了Valeri Voev提供的确切示例(
tidyverse_1.3.0
),得到了:错误:
mutate()。x无法将
tbl\u df/tbl/data.frame
对象转换为函数ℹ 输入
tidied
map(适合,整洁)
。运行
rlang::last_error()
查看错误发生的位置。此外:警告消息:
的所有元素都必须命名。您想要
data=c(mpg、cyl、disp、hp、drat、wt、qsec、vs、齿轮、carb)
library(tidyverse)

nested <- mtcars %>% nest_by (cyl,carb)

# A tibble: 9 x 3
# Rowwise:  cyl, carb
    cyl  carb               data
  <dbl> <dbl> <list<tbl_df[,9]>>
1     4     1            [5 x 9]
2     4     2            [6 x 9]
3     6     1            [2 x 9]
4     6     4            [4 x 9]
5     6     6            [1 x 9]
6     8     2            [4 x 9]
7     8     3            [3 x 9]
8     8     4            [6 x 9]
9     8     8            [1 x 9]

#Now i would like to run each line seperately in a lm model. This line should do it, but it doesn't

fit<- nested %>% 
  mutate(model = map(data, ~lm(mpg~hp, data=.)))


Now, I am trying to make a printable version of all models for my statistics teacher. 

nested <- mtcars %>% nest (data = -c(cyl,carb))

regressions <-nested %>% 
  mutate(
    fit = map(data, ~ lm(mpg ~ hp, data = .x))
  )

printing<- regressions %>% rowwise() %>% 
  mutate (printed =  paste(carb, cyl, "This model summary is"), summary(fit),  sep  = '*') 

However this doesn't work altogether.

Any thoughts?