2017-09-29 4 views
0

J'ai un jeu de données avec lag, psit, et var comme variables.Sortie R-carré en utilisant la régression linéaire sur des sous-ensembles de données

set.seed(560) 
df<-data.frame(lag= rep(1:40, each=228), psit= rep(rnorm(228, 20, 
10)),var=rnorm(9120, 50, 10)) 

Pour chaque sous-ensemble de lag Je souhaite exécuter une régression linéaire où PSIT est prédite par var lm(psit~var, df). Je voudrais sortir la valeur R-carré, la statistique F et la valeur p pour le modèle dans une trame de données.

output<-data.frame(lag= rep(1:40, each=1), rsqrd= rep(rnorm(40, .5, 
0.01)),fstat=rnorm(40,5, 0.05), pvalue=rnorm(40,0.01, 0.1)) 

J'ai essayé:

models <- 
    df %>% 
    group_by(lag) %>% 
    do(model = lm(psit ~ var,data = .)) 


rsqrd<- 
    model %>% 
    do(data.frame(
    lag = .$lag, 
    summary(.)$r.squared, summary(.)$fstatistic,summary(.)$pvalue)) 

Répondre

0

Vous pouvez utiliser la fonction de bibliothèque de balai glance pour obtenir les statistiques sommaires que vous voulez à partir d'une série de modèles linéaires:

library(broom) 
rsqrd <- 
    models %>% 
    ungroup() %>% group_by(lag) %>% 
    do(glance(.$model[[1]])) 

glance Takes a modèle linéaire unique et renvoie une trame de données à une ligne de statistiques récapitulatives.