GEE:多元线性回归

这篇具有很好参考价值的文章主要介绍了GEE:多元线性回归。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者:CSDN @ _养乐多_

本文记录了在NDVI、EVI和LAI作为自变量,precipitation作为因变量的条件下,使用linearRegression函数进行线性回归分析的代码,代码在Google Earth Engine(GEE)平台上实现。具体而言,该函数可以计算NDVI、EVI和LAI对precipitation的影响关系。通过线性回归分析,可以了解NDVI、EVI和LAI与precipitation之间的关系,并获得每个自变量(NDVI、EVI和LAI)对应的因变量(precipitation)的系数。系数表示自变量对因变量的影响程度,正值表示正相关,负值表示负相关。

结果如下图所示,

GEE:多元线性回归,GEE机器学习专栏,线性回归,回归,机器学习,数据结构,算法



一、多元线性回归概念和意义

1.1 概念

多元线性回归是一种统计分析方法,用于研究多个自变量对一个因变量的影响关系。它是简单线性回归的扩展,可以同时考虑多个自变量之间的关系,并分析它们与因变量之间的线性关系。

在多元线性回归中,我们有一个因变量(也称为响应变量)和多个自变量(也称为解释变量)。我们的目标是建立一个线性模型,以最好地拟合观测数据并预测因变量。

多元线性回归模型的一般形式可以表示为:

Y = β 0 + β 1 X 1 + β 2 X 2 + . . . + β p X p + ε Y = β₀ + β₁X₁ + β₂X₂ + ... + βₚXₚ + ε Y=β0+β1X1+β2X2+...+βpXp+ε

其中,

  • Y Y Y 是因变量(响应变量),
  • X 1 , X 2 , . . . , X p X₁, X₂, ..., Xₚ X1,X2,...,Xp 是自变量(解释变量),
  • β 0 , β 1 , β 2 , . . . , β p β₀, β₁, β₂, ..., βₚ β0,β1,β2,...,βp 是模型的系数(回归系数),
  • ε ε ε是误差项,表示模型无法完全解释的随机误差。

多元线性回归的目标是通过最小化残差平方和,找到最佳的系数估计值,使得模型拟合数据最好。这样,我们可以得到每个自变量对因变量的影响程度,并使用模型进行预测和推断。

在多元线性回归分析中,还需要考虑一些假设,如误差项的独立性、正态性、方差齐性等。通过检验这些假设,我们可以评估模型的适用性和解释结果的可靠性。

多元线性回归在许多领域中广泛应用,例如社会科学、经济学、生态学和环境科学等,用于研究和预测因变量受多个自变量影响的情况。

1.2 意义

在NDVI、EVI和LAI作为自变量,NPP作为因变量的条件下,使用linearRegression函数可以进行线性回归分析。具体而言,该函数可以计算NDVI、EVI和LAI对NPP的影响关系。

  • 自变量:NDVI、EVI和LAI是植被指数,用于描述植被生长状况、叶绿素含量和叶面积指数等植被属性。这些指标反映了植被的光合作用能力和生长水平。
  • 因变量:NPP代表净初级生产力,是指植物在光合作用中固定的净碳量,是衡量生态系统生产力的重要指标。

通过线性回归分析,可以了解NDVI、EVI和LAI与NPP之间的关系,并获得每个自变量(NDVI、EVI和LAI)对应的因变量(NPP)的系数。系数表示自变量对因变量的影响程度,正值表示正相关,负值表示负相关。

例如,通过线性回归分析可以得到以下结果:

  • 系数数组:具有维度为(3, 1)的数组,其中每列对应一个因变量(NPP)的系数,例如第一列是NDVI的系数,第二列是EVI的系数,第三列是LAI的系数。
  • 残差均方根向量:表示回归模型对NPP的拟合程度,向量中的每个元素对应一个因变量(NPP)的残差均方根。
    通过这些分析结果,可以了解到NDVI、EVI和LAI对NPP的影响程度和统计拟合程度。

这种分析有助于理解植被指数与净初级生产力之间的关系,以及预测植被生长状况对生态系统生产力的影响。

二、函数详解

2.1 函数参数

ee.Reducer.linearRegression(numX, numY) 创建一个reducer,用于计算具有numX个独立变量和numY个因变量的线性最小二乘回归。

每个输入元组将包含独立变量的值,后跟因变量的值。

第一个输出是一个系数数组,维度为(numX, numY);每列包含对应因变量的系数。第二个输出是每个因变量残差的均方根的向量。如果系统欠定,例如输入的数量小于等于numX,则两个输出都为null。

参数:
numX (整数):
输入维度的数量。

numY (整数,默认为1):
输出维度的数量。

返回值: Reducer

2.2 举例说明

在给定NDVI、EVI、LAI作为自变量,NPP作为因变量的情况下,可以使用 ee.Reducer.linearRegression(numX, numY) 函数创建一个 reducer 来执行线性最小二乘回归

参数如下:

  • numX(整数):表示自变量的数量。在这种情况下,自变量是NDVI、EVI和LAI,因此 numX 为3。
  • numY(整数):表示因变量的数量。在这种情况下,因变量是NPP,因此 numY 为1。

通过使用该 reducer,可以计算NDVI、EVI和LAI作为自变量,NPP作为因变量的线性最小二乘回归。

输入元组中的每个元素将包含NDVI、EVI、LAI的值,后跟NPP的值。

该 reducer 的第一个输出是一个系数数组,维度为 (numX, numY),其中每列包含对应因变量的系数(NPP的系数)。第二个输出是NPP残差的均方根。如果输入的数量小于等于 numX,则两个输出都为 null,表示系统欠定。

因此,您可以使用 ee.Reducer.linearRegression(3, 1) 来执行基于NDVI、EVI、LAI作为自变量,NPP作为因变量的线性最小二乘回归分析。

三、代码详解

3.1 代码详解
  • 构建自变量和因变量影像集合
  • 应用多元线性回归函数
  • 可视化结果
3.2 完整代码
var startYear = 2003;
var endYear = 2020;
var roi = table;
Map.centerObject(roi, 11);

var chirps = ee.ImageCollection("UCSB-CHG/CHIRPS/DAILY")
               .map(roiClip)
               .select('precipitation')

var NDVI_EVI_Collection = ee.ImageCollection("MODIS/006/MOD13A1")
                            .map(roiClip)
                            .select(['NDVI','EVI'])

var LAI_Collection = ee.ImageCollection("MODIS/061/MCD15A3H")
                       .map(roiClip)
                       .select('Lai')
                       
var new_NDVI_EVI_Collection = compositeByYear(NDVI_EVI_Collection, startYear, endYear);                       
var new_LAI_Collection = compositeByYear(LAI_Collection, startYear, endYear);
var new_chirps_Collection = compositeByYear(chirps, startYear, endYear);

print('new NDVI EVI Collection', new_NDVI_EVI_Collection);
print('new LAI Collection', new_LAI_Collection);
print('new chirps Collection', new_chirps_Collection);

var merged_NDVI_EVI_LAI_Collection = getMergeImages(new_NDVI_EVI_Collection, new_LAI_Collection)
var merged_NDVI_EVI_LAI_Chirps_Collection = getMergeImages(merged_NDVI_EVI_LAI_Collection, new_chirps_Collection)
print('merged NDVI EVI LAI Chirps Collection',merged_NDVI_EVI_LAI_Chirps_Collection)

var linearRegressionResult = merged_NDVI_EVI_LAI_Chirps_Collection.reduce(
  ee.Reducer.linearRegression({
    numX: 3,
    numY: 1
}));

print('Linear Regression Result', linearRegressionResult)
Map.addLayer(linearRegressionResult, {}, 'linearRegressionResult')

var bandNames =[ ['NDVI_mean', 'EVI_mean', 'Lai_mean'] ,['precipitation_mean']]

var coefficients = linearRegressionResult.select('coefficients').arrayFlatten(bandNames);

print('coefficients', coefficients);

Map.addLayer(coefficients, {min: -1, max: 1, bands: 
['NDVI_mean_precipitation_mean', 'EVI_mean_precipitation_mean', 'Lai_mean_precipitation_mean']}, 'coefficients');

var phenoPalette = ['C2523C','F2B60E','77ED00','1BAA7D','0B2C7A']
Map.addLayer(coefficients.select('Lai_mean_precipitation_mean'), {min: -1.4, max: -0.1467, Palette:phenoPalette}, 'Lai_mean_precipitation_mean');

print('OLS estimates:', coefficients.reduceRegion({
  reducer: ee.Reducer.first(),
  geometry: ee.Geometry.Point([117.6832, 29.0214]),
  scale: 500
}));

//********************code-lib********************//

function roiClip(image)
{
  return image.clip(roi);
}

function compositeByYear(colYLD, startYear, endYear)
{
  var myReducer = ee.Reducer.mean();
  var yearList = ee.List.sequence(startYear, endYear);
  var yearCompList = yearList.map(function(year){
  var yearCol = colYLD.filter(ee.Filter.calendarRange(year, year, 'year'));
  var yearComp = yearCol.reduce(myReducer);
  var imgList = yearCol.aggregate_array('constant');
  var systemStart = yearCol.reduceColumns(ee.Reducer.min(), ['system:time_start']).get('min');
  var nBands = yearComp.bandNames().size();
  return yearComp.set({
      'year': year,
      'image_list': imgList,
      'n_bands': nBands,
      'system:time_start':ee.Date.fromYMD(year, 6, 3).millis()
    });
  });
  var YearColYLD = ee.ImageCollection.fromImages(yearCompList);
  return YearColYLD;
}

function getMergeImages(primary, secondary) 
{
  var join = ee.Join.inner();
  var filter = ee.Filter.equals({
    leftField: 'system:time_start',
    rightField: 'system:time_start'
  });
  var joinCol = join.apply(primary, secondary, filter);
  joinCol = joinCol.map(function(image) {
    var img1 = ee.Image(image.get("primary"));
    var img2 = ee.Image(image.get("secondary"));
    return img1.addBands(img2);
  });
  return ee.ImageCollection(joinCol);
}
3.3 代码链接

https://code.earthengine.google.com/4287eec83819573cad1b501a5177951c?noload=true

声明:
本人作为一名作者,非常重视自己的作品和知识产权。在此声明,本人的所有原创文章均受版权法保护,未经本人授权,任何人不得擅自公开发布。
本人的文章已经在一些知名平台进行了付费发布,希望各位读者能够尊重知识产权,不要进行侵权行为。任何未经本人授权而将付费文章免费或者付费(包含商用)发布在互联网上的行为,都将视为侵犯本人的版权,本人保留追究法律责任的权利。
谢谢各位读者对本人文章的关注和支持!文章来源地址https://www.toymoban.com/news/detail-564988.html

到了这里,关于GEE:多元线性回归的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 人工智能基础_机器学习001_线性回归_多元线性回归_最优解_基本概念_有监督机器学习_jupyter notebook---人工智能工作笔记0040

       线性和回归,就是自然规律,比如人类是身高趋于某个值的概率最大,回归就是通过数学方法找到事物的规律. 机器学习作用: 该专业实际应用于机器视觉、指纹识别、人脸识别、视网膜识别、虹膜识别、掌纹识别、专家系统、自动规划、智能搜索、定理证明、博弈、自动程序

    2024年02月06日
    浏览(52)
  • 学习记录2-多元线性回归模型(附上python代码)

    研究货运总量 y (万吨)与工业总产值 x1(亿元)、农业总产值 x2(亿元),居民非商品支出 X3 (亿元)的关系。数据见表3-9。 (1)计算出 y , x1 ,x2, x3 的相关系数矩阵。 (2)求 y 关于 x1 ,x2, x3 的三元线性回归方程。 (3)对所求得的方程做拟合优度检验。 (4)对回归方程做

    2024年02月03日
    浏览(39)
  • 数学建模学习笔记(9)多元线性回归分析(非常详细)

    回归分析的地位 :数据分析中最基础也是最重要的分析工作,绝大多数的数据分析问题都可以使用回归的思想来解决。 回归分析的任务 :通过研究自变量和因变量的相关关系,尝试用自变量来解释因变量的形成机制,从而达到通过自变量去预测因变量的目的。具体如下:

    2024年02月03日
    浏览(44)
  • 【Python机器学习】——多元回归

    多元回归(Multiple Regression) 多元回归就像线性回归一样,但是具有多个独立值,这意味着我们试图基于两个或多个变量来预测一个值。 请看下面的数据集,其中包含了一些有关汽车的信息。 Car Model Volume Weight CO2 Toyota Aygo 1000 790 99 Mitsubishi Space Star 1200 1160 95 Skoda Citigo 1000 92

    2023年04月21日
    浏览(35)
  • 基于多元线性回归的Boston房价数据分析

    Boston房价数据是R语言中一类重要的数据,常被用来做各种方法分析,即它是波士顿不同地区的506个家庭住房信息,其中包括影响房价的14个因素如城镇的人均犯罪率、氮氧化合物浓度、城镇黑人的比例、低教育程度的人口比例等,而且每个因素对房价的影响都是不同显著程度

    2024年01月19日
    浏览(54)
  • 大数据分析案例-基于多元线性回归算法构建广告投放收益模型

      🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 目录 1.项目背景 2.项目简介 2.1

    2024年02月03日
    浏览(53)
  • 机器学习(10) 逻辑回归:多元分类(Multi-class classification)

    对于数据集中存在多个类别的分类问题,我们可以采用一种叫做 One-vs-rest 的方法,将其转化成二元分类的问题,然后再进行解决。 前面的是对于二元分类问题,应该如何去处理其预测函数、代价函数和梯度下降算法。 但是多元的分类才是生活常见的情况。 例如对于邮件,我

    2024年02月02日
    浏览(49)
  • 多元线性回归的python代码实现(基于sklearn的波士顿房价boston数据集为例)

    基于sklearn自带数据集波士顿房价数据集进行多元线性回归算法代码实现,其数据集包括13个特征向量,共计506个样本集。 本文代码实现步骤如下: 1. 获取数据集 2. 数据集切分,老规矩,80%训练,20%测试 3. 数据预处理(本用例尝试过归一化处理,但发现效果不好,不是每一个

    2024年02月06日
    浏览(47)
  • 【机器学习界的“Hello World“ 】Logistic 分类回归算法 (二元分类 & 多元分类)

    🤵‍♂️ 个人主页: @计算机魔术师 👨‍💻 作者简介:CSDN内容合伙人,全栈领域优质创作者。 该文章收录专栏 ✨— 机器学习 —✨ l o g i s t i c logistic l o g i s t i c (数理逻辑)回归算法(预测 离散值 y y y 的 非常常用的学习算法 假设有如下的八个点( y = 1 或 0 ) y=1 或 0) y

    2024年02月15日
    浏览(43)
  • 多元线性回归-Lasso

    目录 1.Lasso与多重共线性 2. Lasso的核心作用:特征选择 3. 选取最佳的正则化参数取值          Lasso全称最小绝对收缩和选择算子(Least absolute shrinkage and selection operator),由于这个名称过于复杂所以简称为Lasso,和岭回归一样,Lasso是用来作用于多重共线性的算法,不过Lass

    2024年02月16日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包