2009-10-10 92 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