2012-01-27 62 views
0

我有兩個數據集A和B,我想找到相關性並繪製等值線圖。R - 兩個數據集之間具有相關性的世界等值線圖

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。然而,這並不work.The錯誤消息指出:

"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])) 
} 

我想我只需要在輪廓代碼來修改ž。是否有必要將每個A的數據重新定義爲360 * 180的數據矩陣?

回答

1

如果我正確地理解了這個問題,你有一個時間序列,即一個索引可以解釋爲時間的向量和一個三維數組,它的索引可以解釋爲時間和位置。

# 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 
) 

對於每個位置,可以計算你「流」時間序列和「溫度」的時間序列(u,在下面的代碼)之間的相關性對於該位置,使用apply

correlations <- apply( 
    temperatures, 
    2:3, 
    function (u) cor(u, flow) 
) 
image(correlations) 
+0

我試過你的方法,但它不起作用。對於我的流量數據,它已經是包含日期向量的動物園格式。我嘗試過不同的方法,但是使用循環,它包含一個小錯誤。我希望你能幫助我。它在「http://stackoverflow.com/questions/9057449/r-lopp-in-matrix」上。謝謝。 – 2012-01-29 22:44:27

相關問題