使用 dplyr 按组从分位数回归中提取 p 系数
Extract coefficient with p from a quantile regression by group with dplyr
我想从使用分组变量进行的一系列分位数回归中提取 p 值和系数。我主要使用 dplyr
来操作数据帧,所以我想要 dplyr
解决方案。
require(quantreg)
data("engel")
require(dplyr)
engel$grp <- trunc(runif(nrow(engel), min=0, max=3))
group_by(engel,grp) %>% do(summary(rq(foodexp~income,data=.,tau=c(.05, .25, .5, .75, .95)),se="boot"))
这会导致错误
Error: Results are not data frames at positions: 1, 2, 3
我尝试了另一个版本,先做模型,然后做总结
rqm <- group_by(engel,grp) %>% do(mdl=rq(foodexp~income,data=.,tau=c(.05, .25, .5, .75, .95)))
summarise(rqm, coef(summary(mdl,se="boot")))
这也会导致错误
Error: not a vector
一团糟,但它有效:
library(dplyr)
group_by(engel,grp) %>%
do(as.data.frame(do.call(rbind,
lapply(summary(rq(foodexp~income,data=.,tau=c(.05, .25, .5, .75, .95)), se="boot"), coef)
), row.names = NULL))
然后您可能想要用 tau 值标记行,以及它是 coef 值还是 p 值。我会把它留给你。
我想从使用分组变量进行的一系列分位数回归中提取 p 值和系数。我主要使用 dplyr
来操作数据帧,所以我想要 dplyr
解决方案。
require(quantreg)
data("engel")
require(dplyr)
engel$grp <- trunc(runif(nrow(engel), min=0, max=3))
group_by(engel,grp) %>% do(summary(rq(foodexp~income,data=.,tau=c(.05, .25, .5, .75, .95)),se="boot"))
这会导致错误
Error: Results are not data frames at positions: 1, 2, 3
我尝试了另一个版本,先做模型,然后做总结
rqm <- group_by(engel,grp) %>% do(mdl=rq(foodexp~income,data=.,tau=c(.05, .25, .5, .75, .95)))
summarise(rqm, coef(summary(mdl,se="boot")))
这也会导致错误
Error: not a vector
一团糟,但它有效:
library(dplyr)
group_by(engel,grp) %>%
do(as.data.frame(do.call(rbind,
lapply(summary(rq(foodexp~income,data=.,tau=c(.05, .25, .5, .75, .95)), se="boot"), coef)
), row.names = NULL))
然后您可能想要用 tau 值标记行,以及它是 coef 值还是 p 值。我会把它留给你。