我已经问过similar question如何创建下图: 我被建议使用splom()函数,但我不知道如何将它应用于我的数据。我看到了splom()函数的例子,可以找到here和here,但由于编程技巧低,我无法应用它。
我有24个时间序列,属于4个独立的组(4个Pirwise相关图)。 4组:
1)频率= 1分钟。 ,归属时间序列:AAPL_1m,MSFT_1m,INTC_1m,FB_1m,MU_1m,IBM_1m。 2)频率= 2分钟。 ,归属时间序列:AAPL_2m,MSFT_2m,INTC_2m,FB_2m,MU_2m,IBM_2m。 3)频率= 5分钟。 ,所属时间序列:AAPL_5m,MSFT_5m,INTC_5m,FB_5m,MU_5m,IBM_5m。 4)频率= 10分钟。 ,所属时间序列:AAPL_10m,MSFT_10m,INTC_10m,FB_10m,MU_10m,IBM_10m。
每个成对图应显示每组中时间序列之间的相关性。 为了创建每个单独的成对图,我使用了以下函数:
pairs(cbind(AAPL_1m, MSFT_1m, INTC_1m, FB_1m, MU_1m, IBM_1m),main="Frequency=1 Min.",font.labels = 2, col="blue",pch=16, cex=0.8, cex.axis=1.5,las=1)
pairs(cbind(AAPL_2m, MSFT_2m, INTC_2m, FB_2m, MU_2m, IBM_2m),main="Frequency = 2 Min.",font.labels = 2, col="blue",pch=16, cex=0.8, cex.axis=1.5,las=1)
pairs(cbind(AAPL_5m, MSFT_5m, INTC_5m, FB_5m, MU_5m, IBM_5m),main="Frequency = 5 Min.",font.labels = 2, col="blue",pch=16, cex=0.8, cex.axis=1.5,las=1)
pairs(cbind(AAPL_10m, MSFT_10m, INTC_10m, FB_10m, MU_10m, IBM_10m),main="Frequency = 10 Min.",font.labels = 2, col="blue",pch=16, cex=0.8, cex.axis=1.5,las=1)
如果有人可以建议如何应用splom()函数来创建提到/显示的图形,将非常感激。
此外,如果还有另一个更合适的功能可以在单个图中集成各个成对图(pair()),我很乐意应用它。
答案 0 :(得分:4)
有些demodata会很高兴,但是让我们先生成一些,只有三个变量:
AAPL_1m<-rnorm(1000)
MSFT_1m<-rnorm(1000)
INTC_1m<-rnorm(1000)
AAPL_2m<-rnorm(1000)
MSFT_2m<-rnorm(1000)
INTC_2m<-rnorm(1000)
为了使splom()
起作用,您需要生成分组变量。这是来自1m组的1000次观察,以及来自2m组的另外1000次观察。因此,分组变量只是一个1000 1m
值的简单向量,后面是1000 2m
个值:
group<-c(rep("1m", 1000), rep("2m", 1000))
在您的情况下,分组变量可能会生成如下:
group<-c(rep("1m", length(AAPL_1m)), rep("2m", length(AAPL_2m)))
获得分组变量后,您可能希望将所有内容绑定到sinle数据帧中,如下所示:
dat<-data.frame(AAPL=c(AAPL_1m, AAPL_2m), MSFT=c(MSFT_1m, MSFT_2m), INTC=c(INTC_1m, INTC_2m), group=group)
一旦你有一个数据框,分组变量给出观察组,你可以绘制散点图矩阵:
library(lattice)
# Three first columns of the data plotted conditional on the grouping
splom(~dat[,1:3]|group)
结果图应大致如下所示:
这需要推广到您的四批数据,但它应该是直接的(只需为四个批次生成分组,并将所有四个单独的批次绑定在一起)。函数splom()
还有更多可用于参数的参数,例如,使绘图更漂亮。
答案 1 :(得分:1)
JTT给出了关于如何应用splom()的准确解释。以下代码表示应用于问题的JTT代码的扩展名。
group<-c(rep("Frequency = 1 Min.", length(AAPL_1m)),
rep("Frequency = 2 Min.", length(AAPL_2m)),
rep("Frequency = 5 Min.", length(AAPL_5m)),
rep("Frequency = 10 Min.", length(AAPL_10m)))
dat<-data.frame(AAPL=c(AAPL_1m, AAPL_2m, AAPL_5m, AAPL_10m),
MSFT=c(MSFT_1m, MSFT_2m, MSFT_5m, MSFT_10m),
INTC=c(INTC_1m, INTC_2m, INTC_5m, INTC_10m),
FB=c(FB_1m, FB_2m, FB_5m, FB_10m),
MU=c(MU_1m, MU_2m, MU_5m, MU_10m),
IBM=c(IBM_1m, IBM_2m, IBM_5m, IBM_10m),
group=group)
splom(~dat[,1:6]|group)
代码的结果如下图所示:
但是,应该有一些改进: