0

2つのデータセット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])

試してください、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データマトリックスとして再定義する必要がありますか?

4

1 に答える 1

1

問題を正しく理解していれば、時系列、つまり、インデックスを時間として解釈できるベクトルと、インデックスを時間と位置として解釈できる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
)

位置ごとに、を使用して、その位置の「フロー」時系列と「温度」時系列(u以下のコードでは、)の間の相関を計算できますapply

correlations <- apply( 
  temperatures, 
  2:3, 
  function (u) cor(u, flow) 
)
image(correlations)
于 2012-01-27T06:36:56.770 に答える