R中的相关曲面

Correlation surface in R

这是我第三次尝试解释我的问题。希望这次能答对,很难解释的问题。

我有 90x19 矩阵,其中 90 行中的每一行都是对特定波长的一系列 19 次测量。 90 个波长从 400 到 700。然后我有一个长度 19x1 矢量

我想创建一个矩阵,其中每个单元格显示每个波长组合(对于矩阵的所有 19 个值)与 19x1 向量之和之间的皮尔逊相关系数。

绘制这个表面看起来完全像这样

如果您需要更多信息或更好的解释,请告诉我。这里真的需要一些帮助! :)

最佳

向量如下:

v<-c(116, 100, 148, 132, 81, 136, 145, 116, 87, 126, 62, 124, 129, 
108, 127, 134, 142, 99, 132)

数据帧头如下:

data<-structure(list(`1` = c(2, 2, 2, 2), `2` = c(1, 1, 1, 1), `3` = c(2, 
2, 2, 2), `4` = c(2, 2, 2, 3), `5` = c(13, 14, 14, 15), `6` = c(2, 
2, 2, 2), `7` = c(2, 2, 2, 2), `8` = c(0, 0, 0, 0), `9` = c(5, 
5, 5, 5), `10` = c(0, 0, 0, 0), `11` = c(114, 119, 122, 125), 
    `12` = c(8, 8, 8, 8), `13` = c(7, 7, 7, 8), `14` = c(10, 
    10, 10, 10), `15` = c(12, 12, 12, 12), `16` = c(6, 6, 6, 
    6), `17` = c(4, 4, 4, 4), `18` = c(17, 18, 18, 19), `19` = c(13, 
    14, 14, 14)), .Names = c("1", "2", "3", "4", "5", "6", "7", 
"8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", 
"19"), row.names = c("402.37700182806", "405.70862540288", "409.04076825642", 
"412.37342090064"), class = "data.frame")

我模拟了数据(没有相关性),但看看这是不是你想要的:

nr=90
data<-data.frame(matrix(runif(nr*19,2,15),nrow=nr,ncol=19))
row.names(data)<-round(seq(400,700, length.out = nrow(data)),4)

cm=matrix(NA,nrow(data),nrow(data))
for (i in 1:nrow(data))
  for(j in i:nrow(data))cm[j,i]<- cor(apply(data[c(j,i),],2,sum),v)

colnames(cm)<-row.names(cm)<-round(as.numeric(row.names(data)),0)

#Build the plot    
library(lattice)
library(reshape)

cmd<-cbind(var=as.numeric(row.names(data)),data.frame(cm))
cmd<-cbind(melt(cmd, id=c("var")),var2=rep(as.numeric(row.names(data)),each=nrow(data)))

levelplot(value~var*var2,data=cmd,  
          col.regions=colorRampPalette(c("blue","green", "red")),
          at=seq(-1,1,0.1),
          xlab="x", ylab="x", main="")