Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MATLAB求取空间数据的变异函数并绘制经验半方差图

MATLAB求取空间数据的变异函数并绘制经验半方差图

作者头像
疯狂学习GIS
发布于 2023-09-24 01:17:06
发布于 2023-09-24 01:17:06
38700
代码可运行
举报
文章被收录于专栏:疯狂学习GIS疯狂学习GIS
运行总次数:0
代码可运行

  本文介绍基于MATLAB求取空间数据的变异函数,并绘制经验半方差图的方法。

  在地统计基本概念:克里格插值、平稳假设、变异函数、基台、线性无偏最优等中,我们详细介绍了地学计算的几个基本概念,并对其数学推导公式加以了梳理。接下来,我将通过几篇新的专题博客,对地学计算相关的代码、操作加以实践与详细讲解。本篇博客便是第一篇——基于MATLAB的空间数据变异函数计算与经验半方差图绘制

  另一方面,由于上述博客所涉及的相关理论概念较为抽象,往往需要结合实践才可以更好理解,因此大家可以将上述博客与本篇及后期的其它地学计算博客一同来看,可以更好理解相关理论的含义。

  其中,由于本文所用的数据并不是我的,因此遗憾不能将数据一并展示给大家;但是依据本篇博客的思想与对代码的详细解释,大家用自己的数据,可以将空间数据变异函数计算与经验半方差图绘制的全部过程与分析方法加以完整重现。

1 数据处理

1.1 数据读取

  本文中,我的初始数据为某区域658个土壤采样点的空间位置XY,单位为)、pH值有机质含量全氮含量。这些数据均存储于data.xls文件中;而后期操作多于MATLAB软件中进行。因此,首先需将源数据选择性地导入MATLAB软件中。

  利用MATLAB软件中xlsread函数可以实现这一功能。具体代码附于本文的1.3 正态分布检验及转换处。

1.2 异常数据剔除

  得到的采样点数据由于采样记录、实验室测试等过程,可能具有一定误差,从而出现个别异常值。选用平均值加标准差法对这些异常数据加以筛选、剔除。

  分别利用平均值加标准差法中“2S”与“3S”方法加以处理,发现“2S”方法处理效果相对后者较好,故后续实验取“2S”方法处理结果继续进行。

  其中,“2S”方法是指将数值大于或小于平均值±2倍标准差的部分视作异常值,“3S”方法则是指将数值大于或小于平均值±3倍标准差的部分视作异常值。

  得到异常值后,将其从658个采样点中剔除;剩余的采样点数据继续后续操作。

  本部分具体代码附于1.3 正态分布检验及转换处。

1.3 正态分布检验及转换

  计算变异函数需建立在初始数据符合正态分布的假设之上;而采样点数据并不一定符合正态分布。因此,我们需要对原始数据加以正态分布检验。

  一般地,正态分布检验可以通过数值检验直方图QQ图等图像加以直观判断。本文综合采取以上两种数值、图像检验方法,共同判断正态分布特性。

  针对数值检验方法,我在一开始准备选择采用Kolmogorov-Smirnov检验方法;但由于了解到,这一方法仅仅适用于标准正态检验,因此随后改用Lilliefors检验

Kolmogorov-Smirnov检验通过样本的经验分布函数与给定分布函数的比较,推断该样本是否来自给定分布函数的总体;当其用于正态性检验时只能做标准正态检验。

Lilliefors检验则将上述Kolmogorov-Smirnov检验改进,其可用于一般的正态分布检验。

QQ图(Quantile Quantile Plot)是一种散点图,其横坐标表示某一样本数据的分位数,纵坐标则表示另一样本数据的分位数;横坐标与纵坐标组成的散点图代表同一个累计概率所对应的分位数。

  因此,QQ图具有这样的特点:针对y=x这一直线,若散点图中各点均在直线附近分布,则说明两个样本为同等分布;因此,若将横坐标(纵坐标)表示为一个标准正态分布样本的分位数,则散点图中各点均在上述直线附近分布可以说明,纵坐标(横坐标)表示的样本符合或基本近似符合正态分布。本文采用将横坐标表示为正态分布的方式。

  此外,PP图(Probability Probability Plot)同样可以用于正态分布的检验。PP图横坐标表示某一样本数据的累积概率,纵坐标则表示另一样本数据的累积概率;其根据变量的累积概率对应于所指定的理论分布累积概率并绘制的散点图,用于直观地检测样本数据是否符合某一概率分布。和QQ图类似,如果被检验的数据符合所指定的分布,则其各点均在上述直线附近分布。若将横坐标(纵坐标)表示为一个标准正态分布样本的分位数,则散点图中各点均在直线附近分布可以说明,纵坐标(横坐标)表示的样本符合或基本近似符合正态分布。

  三种土壤属性,我选择首先以pH数值为例进行操作。通过上述数值检验、图像检验方法,检验得到剔除异常值后的原始pH数值数据并不符合正态分布这一结论。因此,尝试对原数据加以对数开平方等转换处理;随后发现,原始pH值开平方数据的正态分布特征虽然依旧无法通过较为严格的Lilliefors检验,但其直方图、QQ图的图像检验结果较为接近正态分布,并较之前二者更加明显。故后续取开平方处理结果继续进行。

  值得一提的是,本文后半部分得到pH值开平方数据的实验变异函数及其散点图后,在对其余两种空间属性数据(即有机质含量与全氮含量)进行同样的操作时,发现全氮含量数据在经过“2S”方法剔除异常值后,其原始形式的数据是可以通过Lilliefors检验的,且其直方图、QQ图分布特点十分接近正态分布。

  我亦准备尝试对空间属性数据进行反正弦转换。但随后发现,已有三种属性数值的原始数据并不严格分布在-11的区间内,因此并未对其进行反正弦方式的转换。

  经过上述检验、转换处理过后的图像检验结果如下所示。

  以上部分代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 距离量算

  接下来,需要对筛选出的采样点相互之间的距离加以量算。这是一个复杂的过程,需要借助循环语句。

  本部分具体代码如下。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 距离分组

  计算得到全部采样点相互之间的距离后,我们需要依据一定的范围划定原则,对距离数值加以分组。

  距离分组首先需要确定步长。经过实验发现,若将步长选取过大会导致得到的散点图精度较低,而若步长选取过小则可能会使得每组点对总数量较少。因此,这里取步长为500米;其次确定最大滞后距,这里以全部采样点间最大距离的一半为其值。随后计算各组对应的滞后级别、各组上下界范围等。

  本部分具体代码附于本文4 平均距离、半方差计算及其绘图处。

4 平均距离、半方差计算及其绘图

  分别计算各个组内对应的点对个数、点对间距离总和以及点对间属性值差值总和等。随后,依据上述参数,最终求出点对间距离平均值以及点对间属性值差值平均值。

  依据各组对应点对间距离平均值为横轴,各组对应点对间属性值差值平均值为纵轴,绘制出经验半方差图。

  本部分及上述部分具体代码如下。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 绘图结果

  通过上述过程,得到pH值开平方后的实验变异函数折线图及散点图。

  可以看到,pH值开平方后的实验变异函数较符合于有基台值的球状模型或指数模型。函数数值在距离为08000米区间内快速上升,在距离为8000米后数值上升放缓,变程为25000米左右;即其“先快速上升,再增速减缓,后趋于平稳”的图像整体趋势较为明显。但其数值整体表现较低——块金常数为0.004左右,而基台值仅为0.013左右。为验证数值正确性,同样对有机质全氮进行上述全程操作。

  得到二者对应变异函数折线图与散点图。

  由以上三组、共计六幅的pH值开平方、有机质全氮对应的实验变异函数折线图与散点图可知,不同数值对应实验变异函数数值的数量级亦会有所不同;但其整体“先快速上升,再增速减缓,后趋于平稳”的图像整体趋势是十分一致的。

  此外,如上文所提到的,针对三种空间属性数据(pH值有机质含量全氮含量)中最符合正态分布,亦是三种属性数据各三种(原始值、取对数与开平方)、共九种数据状态中唯一一个通过Lilliefors正态分布检验的数值——全氮含量经过异常值剔除后的原始值,将其正态分布的图像检验结果特展示如下。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-23 22:00,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 疯狂学习GIS 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
全局多项式(趋势面)法与逆距离加权(IDW)法插值的MATLAB实现
  本文介绍基于MATLAB实现全局多项式插值法与逆距离加权法的空间插值的方法,并对不同插值方法结果加以对比分析。
疯狂学习GIS
2023/09/25
5800
全局多项式(趋势面)法与逆距离加权(IDW)法插值的MATLAB实现
ArcGIS空间插值:回归克里格与普通克里格方法
  本文介绍基于ArcMap软件,实现普通克里格、回归克里格方法的空间插值的具体操作。
疯狂学习GIS
2023/09/27
1.7K0
ArcGIS空间插值:回归克里格与普通克里格方法
【MATLAB 从零到进阶】day11 描述性统计
均值mean 方差var和标准差std 最值max/min 极差range 中位数median 分位数quantile/prctile 众数mode 变异系数std/mean k阶原点矩 mean(score.^2) k阶中心距moment(score,k) 偏度skewness 峰度kurtosis
统计学家
2019/04/10
1.6K0
【MATLAB 从零到进阶】day11 描述性统计
概率论之正态分布密度函数与matlab
众所周知,在这个数学建模的这个过程之中会遇到很多的这个概率论的相关的问题,之前分享过这个假设性检验的这个相关内容,但是那个只是沧海一粟,概率论和数理统计的很多内容都是偏向于理论的,这让原本就是复杂的知识更是雪上加霜,这也让这个概率论成为很多人成长道路上面的这个拦路虎;
阑梦清川
2025/02/24
930
概率论之正态分布密度函数与matlab
机器学习数学基础:数理统计与描述性统计
所谓机器学习和深度学习, 背后的逻辑都是数学, 所以数学基础在这个领域非常关键, 而统计学又是重中之重, 机器学习从某种意义上来说就是一种统计学习。
Datawhale
2020/07/02
1.7K0
机器学习数学基础:数理统计与描述性统计
数据分析之正态分布检验及python实现
正态分布(Normal distribution),也称“常态分布”,又名高斯分布(Gaussian distribution),最早由A.棣莫弗在求二项分布的渐近公式中得到。C.F.高斯在研究测量误差时从另一个角度导出了它。P.S.拉普拉斯和高斯研究了它的性质。是一个在数学、物理及工程等领域都非常重要的概率分布,在统计学的许多方面有着重大的影响力。
润森
2022/08/18
1.8K0
数据分析之正态分布检验及python实现
Python数据分析之数据探索分析(EDA)
何为EDA,何谓探索性数据分析?英文名为Exploratory Data Analysis,是在你拿到数据集后,并不能预知能从数据集中找到什么,但又需要了解数据的基本情况,为了后续更好地预处理数据、特征工程乃至模型建立。因此探索性数据分析,对了解数据集、了解变量之间对相互关系以及变量与预测值之间的关系尤其重要。
数据STUDIO
2021/06/24
3.9K0
【数据可视化包Matplotlib】Matplotlib基本绘图方法
根据 Matplotlib 图像的4层图像结构,pyplot 模块绘制图形基本都遵循一个流程,使用这个流程可以完成大部分图形的绘制。pyplot 模块基本绘图流程主要分为3个部分,如下图所示。
Francek Chen
2025/01/22
2910
【数据可视化包Matplotlib】Matplotlib基本绘图方法
单变量图的类型与直方图绘图基础
单变量图(chart for one variable)是指使用数据组的一个变量进行相应图的绘制。想要可视化这个变量,就需要根据不同的数据变量类型绘制图。数据变量分为连续变量(continuous variable)和离散型变量(discrete variable)。
timerring
2023/10/13
7100
单变量图的类型与直方图绘图基础
一文详尽系列之模型评估指标
在机器学习领域通常会根据实际的业务场景拟定相应的不同的业务指标,针对不同机器学习问题如回归、分类、排序,其评估指标也会不同。
Datawhale
2019/11/27
1.7K0
R语言笔记完整版[通俗易懂]
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说R语言笔记完整版[通俗易懂],希望能够帮助大家进步!!!
Java架构师必看
2022/02/08
4.6K0
R语言笔记完整版[通俗易懂]
【ML】一文详尽系列之模型评估指标
在机器学习领域通常会根据实际的业务场景拟定相应的不同的业务指标,针对不同机器学习问题如回归、分类、排序,其评估指标也会不同。
yuquanle
2019/12/02
8990
《python数据分析与挖掘实战》笔记第3章
数据质量分析是数据挖掘中数据准备过程的重要一环,是数据预处理的前提,也是数据挖掘分析结论有效性和准确性的基础,没有可信的数据,数据挖掘构建的模型将是空中楼阁。
周小董
2021/03/03
2.3K0
【机器学习数据预处理】数据准备
  如果机器学习中用于分析的基础数据有问题,那么基于这些数据分析得到的结论也会变得不可靠。因为对于机器学习而言,只有使用一份高质量的基础数据,才能得到正确、有用的结论,所以有必要进行数据质量校验。数据质量校验的主要任务是检查原始数据中是否存在噪声数据,常见的噪声数据包括不一致的值、缺失值和异常值。
Francek Chen
2025/01/23
2510
【机器学习数据预处理】数据准备
python数据分析——在数据分析中有关概率论的知识
参数和统计量在数据分析中起着至关重要的作用。参数是对总体特征的描述,如均值、方差等,而统计量则是基于样本数据计算得出的,用于估计或推断总体参数的值。
鲜于言悠
2024/03/20
2760
python数据分析——在数据分析中有关概率论的知识
【Excel系列】Excel数据分析:抽样设计
一、随机数发生器 1. 随机数发生器主要功能 “随机数发生器”分析工具可用几个分布之一产生的独立随机数来填充某个区域。可以通过概率分布来表示总体中的主体特征。例如,可以使用正态分布来表示人体身高的总
数据科学社区
2018/02/02
3.8K0
【Excel系列】Excel数据分析:抽样设计
数据特征分析
“原因和结果、投入和产出、努力和报酬之间本来存在着无法解释的不平衡。一般来说,投入和努力可以分为两种不同的类型: 多数,它们只能造成少许的影响;少数,它们造成主要的、重大的影响。” → 一个公司,80%利润来自于20%的畅销产品,而其他80%的产品只产生了20%的利润
用户3577892
2020/07/09
1.2K0
数据特征分析
基于matlab的方差分析_方差分析结果怎么看
更多MATLAB数据分析视频请点击,或者在网易云课堂上搜索《MATLAB数据分析与统计》 http://study.163.com/course/courseMain.htm?courseId=100
全栈程序员站长
2022/11/04
1.4K0
基于matlab的方差分析_方差分析结果怎么看
回归分析详解及matlab实现
当人们对研究对象的内在特性和各因素间的关系有比较充分的认识时,一般用机理分析方法建立数学模型。如果由于客观事物内部规律的复杂性及人们认识程度的限制,无法分析实际对象内在的因果关系,建立合乎机理规律的数学模型,那么通常的办法是搜集大量数据,基于对数据的统计分析去建立模型。本章讨论其中用途非常广泛的一类模型——统计回归模型。回归模型常用来解决预测、控制、生产工艺优化等问题。
全栈程序员站长
2022/11/17
2.2K0
Python学习笔记之Matplotlib模块入门(直线图、折线图、曲线图、散点图、柱状图、饼状图、直方图、等高线图和三维图的绘制)
Matplotlib 是一个Python的 2D绘图库。通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。 通过学习Matplotlib,可让数据可视化,更直观的真实给用户。使数据更加客观、更具有说服力。 Matplotlib是Python的库,又是开发中常用的库。
爱喝兽奶的熊孩子
2024/04/10
13.8K0
Python学习笔记之Matplotlib模块入门(直线图、折线图、曲线图、散点图、柱状图、饼状图、直方图、等高线图和三维图的绘制)
推荐阅读
相关推荐
全局多项式(趋势面)法与逆距离加权(IDW)法插值的MATLAB实现
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验