R在hydroTSM和xts包装下,如何在季节期间使用复函数?
我想计算参数值的季节平均值(当R在hydroTSM和xts包装下,如何在季节期间使用复函数?,r,statistics,time-series,apply,xts,R,Statistics,Time Series,Apply,Xts,我想计算参数值的季节平均值(当x>0.002时)。为此,我使用xts::period.apply()按季节分隔这些值。我在endpoints()中使用“季度”期间,但“季度”期间将一年分为四个季节,如下所示: "January+February+March", "April+May+June", "July+August+Septembre", "October+November+December" "December+January+February", "March+April+M
x>0.002
时)。为此,我使用xts::period.apply()
按季节分隔这些值。我在endpoints()
中使用“季度”期间,但“季度”期间将一年分为四个季节,如下所示:
"January+February+March",
"April+May+June",
"July+August+Septembre",
"October+November+December"
"December+January+February",
"March+April+May",
"June+July+August",
"Septembre+October+November"
例如:
library(xts)
library(PerformanceAnalytics)
data(edhec)
head(edhec)
edhec_4yr <- edhec["1997/2001"]
ep <- endpoints(edhec_4yr, "quarter")
# mean
period.apply(edhec_4yr, INDEX = ep,
function(x) apply(x,2, function(y) mean(y[y>0.002])))
您能帮我更改“季度”期间的订单月份吗
我可以使用hydroTSM软件包下的简单功能(mean
,max
,min
)和以下功能:
dm2seasonal(edhec_4yr, FUN=mean, season="DJF")
dm2seasonal(edhec_4yr, season="DJF",
function(x) apply(x,2, function(y) mean(y[y>0.002])))
其中:
DJF : December, January, February
MAM : March, April, May
JJA : June, July, August
SON : September, October, November
但我不能将复杂函数(带条件的平均值)应用为以下函数:
dm2seasonal(edhec_4yr, FUN=mean, season="DJF")
dm2seasonal(edhec_4yr, season="DJF",
function(x) apply(x,2, function(y) mean(y[y>0.002])))
您能帮助我如何改进此函数以计算DJF的平均值(例如,当x>0.02
)吗?函数总是从原点(1970-01-01年午夜)开始返回“标准”期间的最后一次观测值。所以它不容易做你想做的事
您可以通过在每个3个月窗口中查找上个月最后一天的观察值来计算自己的周期结束点。这里有一种使用月度数据的方法:
# .indexmon() returns a zero-based month
ep <- which((.indexmon(edhec_4yr) + 1) %in% c(2, 5, 8, 11))
aggfn <- function(x, bound = 0.002, ...) {
apply(x,2, function(y) mean(y[y > bound], ...))
}
period.apply(edhec_4yr, ep, aggfn)
我应该注意到,我正在考虑如何以更灵活的方式指定终点,我将确保包括一种指定季节的方法。非常感谢毛奇·约书亚·乌尔里奇。非常感谢你给我带来的时间!感谢您提供这些详细的解决方案!真令人印象深刻!