GEE:计算长时间序列NPP与NDVI之间的相关系数
GEE中内置了计算相关系数的函数,可以分析两个变量之间的相关性,比如要分析两个波段之间的相关性,主要用到ee.Reducer.pearsonsCorrelation()函数。
ee.Reducer.pearsonsCorrelation()
内容:创建一个双输入归约器,用于计算 Pearson 的积矩相关系数和相关性 = 0 的 2 边 p 值检验。
无输入值,返回为Reducer.
以计算长时间序列NPP与NDVI之间的相关系数为例:
// NPP
var npp = ee.ImageCollection('MODIS/006/MOD17A3H')
.filterDate('2000-01-01', '2020-12-31')
.select('Npp');
// NDVI
var ndvi = ee.ImageCollection('MODIS/006/MOD13A1')
.filterDate('2000-01-01', '2020-12-31')
.select('NDVI');
// China
var china = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017')
.filter(ee.Filter.eq('country_na', 'China'));
// 计算每年的平均NPP
var annualNPP = ee.ImageCollection(
ee.List.sequence(2000, 2020).map(function(year) {
year = ee.Number(year);
var yearlyNPP = npp.filter(ee.Filter.calendarRange(year, year, 'year'))
.mean()
.set('year', year);
return yearlyNPP;
})
);
// 计算每年的平均NDVI
var annualNDVI = ee.ImageCollection(
ee.List.sequence(2000, 2020).map(function(year) {
year = ee.Number(year);
var yearlyNDVI = ndvi.filter(ee.Filter.calendarRange(year, year, 'year'))
.mean()
.set('year', year);
return yearlyNDVI;
})
);
// 合并NPP和NDVI数据
var combined = annualNPP.map(function(nppImage) {
var year = ee.Number(nppImage.get('year'));
var ndviImage = annualNDVI.filter(ee.Filter.eq('year', year)).first();
return nppImage.addBands(ndviImage);
});
// 计算相关系数
var correlation = combined.reduce(ee.Reducer.pearsonsCorrelation());
print('Correlation between NPP and NDVI:', correlation);
// 可视化相关系数
Map.addLayer(correlation, {min: -1, max: 1}, 'Correlation');
计算相关系数的主要为var corr1=collection.select(‘NDVI’,‘EVI’) .reduce(ee.Reducer.pearsonsCorrelation());,输出包括相关系数和p值。