我想创建包括“dailydata”,“MAw”和“average”的d图:
其中“dailydata”是
dailydata <- structure(list(CREDIT.AGRICOLE = c(0.0129, 0.0132, 0.0136, 0.0125, 0.0118,
0.0114, 0.0114, 0.0106, 0.0107, 0.0116, 0.0122, 0.0126, 0.0137, 0.0141,0.0137),
SOCIETE.GENERAL = c(0.0178, 0.0182, 0.0187, 0.0175, 0.0167, 0.0165, 0.0160, 0.0155, 0.0155,
0.0162, 0.0182, 0.0195, 0.0205, 0.0207, 0.0201)),
.Names = c("CREDIT.AGRICOLE", "SOCIETE.GENERAL"),
row.names = c("18/11/2008", "19/11/2008", "20/11/2008", "21/11/2008", "22/11/2008",
"23/11/2008", "24/11/2008", "25/11/2008", "26/11/2008", "27/11/2008", "28/11/2008",
"29/11/2008", "30/11/2008", "01/12/2008", "02/12/2008"), class = "data.frame")
和“MAw”和“average”我这样得到了
w <- 3 #MA(w)
n <- length(dailydata[,1])+0 #length of data
d <- length(dailydata[1,])+0 #nr of obligors
#extract row and col names
obligorname <- colnames(dailydata)
dates <- rownames(dailydata)
# calculate moving average ma(w) from daily data
#--------------------------------------------
MAw <- vector()
for(j in seq(from=1, to=d, 1)) #1,2
{
vec_MAw <- vector()
for (i in seq(from=1, to=n-w+1, 1)) #1,2,..., 13
{
mean <- sum(dailydata[i:(w-1+i),j])/w
vec_MAw <- rbind(vec_MAw, mean)
}
MAw <- cbind( MAw, vec_MAw)
}
#name rows and cols
colnames(MAw) <- obligorname
rownames(MAw) <- dates[w:n]
#calculate average
#-----------------
average <- vector()
for(j in seq(from=1, to=d, 1)) # 1, 2
{
obligor_average <- sum(dailydata[1:n,j])/n
average <- cbind(average, obligor_average)
}
#name rows and cols
colnames(average) <- obligorname
rownames(average) <- dates[n]
我想有d个情节(每个债务人一个,在这个例子中d = 2)。
首先,在x轴上,这些图中的每一个应该只有几个垂直于x轴的日期。
其次,在图中,
“dailydata”系列应该从开始日期(2008年11月18日)开始,到结束日期结束(2008年12月2日)
来自“MAw”的系列应该从“第w个日期”开始(这里w = 3,因此2008年11月20日)并在结束日期(02/12/2008)结束
平均值应该有一条水平线
我唯一拥有的就是这个,
for (i in seq(from=1, to=d, 1))
{
plot( dailydata[,i], main= obligorname[i], type = "l", col="red", las=1,
ylab="dailydata", xlab="time", ylim = c(0, max(dailydata[i])))
abline(h=average[,i], col="black")
lines(MAw[,i], col="blue")
}
没有给出我想要获得的数字,因为MAw系列应该向右移动并且x轴上没有日期。
我是SO和R的新手,也许这不是描述我的问题所需的最少信息量。无论如何,你有什么建议?
我应该使用as.Date作为日期和plot.ts吗?或者我应该使用ggplot2?或者是其他东西?如何?
非常感谢你!