2009-10-10 69 views
4

我在电子表格中跟踪我的体重,但我想通过使用R来改善体验。我试图在R中找到一些关于时间序列分析的信息,但是我没有成功。R系列中的时间序列

我这里的数据是在以下格式:

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

例如

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

我想做

plot重量和指数移动平均线与时间

我怎样才能做到这一点?

回答

6

使用x <- read.csv(filename)将数据读入R中。确保日期的字符类和重量与数字一样。
然后使用以下命令:

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

存在我一直面临的问题。我发现的所有教程都使用频率。我在这里的数据是日期。我几乎每天记录我的体重。有一段时间我忘了它。结果是,没有明确的频率,但是日期 - >重量关系。 – 2009-10-10 22:27:22

+0

我修改了我的答案,以允许不规则的日期和没有指定的频率。 – 2009-10-11 05:43:34

+0

我试过你的解决方案的图表工作,但是当涉及到平滑我得到一个错误,对象“wt”无法找到。 – 2009-10-12 22:04:56

2

看起来你需要处理的不规则间隔时间序列,所以TS是不是一种选择。使用其他时间序列库之一。动物园是使用最广泛的,但其他一些选择是timeSeries,xts,fts和它的。看看CRAN视图:http://cran.r-project.org/web/views/TimeSeries.html

我现在可以看到的一个挑战是你的日期格式。我建议在数据中首先重新格式化日期,或者在R中使用format()函数,但是您需要将它们转换为R中的Date或POSIX对象,以便将其与时间序列包一起使用。

您可以使用read.zoo()函数在文件中读入一个时间序列。也看看小插曲。对于EWMA,我相信这里也有几种选择。 Rmetrics和TTR都有版本。

当我到达电脑时,我会发布一个示例。顺便提一下,这个主题有很多可用的资源。看看这本电子书:http://www.rmetrics.org/ebooks/TimeSeriesFAQ.pdf