R purrr::map/broom::tidy不打印GLM模型的概率值
在R中运行对数线性GLMs时,我遇到了purrr::map和broom::tidy的问题。出于某种原因,运行多个模型时不会打印模型p值,而是使用单个模型打印。最后,我希望多个模型打印每个模型的p值,就像在单个模型中一样。提供的示例使用内置的“泰坦尼克号”数据集(请参阅William King的)R purrr::map/broom::tidy不打印GLM模型的概率值,r,glm,purrr,broom,R,Glm,Purrr,Broom,在R中运行对数线性GLMs时,我遇到了purrr::map和broom::tidy的问题。出于某种原因,运行多个模型时不会打印模型p值,而是使用单个模型打印。最后,我希望多个模型打印每个模型的p值,就像在单个模型中一样。提供的示例使用内置的“泰坦尼克号”数据集(请参阅William King的) 数据(泰坦尼克号) #转换为数据帧 T.df% dplyr::突变( fit=purrr::map(数据,~anova(glm(Freq~Sex*Survived,family=poisson,data
数据(泰坦尼克号)
#转换为数据帧
T.df%
dplyr::突变(
fit=purrr::map(数据,~anova(glm(Freq~Sex*Survived,family=poisson,data=.x)),test=“Chisq”),
整洁的=purrr::映射(适合,扫帚::整洁)
) %>%
tidyr::unnest(已整理)
在我思考这个问题时,如何阻止broom::tidy打印关于未识别列的警告消息
提前谢谢 问题在
anova
的替换参数中,test=“Chisq”
被包装在anova
调用之外,即
anova(glm(Freq ~ Sex * Survived, family = poisson, data = .x)), test="Chisq")
^^^
使用正确的关闭参数执行
T.df %>%
nest(-Class) %>%
mutate(tidied = map(data, ~
glm(Freq ~ Sex * Survived, family = poisson, data = .x) %>%
anova(., test = "Chisq") %>%
broom::tidy(.))) %>%
unnest(tidied)
# A tibble: 16 x 7
# Class term df Deviance Resid..Df Resid..Dev p.value
# <fct> <chr> <int> <dbl> <int> <dbl> <dbl>
# 1 1st NULL NA NA 7 590. NA
# 2 1st Sex 1 3.78 6 586. 5.20e- 2
# 3 1st Survived 1 20.4 5 566. 6.28e- 6
# 4 1st Sex:Survived 1 162. 4 404. 4.78e- 37
# 5 2nd NULL NA NA 7 476. NA
# 6 2nd Sex 1 18.9 6 457. 1.37e- 5
# 7 2nd Survived 1 8.47 5 449. 3.62e- 3
# 8 2nd Sex:Survived 1 163. 4 286. 2.54e- 37
# 9 3rd NULL NA NA 7 876. NA
#10 3rd Sex 1 145. 6 732. 2.54e- 33
#11 3rd Survived 1 181. 5 550. 2.36e- 41
#12 3rd Sex:Survived 1 57.8 4 493. 2.92e- 14
#13 Crew NULL NA NA 7 2535. NA
#14 Crew Sex 1 1014. 6 1522. 2.02e-222
#15 Crew Survived 1 252. 5 1269. 7.85e- 57
#16 Crew Sex:Survived 1 42.4 4 1227. 7.63e- 11
T.df%>%
嵌套(-Class)%>%
突变(整理=映射(数据,~
glm(频率~性别*存活,家庭=泊松,数据=.x)%>%
方差分析(,test=“Chisq”)%>%
扫帚::整洁()%%>%
不干净(整洁)
#一个tibble:16x7
#类别术语df偏差剩余值..df剩余值..偏差p.值
#
#1第一个空NA 7 590。NA
#第1性别13.786586。5.20e-2
#第1次存活120.456。6.28e-6
#4第一性别:存活1162人。4 404. 4.78e-37
#5第二空NA 7 476。NA
#第二性别118.96457。1.37e-5
#第2名幸存者18.475449。3.62e-3
#8第2性别:存活1163。4 286. 2.54e-37
#9第3空NA 7 876。NA
#第3性别1145。6 732. 2.54e-33
#第3名幸存者181名。5 550. 2.36e-41
#12第3性别:存活157.8493。2.92e-14
#13号机组空NA 7 2535。NA
#14船员性别1014。6 1522. 2.02e-222
#15名船员幸存1252人。5 1269. 7.85e-57
#16船员性别:幸存142.41227。7.63e-11
您看过小插曲了吗?可能有点过时了,因为他们鼓励从do
转移,但应该仍然有效谢谢!一个简单的修复和更高效的代码。将模型输出管道化到anova调用非常有效。
T.df %>%
nest(-Class) %>%
mutate(tidied = map(data, ~
glm(Freq ~ Sex * Survived, family = poisson, data = .x) %>%
anova(., test = "Chisq") %>%
broom::tidy(.))) %>%
unnest(tidied)
# A tibble: 16 x 7
# Class term df Deviance Resid..Df Resid..Dev p.value
# <fct> <chr> <int> <dbl> <int> <dbl> <dbl>
# 1 1st NULL NA NA 7 590. NA
# 2 1st Sex 1 3.78 6 586. 5.20e- 2
# 3 1st Survived 1 20.4 5 566. 6.28e- 6
# 4 1st Sex:Survived 1 162. 4 404. 4.78e- 37
# 5 2nd NULL NA NA 7 476. NA
# 6 2nd Sex 1 18.9 6 457. 1.37e- 5
# 7 2nd Survived 1 8.47 5 449. 3.62e- 3
# 8 2nd Sex:Survived 1 163. 4 286. 2.54e- 37
# 9 3rd NULL NA NA 7 876. NA
#10 3rd Sex 1 145. 6 732. 2.54e- 33
#11 3rd Survived 1 181. 5 550. 2.36e- 41
#12 3rd Sex:Survived 1 57.8 4 493. 2.92e- 14
#13 Crew NULL NA NA 7 2535. NA
#14 Crew Sex 1 1014. 6 1522. 2.02e-222
#15 Crew Survived 1 252. 5 1269. 7.85e- 57
#16 Crew Sex:Survived 1 42.4 4 1227. 7.63e- 11