Matlab計算變異函數(shù)并繪制經(jīng)驗半方差圖詳解
本文介紹基于MATLAB求取空間數(shù)據(jù)的變異函數(shù),并繪制經(jīng)驗半方差圖的方法。
由于本文所用的數(shù)據(jù)并不是我的,因此遺憾不能將數(shù)據(jù)一并展示給大家;但是依據(jù)本篇博客的思想與對代碼的詳細解釋,大家用自己的數(shù)據(jù),可以將空間數(shù)據(jù)變異函數(shù)計算與經(jīng)驗半方差圖繪制的全部過程與分析方法加以完整重現(xiàn)。
1 數(shù)據(jù)處理
1.1 數(shù)據(jù)讀取
本文中,我的初始數(shù)據(jù)為某區(qū)域658
個土壤采樣點的空間位置(X與Y,單位為米)、pH值、有機質(zhì)含量與全氮含量。這些數(shù)據(jù)均存儲于data.xls
文件中;而后期操作多于MATLAB軟件中進行。因此,首先需將源數(shù)據(jù)選擇性地導入MATLAB軟件中。
利用MATLAB軟件中xlsread
函數(shù)可以實現(xiàn)這一功能。具體代碼附于本文的1.3 正態(tài)分布檢驗及轉(zhuǎn)換處。
1.2 異常數(shù)據(jù)剔除
得到的采樣點數(shù)據(jù)由于采樣記錄、實驗室測試等過程,可能具有一定誤差,從而出現(xiàn)個別異常值。選用平均值加標準差法對這些異常數(shù)據(jù)加以篩選、剔除。
分別利用平均值加標準差法中“2S”與“3S”方法加以處理,發(fā)現(xiàn)“2S”方法處理效果相對后者較好,故后續(xù)實驗取“2S”方法處理結(jié)果繼續(xù)進行。
其中,“2S”方法是指將數(shù)值大于或小于其平均值±2倍標準差的部分視作異常值,“3S”方法則是指將數(shù)值大于或小于其平均值±3倍標準差的部分視作異常值。
得到異常值后,將其從658
個采樣點中剔除;剩余的采樣點數(shù)據(jù)繼續(xù)后續(xù)操作。
本部分具體代碼附于1.3 正態(tài)分布檢驗及轉(zhuǎn)換處。
1.3 正態(tài)分布檢驗及轉(zhuǎn)換
計算變異函數(shù)需建立在初始數(shù)據(jù)符合正態(tài)分布的假設(shè)之上;而采樣點數(shù)據(jù)并不一定符合正態(tài)分布。因此,我們需要對原始數(shù)據(jù)加以正態(tài)分布檢驗。
一般地,正態(tài)分布檢驗可以通過數(shù)值檢驗與直方圖、QQ圖等圖像加以直觀判斷。本文綜合采取以上兩種數(shù)值、圖像檢驗方法,共同判斷正態(tài)分布特性。
針對數(shù)值檢驗方法,我在一開始準備選擇采用Kolmogorov-Smirnov檢驗方法;但由于了解到,這一方法僅僅適用于標準正態(tài)檢驗,因此隨后改用Lilliefors檢驗。
Kolmogorov-Smirnov檢驗通過樣本的經(jīng)驗分布函數(shù)與給定分布函數(shù)的比較,推斷該樣本是否來自給定分布函數(shù)的總體;當其用于正態(tài)性檢驗時只能做標準正態(tài)檢驗。
Lilliefors檢驗則將上述Kolmogorov-Smirnov檢驗改進,其可用于一般的正態(tài)分布檢驗。
QQ圖(Quantile Quantile Plot)是一種散點圖,其橫坐標表示某一樣本數(shù)據(jù)的分位數(shù),縱坐標則表示另一樣本數(shù)據(jù)的分位數(shù);橫坐標與縱坐標組成的散點圖代表同一個累計概率所對應的分位數(shù)。
因此,QQ圖具有這樣的特點:針對y=x
這一直線,若散點圖中各點均在直線附近分布,則說明兩個樣本為同等分布;因此,若將橫坐標(縱坐標)表示為一個標準正態(tài)分布樣本的分位數(shù),則散點圖中各點均在上述直線附近分布可以說明,縱坐標(橫坐標)表示的樣本符合或基本近似符合正態(tài)分布。本文采用將橫坐標表示為正態(tài)分布的方式。
此外,PP圖(Probability Probability Plot)同樣可以用于正態(tài)分布的檢驗。PP圖橫坐標表示某一樣本數(shù)據(jù)的累積概率,縱坐標則表示另一樣本數(shù)據(jù)的累積概率;其根據(jù)變量的累積概率對應于所指定的理論分布累積概率并繪制的散點圖,用于直觀地檢測樣本數(shù)據(jù)是否符合某一概率分布。和QQ圖類似,如果被檢驗的數(shù)據(jù)符合所指定的分布,則其各點均在上述直線附近分布。若將橫坐標(縱坐標)表示為一個標準正態(tài)分布樣本的分位數(shù),則散點圖中各點均在直線附近分布可以說明,縱坐標(橫坐標)表示的樣本符合或基本近似符合正態(tài)分布。
三種土壤屬性,我選擇首先以pH數(shù)值為例進行操作。通過上述數(shù)值檢驗、圖像檢驗方法,檢驗得到剔除異常值后的原始pH數(shù)值數(shù)據(jù)并不符合正態(tài)分布這一結(jié)論。因此,嘗試對原數(shù)據(jù)加以對數(shù)、開平方等轉(zhuǎn)換處理;隨后發(fā)現(xiàn),原始pH值開平方數(shù)據(jù)的正態(tài)分布特征雖然依舊無法通過較為嚴格的Lilliefors檢驗,但其直方圖、QQ圖的圖像檢驗結(jié)果較為接近正態(tài)分布,并較之前二者更加明顯。故后續(xù)取開平方處理結(jié)果繼續(xù)進行。
值得一提的是,本文后半部分得到pH值開平方數(shù)據(jù)的實驗變異函數(shù)及其散點圖后,在對其余兩種空間屬性數(shù)據(jù)(即有機質(zhì)含量與全氮含量)進行同樣的操作時,發(fā)現(xiàn)全氮含量數(shù)據(jù)在經(jīng)過“2S”方法剔除異常值后,其原始形式的數(shù)據(jù)是可以通過Lilliefors檢驗的,且其直方圖、QQ圖分布特點十分接近正態(tài)分布。
我亦準備嘗試對空間屬性數(shù)據(jù)進行反正弦轉(zhuǎn)換。但隨后發(fā)現(xiàn),已有三種屬性數(shù)值的原始數(shù)據(jù)并不嚴格分布在-1
至1
的區(qū)間內(nèi),因此并未對其進行反正弦方式的轉(zhuǎn)換。
經(jīng)過上述檢驗、轉(zhuǎn)換處理過后的圖像檢驗結(jié)果如下所示。
以上部分代碼如下:
clc;clear; info=xlsread('data.xls'); oPH=info(:,3); oOM=info(:,4); oTN=info(:,5); mPH=mean(oPH); sPH=std(oPH); num2=find(oPH>(mPH+2*sPH)|oPH<(mPH-2*sPH)); num3=find(oPH>(mPH+3*sPH)|oPH<(mPH-3*sPH)); PH=oPH; for i=1:length(num2) n=num2(i,1); PH(n,:)=[0]; end PH(all(PH==0,2),:)=[]; %KSTest(PH,0.05) H1=lillietest(PH); for i=1:length(PH) lPH(i,:)=log(PH(i,:)); end H2=lillietest(lPH); for i=1:length(PH) sqPH(i,:)=(PH(i,:))^0.5; end H3=lillietest(sqPH); % for i=1:length(PH) % arcPH(i,:)=asin(PH(i,:)); % end % % H4=lillietest(arcPH); subplot(2,3,1),histogram(PH),title("Distribution Histogram of pH"); subplot(2,3,2),histogram(lPH),title("Distribution Histogram of Natural Logarithm of pH"); subplot(2,3,3),histogram(sqPH),title("Distributio n Histogram of Square Root of pH"); subplot(2,3,4),qqplot(PH),title("Quantile Quantile Plot of pH"); subplot(2,3,5),qqplot(lPH),title("Quantile Quantile Plot of Natural Logarithm of pH"); subplot(2,3,6),qqplot(sqPH),title("Quantile Quantile Plot of Square Root of pH");
2 距離量算
接下來,需要對篩選出的采樣點相互之間的距離加以量算。這是一個復雜的過程,需要借助循環(huán)語句。
本部分具體代碼如下。
poX=info(:,1); poY=info(:,2); dis=zeros(length(PH),length(PH)); for i=1:length(PH) for j=i+1:length(PH) dis(i,j)=sqrt((poX(i,1)-poX(j,1))^2+(poY(i,1)-poY(j,1))^2); end end
3 距離分組
計算得到全部采樣點相互之間的距離后,我們需要依據(jù)一定的范圍劃定原則,對距離數(shù)值加以分組。
距離分組首先需要確定步長。經(jīng)過實驗發(fā)現(xiàn),若將步長選取過大會導致得到的散點圖精度較低,而若步長選取過小則可能會使得每組點對總數(shù)量較少。因此,這里取步長為500
米;其次確定最大滯后距,這里以全部采樣點間最大距離的一半為其值。隨后計算各組對應的滯后級別、各組上下界范圍等。
本部分具體代碼附于本文4 平均距離、半方差計算及其繪圖處。
4 平均距離、半方差計算及其繪圖
分別計算各個組內(nèi)對應的點對個數(shù)、點對間距離總和以及點對間屬性值差值總和等。隨后,依據(jù)上述參數(shù),最終求出點對間距離平均值以及點對間屬性值差值平均值。
依據(jù)各組對應點對間距離平均值為橫軸,各組對應點對間屬性值差值平均值為縱軸,繪制出經(jīng)驗半方差圖。
本部分及上述部分具體代碼如下。
madi=max(max(dis)); midi=min(min(dis(dis>0))); radi=madi-midi; ste=500; clnu=floor((madi/2)/ste)+1; ponu=zeros(clnu,1); todi=ponu; todiav=todi; diff=ponu; diffav=diff; for k=1:clnu midite=ste*(k-1); madite=ste*k; for i=1:length(sqPH) for j=i+1:length(sqPH) if dis(i,j)>midite && dis(i,j)<=madite ponu(k,1)=ponu(k,1)+1; todi(k,1)=todi(k,1)+dis(i,j); diff(k,1)=diff(k,1)+(sqPH(i)-sqPH(j))^2; end end end todiav(k,1)=todi(k,1)/ponu(k,1); diffav(k,1)=diff(k,1)/ponu(k,1)/2; end plot(todiav(:,1),diffav(:,1)),title("Empirical Semivariogram of Square Root of pH"); xlabel("Separation Distance (Metre)"),ylabel("Standardized Semivariance");
5 繪圖結(jié)果
通過上述過程,得到pH值開平方后的實驗變異函數(shù)折線圖及散點圖。
可以看到,pH值開平方后的實驗變異函數(shù)較符合于有基臺值的球狀模型或指數(shù)模型。函數(shù)數(shù)值在距離為0
至8000
米區(qū)間內(nèi)快速上升,在距離為8000
米后數(shù)值上升放緩,變程為25000
米左右;即其“先快速上升,再增速減緩,后趨于平穩(wěn)”的圖像整體趨勢較為明顯。但其數(shù)值整體表現(xiàn)較低——塊金常數(shù)為0.004
左右,而基臺值僅為0.013
左右。為驗證數(shù)值正確性,同樣對有機質(zhì)、全氮進行上述全程操作。
得到二者對應變異函數(shù)折線圖與散點圖。
由以上三組、共計六幅的pH值開平方、有機質(zhì)與全氮對應的實驗變異函數(shù)折線圖與散點圖可知,不同數(shù)值對應實驗變異函數(shù)數(shù)值的數(shù)量級亦會有所不同;但其整體“先快速上升,再增速減緩,后趨于平穩(wěn)”的圖像整體趨勢是十分一致的。
此外,如上文所提到的,針對三種空間屬性數(shù)據(jù)(pH值、有機質(zhì)含量與全氮含量)中最符合正態(tài)分布,亦是三種屬性數(shù)據(jù)各三種(原始值、取對數(shù)與開平方)、共九種數(shù)據(jù)狀態(tài)中唯一一個通過Lilliefors正態(tài)分布檢驗的數(shù)值——全氮含量經(jīng)過異常值剔除后的原始值,將其正態(tài)分布的圖像檢驗結(jié)果特展示如下。
至此,我們就完成了全部的操作、分析過程~
到此這篇關(guān)于Matlab計算變異函數(shù)并繪制經(jīng)驗半方差圖詳解的文章就介紹到這了,更多相關(guān)Matlab計算變異函數(shù) 繪制經(jīng)驗半方差圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解C語言中accept()函數(shù)和shutdown()函數(shù)的使用
這篇文章主要介紹了詳解C語言中accept()函數(shù)和shutdown()函數(shù)的使用,用來操作socket相關(guān)的網(wǎng)絡通信,需要的朋友可以參考下2015-09-09