Sen+MK趋势分析
Sen+MK趋势分析
- 结果
- 原理
- 实现
- 非平稳时间序列突变检测 -- Bernaola Galvan分割算法
Sen 斜率估计用于计算趋势值,通常与MK非参数检验结合使用。即首先计算Sen趋势值,然后使用MK方法判断趋势显著性。
结果
去看原文
原理
Theil-Sen Median方法又被称为 Sen 斜率估计,是一种稳健的非参数统计的趋势计算方法。该方法计算效率高,对于测量误差和离群数据不敏感,常被用于长时间序列数据的趋势分析中。
β=mean(xj−xij−i),∀j>i\beta=mean(\frac{x_j-x_i}{j-i}),\forall{j>i}β=mean(j−ixj−xi),∀j>i
式中:xjx_jxj和xix_ixi为时间序列数据。β大于0表示时间序列呈现上升趋势;β小于0表示时间序列呈现下降趋势。
Mann-Kendall是一种非参数统计检验方法,最初由Mann在1945年提出,后由Kendall和Sneyers进一步完善,其优点是不需要测量值服从正态分布,也不要求趋势是线性的,并且不受缺失值和异常值的影响,在长时间序列数据的趋势显著检验中得到了十分广泛的应用。其统计检验方法如下:
对于时间序列 Xi,i=1,2,...i,...j,...,nX_i,i=1, 2, ...i, ...j, ..., nXi,i=1,2,...i,...j,...,n。定义标准化检验统计量 Z:
式中:xjx_jxj和xix_ixi为时间序列数据,nnn为数据个数;当n≥8n≥8n≥8时,检验统计量SSS近似为正态分布,其均值和方差如下:
在给定显著性水平α下,如果∣Z∣>Z1−α2|Z|>Z_{1-\frac{α}{2}}∣Z∣>Z1−2α,表明不存在趋势的假设被拒绝,时间序列数据存在明显的趋势变化。Z1−α2Z_{1-\frac{α}{2}}Z1−2α为在置信水平α下,标准正态函数分布表对应的值。当ZZZ的绝对值大于1.65、1.96和2.58时,表示趋势分别通过了信度为90%、95%和99%的显著性检验。
实现
Sen趋势值计算:
% @author geo_data_analysis@163.com
% 基于Sen的趋势值
[a,R]=geotiffread('C:\Users\ca\Desktop\sen+mk趋势分析\data\1982_mvc.tif');
info=geotiffinfo('C:\Users\ca\Desktop\sen+mk趋势分析\data\1982_mvc.tif');
[m,n]=size(a);
datasum=zeros(m*n,34)+NaN;
k=1;
for year=1982:2015 filename=['C:\Users\ca\Desktop\sen+mk趋势分析\data\',int2str(year),'_mvc.tif'];data=importdata(filename);data=reshape(data,m*n,1);datasum(:,k)=data;k=k+1;
end
% ...完整源码见原文
MK检验结果:
% @author geo_data_analysis@163.com
% MK趋势显著性检验
[a,R]=geotiffread('C:\Users\ca\Desktop\sen+mk趋势分析\data\1982_mvc.tif');
info=geotiffinfo('C:\Users\ca\Desktop\sen+mk趋势分析\data\1982_mvc.tif');
[m,n]=size(a);
cd=34;
datasum=zeros(m*n,cd)+NaN;
p=1;
for year=1982:2015 filename=['C:\Users\ca\Desktop\sen+mk趋势分析\data\',int2str(year),'_mvc.tif'];data=importdata(filename);data=reshape(data,m*n,1);datasum(:,p)=data; p=p+1;
end
% ...完整源码见原文
去看原文
非平稳时间序列突变检测 – Bernaola Galvan分割算法
非平稳时间序列突变检测 – Bernaola Galvan分割算法
原文有源码,更多内容,请关注地学分析与算法。
Sen+MK趋势分析相关推荐
- Sen+MK趋势分析(基于点数据)
1 回顾 最早分享过Sen+MK趋势分析,当时是基于栅格逐像元的处理,详细内容见第一篇分享. 很多时候也会遇到如下情况,分析的数据是站点的连续数据,然后想分析站点数据的趋势分析以及显著性检验. 2 样 ...
- 经验分享 | SEN+Mk趋势分析(matlab代码分享)
代码分享 方法介绍:Sen 斜率估计用于计算趋势值,通常与MK非参数检验结合使用.即首先计算Sen趋势值,然后使用MK方法判断趋势显著性 示例:1984-2018NDVI年最大值趋势分析 注意:在对N ...
- NDVI时间序列分析之Sen+MK分析全过程梳理
NDVI时间序列分析之Sen+MK分析全过程梳理 Sen斜率估计用于计算趋势值,通常与MK非参数检验结合使用,即先计算Sen趋势值,然后使用MK方法判断趋势显著性. 原理 Theil-Sen Medi ...
- matlab中NDVI趋势分析,【文献阅读笔记】Sen+MK NDVI趋势分析的一些问题
[文献阅读笔记]Sen+MK NDVI趋势分析的一些问题 引言 Sen+MK一般用于非参数的趋势估计,最开始用于水文学,计算河流流量的时间变化,后来被引入到多个学科中. Theil–Sen Media ...
- 基于matlab-arcgis用sen+mk求趋势分析和显著性分析
clc; clear; % 基于Sen的趋势值 [a,R]=geotiffread('C:\Users\smv16\Desktop\栅格数据\Wet-VPD-xianzhu\Wet-VPD\19801 ...
- 线性回归+MK趋势分析对1980-2020全球洪灾受灾情况进行分析
1.数据 40年的洪灾统计数据,包含八个相关因子: 2.线性回归 直接在excel里生成线性趋势线,用拟合函数作为线性函数: 3.MK趋势分析+泰森斜率MATLAB源码: MATLAB泰森斜率+MK趋 ...
- 对青藏高原进行MK趋势分析
1.参考文献 青藏高原的范围以青藏高原科学数据中心的TPBoundary_new (2021)矢量数据为准. 国家青藏高原科学数据中心https://data.tpdc.ac.cn/zh-hans/d ...
- 【趋势分析方法二】MATLAB实现改进M-K趋势分析
MATLAB实现改进M-K趋势分析 1 Modified Mann-Kendall检验 1.1 原理 1.2 MATLAB实现代码 2 案例 2.1 M-K趋势检验 2.2 MMK趋势检验 2.3 P ...
- Sen+MK长时间序列趋势性分析----基于python的代码实现
sen+mk python实现代码免费共享-----赶紧收藏吧 python开源社区公布了进行sen+mk趋势性检验的官方包,有关该官方包的主要内容详见:https://github.com/Code ...
最新文章
- EasyUi – 4.datagrid
- 使用nginx后如何在web应用中获取用户ip及原理解释
- 图像识别 43个模型
- 【HDU - 1542】Atlantis (线段树,扫描线)
- python 冒泡排序 时间复杂度
- Java-当前对象this
- 分解cad图纸的蜂鸟工具_知道这些CAD统计技巧,让你计算事半功倍!
- 【kafka】kafka 控制台 消费 ip 却找 域名 报错 Can‘t resolve address UnresolvedAddressException
- 实现Kubernetes跨集群服务应用的高可用
- datagrid数据导出到excel文件给客户端下载的几种方法(转)
- CentOS下搭建docker+.net core
- SpringBoot(四):mybatis之通用mapper、分页插件PageHelper
- 7628刷breed_我的刷breed机方法 一步一图超详细
- windows副本不是正版怎么解决_黑屏、蓝屏、卡顿、死机怎么解决?教你免重装Windows解决问题...
- 2020.11.23Junit详解
- 天大18年c语言离线作业,2018春 Python语言程序设计(天津大学仁爱学院)-中国大学mooc-题库零氪...
- 幼儿园科学室创设特点
- Zookeeper主要应用场景
- Linux常用命令及快捷键
- 小资金超短线如何实现快速翻倍?