绘制相同数据两种不同的方式,得到不同的结果(格子xyplot)

时间:2014-08-06 15:08:39

标签: r

我正在尝试生成一些数据的散点图。我这样做有两种不同的方式,如下面的代码所示(大多数代码只是排列数据,唯一的图形部分位于底部)。一个使用对工作空间中变量的直接引用,另一个使用数据首先将数据排列到xts对象中,然后使用列索引来引用它们。

生成的散点图是不同的,即使我已经检查过源数据在两个方面都是相同的。

我想知道为什么这些情节不同,提前谢谢。

# Get data
# =============
library('quantmod')

# Set monthly time interval
StartPeriod = paste0("1980-01")
EndPeriod = paste0("2014-07")
DateString = paste0(StartPeriod,"/", EndPeriod)

# CPI (monthly)
getSymbols("CPIAUCSL", src="FRED")

 # QoQ growth, Annualized
 CPIAUCSL = ((CPIAUCSL/lag(CPIAUCSL))^4-1)*100
 CPIAUCSL = CPIAUCSL[DateString]

# Oil prices (monthly)
getSymbols(c("MCOILWTICO"), src="FRED")

 # QoQ growth, annualized
 MCOILWTICO = ((MCOILWTICO/lag(MCOILWTICO))^4-1)*100
 MCOILWTICO = MCOILWTICO[DateString]


# Produce plots
# ===============
library('lattice')
# Method 1, direct reference
xyplot(CPIAUCSL~lag(MCOILWTICO,1), ylim=c(-5,6), 
   ylab="CPI", 
   xlab="Oil Price, 1 month lag",
   main="Method 1: Inflation vs. Lagged Oil Price",
   grid=TRUE)


# Method 2, refer to column indices of xts object
basket = merge(CPIAUCSL, MCOILWTICO)
xyplot(basket[ ,1] ~ lag(basket[ ,2],1), ylim=c(-5, 6), 
   ylab="CPI", 
   xlab="Oil Price, 1 month lag",
   main="Method 2: Inflation vs. Lagged Oil Price",
   grid=TRUE)


# Double check data fed into plots is the same
View(merge(CPIAUCSL, lag(MCOILWTICO,1)))
View(merge(basket[ ,1], lag(basket[ ,2],1))) # yes, matches

1 个答案:

答案 0 :(得分:1)

方法1绝对不正确,因为它会将点数相隔6年!例如,CPIAUCSL[3]是1980-03-01的数据,而lag(MCOILWTICO,1)[3]对应于1986-03-01 - 但是,在散点图上,它们将被配对!相比之下,basket[ ,1][3]basket[ ,2][3]都属于1980-03-01。

(你的双重检查没有显示问题,因为你使用了合并 - 而不是方法1! - 这解决了问题。)