我正在处理每日数据:
> head(data)
date X
01-01-1950 100
01-02-1950 200
. .
01-01-2015 150
我正在使用的软件包有:TSA
,ggplot2
,lubridate
,xts
和zoo
我想根据以下公式计算每个月的方差:
myvar <- function(Month){
for (j in 1:(days_in_month(Month)-1)){
suma = (X[j+1]-X[j])**2 }
sig = (1/days_in_month(Month))*suma
return(sig)
}
这将输出以下内容:
> myvar(1)
Jan
0.09322581
现在我希望对这个进行聚合,以计算每个月方差的均值。我考虑了以下方法,但不知道如何在这里使用聚合函数:
data$Month <- month(data$date,label=TRUE)
data$Year <- format(data$date,format="%Y")
aggregate( X ~ Month + Year , data , myvar )
期望结果:
第一步:
Month Year Variance
Jan 1950 myvar(Jan)
Feb 1950 myvar(Jan)
. . .
Dec 2014 myvar(Jan)
Jan 2015 myvar(Jan)
第二步:
aggregate( X ~ Month , data , mean )
Month Variance
Jan myvar(Jan)
. .
Dec myvar(Jan)
二月永远只有28天!没有闰年!
如果可能的话,我希望直接得到每个月平均值的平均值(即步骤2)。