2009-10-10 10 views
4

Je suis le suivi de mon poids corporel dans un tableur, mais je veux améliorer l'expérience en utilisant R. J'essayais de trouver des informations sur l'analyse des séries chronologiques dans R mais je n'ai pas réussi.Séries temporelles en R

Les données que j'ai ici dans le format suivant:

date -> weight -> body-fat-percentage -> water-percentage 

par exemple

10/08/09 -> 84.30 -> 18.20 -> 55.3 

Ce que je veux faire

plot poids et contre le temps moyen

mobile exponentielle Comment puis-je y parvenir?

Répondre

6

Lire les données dans R en utilisant x <- read.csv(filename). Assurez-vous que les dates entrent en tant que classe de caractères et poids comme numérique.
Ensuite, utilisez les éléments suivants:

require(zoo) 
require(forecast) # Needed for the ses function 
x$date <- as.Date(x$date,"%m/%d/%Y") # Guessing you are using the US date format 
x$weight <- zoo(x$weight,x$date) # Allows for irregular dates 
plot(x$weight, xlab="Date", ylab="Weight") # Produce time plot 
ewma <- as.vector(fitted(ses(ts(x$weight)))) # Compute ewma with parameter selected using MLE 
lines(zoo(ewma,x$date),col="red") # Add ewma line to plot 
+0

Il ya le problème auquel j'ai été confronté dans le passé. Tous les tutoriels que j'ai trouvés utilisent une fréquence. Les données que j'ai ici sont des dates. J'ai à peu près enregistré mon poids tous les jours. De temps en temps, je l'ai oublié. Le résultat est qu'il n'y a pas de fréquence claire mais une relation date -> poids. –

+0

J'ai modifié ma réponse pour permettre des dates irrégulières et aucune fréquence spécifiée. –

+0

J'ai essayé votre solution le graphique fonctionne mais quand il s'agit du lissage j'obtiens l'erreur, que l'objet "wt" ne peut pas être trouvé. –

2

On dirait que vous avez besoin de gérer une série de temps espacés de façon irrégulière, donc ts est pas une option. Utilisez l'une des autres bibliothèques de séries temporelles. zoo est le plus utilisé, mais d'autres options sont timeSeries, xts, fts et its. Jetez un oeil à la vue CRAN: http://cran.r-project.org/web/views/TimeSeries.html.

Un challange que je peux voir maintenant est votre format de date. Je suggère soit de reformater la date d'abord dans vos données, soit d'utiliser la fonction format() dans R, mais vous devrez les convertir en un objet Date ou POSIX dans R pour l'utiliser avec un paquet de séries chronologiques.

Vous pouvez utiliser la fonction read.zoo() pour lire dans votre fichier une série chronologique. Regardez aussi la vignette. Pour l'EWMA, je crois qu'il y a plusieurs options là aussi. Rmetrics et TTR ont tous les deux des versions.

Je vais poster un exemple quand j'arriverai à un ordinateur. Incidemment, il existe de nombreuses ressources disponibles sur ce sujet. Jetez un oeil à cet ebook: http://www.rmetrics.org/ebooks/TimeSeriesFAQ.pdf.

Questions connexes