2014-03-30 64 views
4

R中是否有滾動最大功能,不需要時間序列對象?我想模擬反射布朗運動,可以通過讓Y =布朗運動 - 布朗運動的最大值來模擬那個運動。現在說我可以模擬布朗運動(這是微不足道的),我有一系列隨機時間(所以不是整數倍,因爲我想模擬一個連續的時間過程),我怎麼才能找到最大的時間直到說10時?爲了清楚到目前爲止我的代碼是:滾動最大值R

brownian = function(n=1000, fun=rnorm) {x=cumsum(fun(n))} X= brownian() t=cumsum(abs(sin(seq(1:1000)))) %these are the random times

現在,我會非常喜歡寫Y = X - ....但不能使用任何時間序列變量B/C TS對象甚至需要時間間距。我將如何做到這一點?

+0

兩點意見:第一,如果你滿意的'cummax',那麼它是不是一個「滾動」最大你之後。其次,有什麼反對強迫你的向量到'xts'對象並使用'rollapply'?關於'R'的許多偉大事情之一是,從一個班級轉到另一個班級再次轉回到另一個班級是多麼容易。 –

回答

6

嘗試以下操作:

x - cummax(x) 
+0

不錯。最近添加了'cummax'和'cummin'嗎?在我與R的兩年工作中,我從來沒有意識到他們。 :) –

+0

不知道它是什麼時候推出的。我知道R 2.6.0有它。 –