Un esempio cambiare leggermente l'aiuto R per do():dplyr, do(), estraendo parametri dal modello senza perdere raggruppamento variabile
by_cyl <- group_by(mtcars, cyl)
models <- by_cyl %>% do(mod = lm(mpg ~ disp, data = .))
coefficients<-models %>% do(data.frame(coef = coef(.$mod)[[1]]))
Nel dataframe coefficienti, c'è il primo coefficiente il modello lineare per ciascun gruppo cyl. La mia domanda è come posso produrre un dataframe che contiene non solo una colonna con i coefficienti, ma anche una colonna con la variabile di raggruppamento.
Edit =====: Ho estendere l'esempio per cercare di rendere più chiaro il mio problema
Supponiamo che io voglio per estrarre i coefficienti del modello e un po 'di previsione. Posso fare questo:
by_cyl <- group_by(mtcars, cyl)
getpars <- function(df){
fit <- lm(mpg ~ disp, data = df)
data.frame(intercept=coef(fit)[1],slope=coef(fit)[2])
}
getprediction <- function(df){
fit <- lm(mpg ~ disp, data = df)
x <- df$disp
y <- predict(fit, data.frame(disp= x), type = "response")
data.frame(x,y)
}
pars <- by_cyl %>% do(getpars(.))
prediction <- by_cyl %>% do(getprediction(.))
Il problema è che il codice è ridondante perché sto montando il modello due volte. La mia idea era quella di costruire una funzione che restituisce una lista con tutte le informazioni:
getAll <- function(df){
results<-list()
fit <- lm(mpg ~ disp, data = df)
x <- df$disp
y <- predict(fit, data.frame(disp= x), type = "response")
results$pars <- data.frame(intercept=coef(fit)[1],slope=coef(fit)[2])
results$prediction <- data.frame(x,y)
results
}
Il problema è che non so come usare fare() con la funzione getAll per ottenere, ad esempio solo un dataframe con i parametri (come la pars dataframe).
Non sono sicuro se questo aiuta. Puoi usare 'sumarise' invece del secondo' do'. riepilogare (modelli, coef = coef (summary (mod)) [[1]], group = cyl) – akrun
È un bug, e lo aggiusterò non appena capirò come. – hadley
@hadley È stato risolto? Potresti per favore indicare il problema del github? –