MATLAB 建立多元线性回归模型——一以栅格数据气候因子与植被NDVI为例

本文分享了如何使用GPT对MATLAB代码进行改进,以实现对长时间栅格序列逐像元的多元线性回归分析,包括数据读取、有效值处理、回归分析和结果保存至GeoTIFF文件,同时包含了显著性检验的部分内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于先前博主的代码,我应用gpt修改了下,生成一份更方便理解学习的代码供大家参考!

原博主代码链接:基于matlab的长时间栅格序列逐像元多元回归_逐像元多元线性回归代码-优快云博客


% @author yinlichang3064@163.com
[aa,R]=geotiffread('I:\裁剪降水\2001pre.tif');%先导入纬度数据
info=geotiffinfo('I:\裁剪降水\2001pre.tif');
[m,n]=size(aa);
temsum=zeros(m*n,20);%20表示时间序列长度
presum=zeros(m*n,20);%20表示时间序列长度
NDVIsum=zeros(m*n,20);%20表示时间序列长度
% 导入每年的数据
for year=2001:2020
     tem=importdata(['I:\裁剪气温\',int2str(year),'tm.tif']) ; %根据自己名称修改,本数据名称为2001-tem.tif
     pre=importdata(['I:\裁剪降水\',int2str(year),'pre.tif']) ; %根据自己名称修改,本数据名称为2001-pre.tif
     NDVI=importdata(['I:\裁剪NDVI\',int2str(year),'yndvi.tif']) ; %根据自己名称修改,本数据名称为'2001-NDVI.tif'
     %注意数据的有效范围
     tem(tem<-1000)=NaN;%温度有效范围
     pre(pre<0)=NaN;%有效范围大于0
     NDVI(NDVI<-1)=NaN; %有效范围是-1到1
     %累加时间序列数据
     temsum(:,year-2001+1)=reshape(tem,m*n,1);%在累加时间序列数据时,我们使用 year - 2001 + 1 来计算列索引,这样可以确保索引从1开始,而不是从0开始。
     presum(:,year-2001+1)=reshape(pre,m*n,1);% 降水数据重塑为列向量
     NDVIsum(:,year-2001+1)=reshape(NDVI,m*n,1);
  
end
%多元回归,ndvi=a+b*pre+c*tem
% 初始化存储回归结果的矩阵
intercept = zeros(m, n) + NaN;
pre_slope = zeros(m, n) + NaN;
tem_slope = zeros(m, n) + NaN;
pz = zeros(m, n) + NaN;
r2 = zeros(m, n) + NaN; % 初始化 R^2 矩阵
for i = 1:m * n
    % 提取特定位置的时间序列数据
    pre = presum(i, :);
    tem = temsum(i, :);
    NDVI = NDVIsum(i, :);
    
    % 检查降水数据是否有效
    if min(pre) >= 0
        % 将列向量转换为行向量
        pre = pre(:);
        tem = tem(:);
        NDVI = NDVI(:);
        % 构建设计矩阵 X
        X = [ones(size(NDVI, 1), 1), tem, pre];
        
        % 进行多元线性回归
        [b, ~, r, rint, stats] = regress(NDVI, X);
        
        % 存储回归结果
        intercept(i) = b(1);
        pre_slope(i) = b(3);
        tem_slope(i) = b(2);
        pz(i) = stats(3);
        r2(i) = stats(1);
    end
end

% 定义输出文件夹路径
outputFolder = 'I:\多元线性回归\';
if ~exist(outputFolder, 'dir')
    mkdir(outputFolder);
end

% 保存回归系数、显著性和截距到 GeoTIFF 文件
filenames = {
    'Intercept.tif';
    'Precipitation_Slope.tif';
    'Temperature_Slope.tif';
    'Equation_Significance.tif';
    'Model_R2.tif'
};
for i = 1:length(filenames)
    filename = fullfile(outputFolder, filenames{i});
    
    % 根据文件名提取相应的变量
    switch filenames{i}
        case 'Intercept.tif'
            variable = intercept;
        case 'Precipitation_Slope.tif'
            variable = pre_slope;
        case 'Temperature_Slope.tif'
            variable = tem_slope;
        case 'Equation_Significance.tif'
            variable = pz;
        case 'Model_R2.tif'
            variable = r2;
    end
    % 保存变量到 GeoTIFF 文件
    geotiffwrite(filename, variable, R, 'GeoKeyDirectoryTag', info.GeoTIFFTags.GeoKeyDirectoryTag);
end
% 应用显著性检验并保存显著的结果
pz(pz > 0.05) = NaN;
intercept(pz > 0.05) = NaN;
pre_slope(pz > 0.05) = NaN;
tem_slope(pz > 0.05) = NaN;
r2(pz > 0.05) = NaN;
% 再次保存显著性检验后的回归结果
for i = 1:length(filenames)
    filename = fullfile(outputFolder, filenames{i});
    
    % 根据文件名提取相应的变量
    switch filenames{i}
        case 'Intercept.tif'
            variable = intercept;
        case 'Precipitation_Slope.tif'
            variable = pre_slope;
        case 'Temperature_Slope.tif'
            variable = tem_slope;
        case 'Equation_Significance.tif'
            variable = pz;
        case 'Model_R2.tif'
            variable = r2;
    end
    
    % 保存变量到 GeoTIFF 文件
    geotiffwrite(filename, variable, R, 'GeoKeyDirectoryTag', info.GeoTIFFTags.GeoKeyDirectoryTag);
end

 

gpt改的代码 顺利运行啦!

栅格是种将空间划分为网格或像素的方法,而基于栅格的多元线性回归种利用栅格数据进行多元线性回归分析的方法。在这种方法中,我们将空间划分为系列栅格单元,每个栅格单元代表个地理区域或位置。然后,我们收集每个栅格单元内的特征数据和响应变量数据,并建立多元线性回归模型来预测响应变量。 具体而言,基于栅格的多元线性回归可以通过以下步骤进行: 1. 数据收集:收集每个栅格单元内的特征数据和响应变量数据。这些数据可以是连续型或离散型变量。 2. 数据预处理:对数据进行清洗、缺失值处理和异常值处理等预处理步骤,以确保数据的质量和准确性。 3. 特征工程:根据问题的需求和领域知识,对特征进行选择、转换或构造,以提取有用的信息,并减少特征维度或增加非线性度。 4. 栅格化:将地理空间划分为栅格单元,并将特征数据和响应变量数据相应的栅格单元关联起来。 5. 模型建立:利用多元线性回归算法,建立个预测模型,其中栅格单元的特征数据作为自变量,响应变量数据作为因变量。 6. 模型评估:使用适当的评估指标(如均方误差、决定系数等),对模型进行评估,以评估模型的性能和准确性。 7. 预测和应用:利用训练好的模型,对新的栅格数据进行预测,并将结果应用于相关领域的决策或问题解决。 基于栅格的多元线性回归方法可以在地理信息系统(GIS)、遥感影像处理、环境科学等领域中得到广泛应用,以分析和预测各种地理现象和过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值