2010-05-01 21 views
4

J'ai un data.frame avec 3 séries chronologiques dedans, montré ci-dessous. Quand je les trace avec une série temporelle plus fluide, je veux être en mesure d'obtenir les paramètres du modèle linéaire que je trace, mais je ne vois pas comment faire cela?R: ggplot2, comment obtenir les paramètres d'un modèle linéaire tracé plus lisse?

> data 
    day od series_id 
    1 1 0.10  A1 
    2 3 1.00  A1 
    3 5 0.50  A1 
    4 7 0.70  A1 
    5 1 1.70  B1 
    6 3 1.60  B1 
    7 5 1.75  B1 
    8 7 1.70  B1 
    9 1 2.10  C1 
    10 3 2.30  C1 
    11 5 2.50  C1 
    12 7 2.70  C1 

    data = data.frame (day = c(1,3,5,7,1,3,5,7,1,3,5,7), 
    od = c(0.1,1.0,0.5,0.7 ,1.7,1.6,1.75,1.7 ,2.1,2.3,2.5,2.7), 
    series_id = c("A1", "A1", "A1","A1", "B1", "B1","B1", "B1", "C1","C1", "C1", "C1")) 

    r <- ggplot(data = data, aes(x = day, y = od)) 
    r + stat_smooth(aes(group = series_id, color = series_id),method="lm") 
+1

Bonne question! Habituellement, je réajuste le modèle moi-même, mais je me demandais s'il y avait un moyen d'éviter la duplication de l'effort. – Sharpie

+1

Eh bien, une fois que vous l'avez refit, vous pouvez utiliser la sortie du modèle pour dessiner la superposition ... – hadley

Répondre

4

Je ne sais pas si les objets de la couche doivent stocker tous les résultats de calcul à l'avenir, mais actuellement la mise en place est invoquée sur le dessin et le modèle ne sont pas stockées dans les objets de la couche. En guise de solution simple, vous pouvez obtenir le même résultat en

dlply(data,.(series_id),function(x)lm(od~day,data=x))