【Matlab】 長時間序列殘差分析

2021-02-20 夫也的筆記

01

殘差分析就是通過殘差所提供的信息,分析出數據的可靠性、周期性或其它幹擾 。用於分析模型的假定正確與否的方法。所謂殘差是指觀測值與預測值(擬合值)之間的差,即是實際觀察值與回歸估計值的差。在回歸分析中,測定值與按回歸方程預測的值之差,以δ表示。殘差δ遵從正態分布N(0,σ2)。(δ-殘差的均值)/殘差的標準差,稱為標準化殘差,以δ*表示。δ*遵從標準正態分布N(0,1)。實驗點的標準化殘差落在(-2,2)區間以外的概率≤0.05。若某一實驗點的標準化殘差落在(-2,2)區間以外,可在95%置信度將其判為異常實驗點,不參與回歸線擬合。顯然,有多少對數據,就有多少個殘差。

02

本文在matlab平臺下對NDVI進行殘差分析,選取的自變量是降水和溫度。代碼如下所示,能夠獲取殘差的空間分布及殘差趨勢以及統計得到的研究區每年的殘差值。

[aa,R]=geotiffread('D:\NDVI\2000anveage_ndvi.tif');%投影信息info=geotiffinfo('D:\NDVI\2000anveage_ndvi.tif');[m,n]=size(aa);
begin_year=2000;%用戶修改end_year=2017;%用戶修改long=end_year-begin_year+1;temsum=zeros(m*n,long);presum=zeros(m*n,long);ndvisum=zeros(m*n,long);k=1;for year=begin_year:end_year      temp=importdata(['D:\NDVI\',int2str(year),'TEMP.tif']) ; %根據自己名稱修改,本數據名稱為2000TEMP.tif     pre=importdata(['D:\NDVI\',int2str(year),'PRE.tif']) ; %根據自己名稱修改,本數據名稱為2000PRE.tif     ndvi=importdata(['D:\NDVI\',int2str(year),'anveage_ndvi.tif']) ; %根據自己名稱修改,本數據名稱為'anveage_ndvi.tif' %注意數據的有效範圍 temp(temp<-1000)=NaN;%溫度有效範圍 pre(pre<0)=NaN;%有效範圍大於0 ndvi(ndvi<-1)=NaN; %有效範圍是-1到1 temsum(:,k)=reshape(temp,m*n,1); presum(:,k)=reshape(pre,m*n,1); ndvisum(:,k)=reshape(ndvi,m*n,1); k=k+1;end%多元回歸,ndvi=a*pre+b*temcc=zeros(m,n)+NaN;ccsum=zeros(m*n,long)+NaN;for i=1:m*n pre=presum(i,:)'; if min(pre)>=0 %進行篩選有效範圍 ndvi=ndvisum(i,:)'; tem=temsum(i,:)'; X=[ones(size(ndvi)),tem,pre]; [b,bint,r,rint,stats] = regress(ndvi,X); cc1=ndvi-b(1)-b(2).*tem-b(3).*pre; cc1=cc1'; ccsum(i,:)=cc1; cc1=cc1'; X=[ones(size(ndvi)),[1:long]']; [b,bint,r,rint,stats] = regress(cc1,X); cc(i)=b(2); endendfilename=['D:\NDVI\2000-2017年殘差的趨勢.tif'];geotiffwrite(filename,cc,R,'GeoKeyDirectoryTag',info.GeoTIFFTags.GeoKeyDirectoryTag)data2sum=[];for i=1:long data1=ccsum(:,i); data2=mean(~isnan(data1)); data2sum=[data2sum;data2]; data1=reshape(data1,m,n);    filename=['D:\NDVI\殘差',int2str(i-1+begin_year),'.tif']; geotiffwrite(filename,data1,R,'GeoKeyDirectoryTag',info.GeoTIFFTags.GeoKeyDirectoryTag)enddata2sum=[[begin_year:end_year]',data2sum];xlswrite('D:\NDVI\每年的殘差均值.xlsx',data2sum)


歡迎關注、轉發、點讚、打賞

相關焦點

  • 使用 matlab 進行傅立葉分析和濾波
    公式法下例 是將振幅為1的5Hz正弦波和振幅為0.5的10Hz正弦波相加之後進行傅立葉分析。下例 是將振幅為1的5Hz正弦波和振幅為0.5的10Hz正弦波相加之後進行傅立葉分析。%繪圖subplot(2,1,1),plot(t,x,'LineWidth',2);title('原始信號'),xlabel('時間/s');subplot(2,1,2),plot(tt,xx,'LineWidth',2);title('濾波後的信號'),xlabel('時間/s');結果如下圖
  • matlab下實現FFT信號分析
    奈奎斯特定理:對於信號分析
  • 用matlab對信號進行傅立葉變換
    傅氏變換分析是信號分析中很重要的方法,藉助matlab可以很方便的對各類信號進行傅氏頻域分析。
  • 原創案例:Matlab多元線性回歸分析-逐步回歸
    在多元線性回歸分析中,逐步回歸法是對多個變量進行分析的有效方法。在Matlab中,函數stepwise的功能就是對需要分析的變量進行逐步回歸,最後得出回歸方程各個擬合信息。Stepwise的簡單用法是stepwize(X,Y),X是由若干個自變量列向量組成的矩陣,Y是由因變量構成的列向量。
  • 誤差分析指標計算之matlab實現
    感謝關注matlab愛好者公眾號!如果公眾號文章對您有幫助,別忘了點擊分享和「在看」哦!
  • 如何用Matlab/Python/Stata做簡單回歸分析
    %adjusted R-squared: Ra=1-((1/(N-k))*(e'*e))/((1/(N-1))*(Y-mean(Y))'*(Y-mean(Y))) Matlab導入文件的格式是*.dat文件,而實現回歸的過程其實是基於矩陣的計算:第一段使用的median/mean/corrcoef都是matlab
  • Matlab:不定積分和定積分
    matlab中使用int()來計算一個積分。不定積分首先,通過符號變量創建一個符號函數,然後調用積分命令來計算函數的積分,示例如下:注意:matlab中計算的不定積分結果中沒有寫上常數C,讀者需要自己在使用的時候記得加上常數部分。
  • 如何用matlab對信號進行傅立葉變換
    傅氏變換分析是信號分析中很重要的方法,藉助matlab可以很方便的對各類信號進行傅氏頻域分析。
  • matlab中的spectrogram函數對信號做短時傅立葉分析
    對於大多數信號而言, 傅立葉分析絕對是非常有用的,因為頻率分析在大多數情況下都非常重要。 那麼為什麼我們還需要研究短時傅立葉變換呢(STFT)?原因是因為傅立葉分析有一個非常嚴重的缺點, 在將信號從時間域變換到頻率域去的時候,把時間信息丟失了。 當我們在用傅立葉變化去分析一個具體信號的時候, 我們不知道哪個頻率是對應在哪個時間點出現的,在哪個時間點消失的。
  • matlab符號微積分及應用舉例
    https://blog.csdn.net/guyuealian/article/details/53997490符號函數的積分函數積分主要分為定積分和不定積分兩類,matlab 分析(1):由於題設並沒有給出河寬與水深的函數關係,而只給出了一些相關數據,因此,首先要擬合出河床曲線,依據擬合函數,然後進行定積分,計算出河流橫截面,即可估計流量。
  • matlab矩陣及其運算(三)
    大家好,感謝大家對matlab愛好者公眾號的厚愛!
  • 用matlab對信號進行傅立葉變換的入門實例
    來源:博客園-走豈來的博客傅氏變換分析是信號分析中很重要的方法,藉助matlab可以很方便的對各類信號進行傅氏頻域分析
  • matlab中的成型濾波器設計
    matlab 中成型濾波器設計有好幾個函數:rcosineFd=9600;Fs=38.4e3;[num,den] = rcosine(Fd,Fs,'sqrt',0.25);freqz(num);其中的Fd表示輸入數據的採樣率
  • MATLAB R2020a中文破解版 附安裝破解教程
    該軟體常用於機器人、數據分析、無線通信、深度學習、信號處理、計算機視覺等眾多領域之中,深厚上百萬科學家和工程師的信賴,提供了科學數據可視化、矩陣計算、數值分析、繪製函數、數據圖像、實時編輯器等實用的功能於一體,能夠幫助設計人員更快更好的完成設計上的工作,還支持C、C++、Python編寫的程序接口,並能在上述程式語言中設計和構建用戶界面。
  • 科研作圖之光譜圖繪製(matlab版)
    感謝關注matlab愛好者公眾號!如果公眾號文章對您有幫助,別忘了點擊分享和「在看」哦!
  • MATLAB基礎教程-臺大郭彥甫-學習筆記6
    today:1.basic plotting2.graphical objects propertiesbasicsmatlabplotting engine that can generate a wide variety of plotsplot from 『『data』』1.matlab
  • 基於MATLAB軟體心跳呼吸模型建立與仿真設計
    本文引用地址:http://www.eepw.com.cn/article/201706/350205.htm  1 生命信號特徵分析  生命信號的規律性主要體現在心跳和呼吸的速率都很低。那麼,由以上設定參數並通過matlab軟體所得出的心跳呼吸時域模型如圖1所示。
  • matlab矩陣及其運算(五)
    感謝大家對matlab愛好者公眾號的關注!如果公眾號文章對您有幫助,別忘了點擊分享和「在看」哦!
  • 快速傅立葉變換FFT在MATLAB中的實現
    來源:聲振測試微信公眾號,作者:於長帥。首先,為什麼要進行傅立葉變換?
  • 三門問題及matlab仿真驗證
    今天看到一個問題——三門問題,感覺挺有趣的,自己也親自上手利用matlab仿真模擬了一下,分享給大家。【三門問題】三門問題出自美國的電視遊戲節目Let's Make a Deal,因為是由一個叫蒙提霍爾的人提出的,所以也叫蒙提霍爾問題。