4

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

我这里的数据格式如下:

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

例如

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

我想做的事

plot权重和指数移动平均线对时间

我怎样才能做到这一点?

4

3 回答 3

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
于 2009-10-10T22:20:00.873 回答
2

看起来您需要处理不规则间隔的时间序列,因此 ts 不是一个选项。使用其他时间序列库之一。zoo 是使用最广泛的,但其他一些选项是 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 。

于 2009-10-11T02:35:30.640 回答
0

今年夏天刚刚出版了一本关于 R 中时间序列的非常好的书

http://www.amazon.com/Introductory-Time-R-Use/dp/0387886974

如果您想更深入地研究该主题。

-k

于 2009-11-07T06:45:53.423 回答