在R中以相同的比例绘制几个变量

时间:2016-04-12 20:29:54

标签: r plot

我一遍又一遍地试图解决这个问题,但我无法理解。我在R中估计了一个Beta-t-EGARCH模型和一个GARCH-t模型,现在我需要在同一个图上绘制结果。最终结果很可怕,因为变量在y轴上不共享相同的比例。我是R的新手,所以请不要怪我:)。 这是代码:

library(quantmod)
library(betategarch)
library(fGarch)
library(ggplot2)

getSymbols("GOOG",src="yahoo")
google_ret <- abs(periodReturn(GOOG, period="daily", subset=NULL, type="log"))-mean(abs(periodReturn(GOOG, period="daily", subset=NULL, type="log")))

googcomp <- tegarch(google_ret, asym=FALSE, skew=FALSE)
goog1stdev <- fitted(googcomp)


#now we try to fit a standard GARCH-t model
googgarch <- garchFit(data=google_ret, cond.dist="sstd")
googgarch2 <- garchFit(data=google_ret, cond.dist="sstd", include.mean = FALSE, include.delta = FALSE, include.skew = FALSE, include.shape = FALSE, leverage = FALSE, trace = TRUE)
volatility <- volatility(googgarch2, type = "sigma") 


plot(google_ret)
par(new=TRUE)
plot(googgarch2, which=2)
par(new=TRUE)
plot(goog1stdev, col="red")

最终结果是y轴上完全超出比例的图,其中较低值的变量绘制在较高值之上。非常感谢任何想帮助我的人!

1 个答案:

答案 0 :(得分:1)

推荐的方法是将它们绘制成彼此叠加的不同图:

layout(matrix(1:3,3))
plot(google_ret)
plot(googgarch2, which=2)
plot(goog1stdev, col="red")

enter image description here

您可以通过调用par("mar")来调整空白区域以调整边距大小:

 opar=par(mar=par("mar") -c(1,0,3,0))  # opar will then let your restore previous values
 ..... plotting efforts
 par(opar)

enter image description here

我不太了解您的域名,但是如果您使用移位的y坐标,那么这会产生一个带有重叠图的有点清理版本:

png()
plot(google_ret, ylim=c(0,1), ylab="ylab="Google Returns(black); GGarch x10 +0.5 (blue); STD + 0.3(red)" )
par(new=TRUE)
plot(googgarch2@data +.5, type="l", col="blue",axes=FALSE,  ylab="", main="",ylim=c(0, 1)) ;abline(h=.5, col="blue")
par(new=TRUE);
plot( 10*coredata(goog1stdev) + .3, col="red", type="l", axes=FALSE, main="",ylim=c(0,1), ylab=""); abline(h=.3, col="red")
dev.off()

enter image description here