[英]R - World Contour Map with Correlation between two data sets
我有两个数据集A和B,我想找到相关性并绘制等高线图。
A只是具有230个流数据的简单向量。
B是一个序列日期下的复杂海表温度(SST)数据。 在每个日期,SST都有记录的温度的360行* 180列的矩阵。
向量A(230资料)为:
Houlgrave_flow_1981_2000 = window(Houlgrave_flow_average, start = as.Date("1981-11-15"),end = as.Date("2000-12-15"))
Houlgrave_SF_1981_2000 = coredata(Houlgrave_flow_1981_2000)
矩阵B的尺寸如下所示,我只使用1到230。
> dim(ssta_sst)
[1] 360 180 362
我发现相关性的想法如下。
z_correlation = cor(Houlgrave_SF_SST_1981_2000,ssta_sst[c(181:360, 1:180),,i])
试试,我= 1。 但是,它不起作用。错误消息显示:
"Error in cor(Houlgrave_SF_SST_1981_2000, ssta_sst[c(181:360, 1:180), , :
incompatible dimensions.".
另外,这是我的轮廓图代码,
require(maps)
par(ask=TRUE)
for (i in 1:230) {
maps::map(database="world", fill=TRUE, col="light blue")
maps::map.axes()
contour(x=lon_sst, y=lat_sst, z=cor(Houlgrave_SF_1981_2000,ssta_sst[c(181:360, 1:180),,i]), zlim=c(-3,3), add=TRUE)
title(paste("Year: ", year_sst[i], ", Month: ", month_sst[i]))
}
我想我只需要在轮廓代码下修改z。 是否有必要将每个A的数据重新定义为360 * 180数据矩阵?
如果我对问题的理解正确,那么您就有一个时间序列,即一个向量,其索引可以解释为时间,以及一个3维数组,其索引可以解释为时间和位置。
# Sample data
n <- 230
m <- 100
dates <- seq.Date( from=Sys.Date(), length=n, by="day" )
flow <- rnorm(n)
names(flow) <- as.character(dates)
temperatures <- array( rlnorm(n*m*m), dim=c(n,m,m) )
dimnames( temperatures ) <- list(
time = as.character( dates ),
longitude = NULL,
latitude = NULL
)
对于每个位置,您可以使用apply
计算该位置的“流量”时间序列与“温度”时间序列( u
,在下面的代码中)之间的相关性。
correlations <- apply(
temperatures,
2:3,
function (u) cor(u, flow)
)
image(correlations)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.