我在電子表格中跟蹤我的體重,但我想通過使用R來改善體驗。我試圖在R中找到一些關於時間序列分析的信息,但是我沒有成功。R系列中的時間序列
我這裏的數據是在以下格式:
date -> weight -> body-fat-percentage -> water-percentage
例如
10/08/09 -> 84.30 -> 18.20 -> 55.3
我想做
plot
重量和指數移動平均線與時間
我怎樣才能做到這一點?
我在電子表格中跟蹤我的體重,但我想通過使用R來改善體驗。我試圖在R中找到一些關於時間序列分析的信息,但是我沒有成功。R系列中的時間序列
我這裏的數據是在以下格式:
date -> weight -> body-fat-percentage -> water-percentage
例如
10/08/09 -> 84.30 -> 18.20 -> 55.3
我想做
plot
重量和指數移動平均線與時間
我怎樣才能做到這一點?
使用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
看起來你需要處理的不規則間隔時間序列,所以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。
有一個非常好的書在時間序列R中剛出來這個夏天
http://www.amazon.com/Introductory-Time-R-Use/dp/0387886974
,如果你想更深入地研究的主題。
-k
存在我一直面臨的問題。我發現的所有教程都使用頻率。我在這裏的數據是日期。我幾乎每天記錄我的體重。有一段時間我忘了它。結果是,沒有明確的頻率,但是日期 - >重量關係。 – 2009-10-10 22:27:22
我修改了我的答案,以允許不規則的日期和沒有指定的頻率。 – 2009-10-11 05:43:34
我試過你的解決方案的圖表工作,但是當涉及到平滑我得到一個錯誤,對象「wt」無法找到。 – 2009-10-12 22:04:56