2015-08-26 4 views
0

Я хотел бы извлечь p-значения и коэффициенты из серии регрессий квантилей, сделанных с помощью переменной группировки. В основном я использую dplyr для управления кадрами данных, поэтому вам понравится dplyr.Коэффициент извлечения с p из регрессии квантиля по группе с 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

+0

'do' требует data.frame как выход. Вы можете попробовать 'group_by (engel, grp)%>% do (as.data.frame (lapply (summary (rq (foodexp ~ income, data =., Tau = c (.05, .25, .5, .75 , .95)), se = "boot"), coef))) ' – jeremycg

+0

Это работает! но insted из того, что все квантили (taus) в одной строке, как я могу поместить результаты для каждого tau в отдельной строке? – Leosar

ответ

1

Это беспорядок, но он работает:

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. Я оставлю это вам.