使用 dplyr 比较模型
Using dplyr to compare models
我正在研究 do() 函数的 dplyr 文档中的示例,一切都很好,直到我遇到这个片段来总结模型比较:# compare %>% summarise(p.value = aov$`Pr(>F)`)
错误是 "Error: expecting a single value"。所以我找到了一种直接访问 aov 元素列表的方法。这个问题是关于子设置运算符的,并询问是否有更好的方法来做到这一点。这是我的全部尝试和解决方案。
models <- group_by(mtcars,cyl) %>% do(mod_lin = lm(mpg ~ disp, data = .), mod_quad = lm(mpg ~ poly(disp,2), data = .))
compare <- models %>% do(aov = anova(.$mod_lin, .$mod_quad))
compare %>% summarise(p.value = aov$'Pr(>F)')
Error: expecting a single value
查看比较的结构
select comparison 1
compare$aov[[1]]
select comparison 1 and all of element 6 (the pvalues)
compare$aov[[1]][6]
just the pvalues
compare$aov[[1]][2,6]
compare %>% summarise(pvalue = aov[2,6]) # this gets the pvalues by group
所以我想我想知道如何使用 类('rowwise_df'、'tbl_df' 和 'data.frame')的对象来总结[[]] 操作员。还有如果可能有更好的方法来做到这一点。
你可以试试
compare %>% do(.$aov['Pr(>F)']) %>% na.omit()
我正在研究 do() 函数的 dplyr 文档中的示例,一切都很好,直到我遇到这个片段来总结模型比较:# compare %>% summarise(p.value = aov$`Pr(>F)`)
错误是 "Error: expecting a single value"。所以我找到了一种直接访问 aov 元素列表的方法。这个问题是关于子设置运算符的,并询问是否有更好的方法来做到这一点。这是我的全部尝试和解决方案。
models <- group_by(mtcars,cyl) %>% do(mod_lin = lm(mpg ~ disp, data = .), mod_quad = lm(mpg ~ poly(disp,2), data = .))
compare <- models %>% do(aov = anova(.$mod_lin, .$mod_quad))
compare %>% summarise(p.value = aov$'Pr(>F)')
Error: expecting a single value
查看比较的结构
select comparison 1
compare$aov[[1]]
select comparison 1 and all of element 6 (the pvalues)
compare$aov[[1]][6]
just the pvalues
compare$aov[[1]][2,6]
compare %>% summarise(pvalue = aov[2,6]) # this gets the pvalues by group
所以我想我想知道如何使用 类('rowwise_df'、'tbl_df' 和 'data.frame')的对象来总结[[]] 操作员。还有如果可能有更好的方法来做到这一点。
你可以试试
compare %>% do(.$aov['Pr(>F)']) %>% na.omit()