Как вычислить r2 из двух растров в R? - PullRequest
0 голосов
/ 10 марта 2020

У меня есть два растра, и я хотел бы увидеть корреляцию между ними и получить r2.

 TOTAL2
class      : RasterLayer 
dimensions : 2803, 5303, 14864309  (nrow, ncol, ncell)
resolution : 0.008333333, 0.008333333  (x, y)
extent     : 60.85, 105.0417, 15.95833, 39.31667  (xmin, xmax, ymin, ymax)
crs        : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 
source     : memory
names      : layer 
values     : 0, 400  (min, max)

> lpjENLF$VegCX2X0.7
class      : RasterLayer 
dimensions : 2803, 5303, 14864309  (nrow, ncol, ncell)
resolution : 0.008333333, 0.008333333  (x, y)
extent     : 60.85, 105.0417, 15.95833, 39.31667  (xmin, xmax, ymin, ymax)
crs        : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 
source     : memory
names      : VegCX2X0.7 
values     : 1.874989e-05, 350  (min, max)

Как я могу вычислить значение r2 между этими двумя растрами? Я попытался преобразовать оба растра в кадры данных, но оба кадра данных возвращаются как NA. Затем я применяю na.rm=T и пытаюсь найти r2, но длина фреймов данных для обоих растров становится разной. Второе решение, которое я попробовал, было сложить оба растра и применить этот код:

layerStats(rasterstack,'pearson')

однако я получаю:

$`pearson correlation coefficient`
           VegCX2X0.7 layer
VegCX2X0.7         NA    NA
layer              NA    NA

$mean
VegCX2X0.7      layer 
        NA         NA 

1 Ответ

1 голос
/ 10 марта 2020

Опция 1 : Вы можете использовать na.rm в layerStats

layerStats(rasterstack, 'pearson', na.rm=T)

Опция 2 : Вы можете сначала извлечь значения из растровых объектов и примените встроенную функцию cor. С помощью этой функции вы должны добавить аргумент use="complete.obs" to get it working with NA` значения.

cor(values(TOTAL2), values(lpjENLF$VegCX2X0.7), use="complete.obs", method = 'pearson')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...