在R中的两个栅格之间求p值

时间:2020-07-28 08:44:34

标签: r raster tiff

如何在两个栅格之间获得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

1 个答案:

答案 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