如何在两个栅格之间获得p值?
我目前有两个栅格,我想计算一个p值。 我用na.rm = T将它们都转换为数据帧。
df1<-as.data.frame(r1,na.rm=T)
df1<-as.data.frame(r2,na.rm=T)
cor.test(df1$gc,df2$ip)$p.value
Error in cor.test.default(df1$gc,df2$ip)) :
'x' and 'y' must have the same length
即使我不参加na.rm,也要来
df1<-as.data.frame(r1)
df1<-as.data.frame(r2)
cor.test(df1$gc,df2$ip)$p.value
[1] 0
答案 0 :(得分:0)
您必须将数字矢量传递给cor.test()
。您将开始转换为data.frame并获取列,但是使用 raster 函数values()
可能更容易:
set.seed(666)
r1 <- raster(matrix(rnorm(100), 10, 10))
r2 <- raster(matrix(rnorm(100), 10, 10))
cor.test(values(r1), values(r2))$p.value
0.07144313
删除NA
时出现错误是因为两个向量的长度不同,即,一个向量中的NA
单元数多于另一个向量。根据您拥有的许多NA
,在结尾(0)处获得的p值可能不重要。您是否尝试对两个栅格中的值制作简单的箱线图或分布图?这可以帮助您了解p值是否仅仅是太多NA
的伪像。
d <- data.frame(
x = c(values(r1), values(r2)),
y = c(rep(1, ncell(r1)), rep(2, ncell(r2)))
)
boxplot(d$x ~ d$y)
/ Emilio