当前位置:   article > 正文

毕设论文数据分析记录-part1:长时间序列的趋势分析_slope趋势分析

slope趋势分析

20220210-MK非参数检验

(刘烁楠. 变化环境下月水量平衡模型参数时变特征研究[D]. 2019.)

MK检验_哔哩哔哩_bilibili

通过UP主视频里的详细EXCEL过程,理解了MK具体的检验过程,以及各计算步骤;

B站视频学习(数理统计21-非参数检验初步_哔哩哔哩_bilibili 

 MK突变检验(为什么UF与UB交点代表突变点?):

MK突变检验_哔哩哔哩_bilibili

对于最后结果的显著性分析:

  • 检验分单侧和双侧,双侧有两个拒绝域两个临界值,即如果出现了>或者<的任意情况,就可以拒绝原假设;而单侧,就是当假设问题带有方向性,一些问题我们希望越大越好,比如灯泡的寿命等,另一些问题我们希望越小越好,比如废品率,这时候我们就要用单侧。单侧检验显著性水平0.05对应的标准正态分布的分位数为1.645,而双侧检验的标准正态分布的0.025分位数是1.96(双侧检验的p值和单侧检验_参数检验_云山雾村的博客-CSDN博客

20220211—MK趋势检验+Sen斜率分析:

参考以下博文(博文中详细的介绍了回归的相关方法,比如稳健回归):

MK趋势检验+Kendalls taub等级相关+稳健回归(Sens slope estimator等)_UCAS_Leon的博客-CSDN博客_森斜率 matlab实现MK计算Z值并且利用SEN回归方法计算斜率;源码(matlab实现m-k突变的,用matlab进行mk趋势分析与突变检验.pdf_weixin_39662721的博客-CSDN博客);自己在此基础上修改了一点点,有八十几个网格,所以多加了循环;

  1. zz=[];
  2. sss=[];
  3. for i=1:length(a1)
  4. y1=a1(i,:);
  5. y=y1(:);
  6. n=length(y);
  7. s=0;
  8. for j=1:n-1
  9. s= s + sum(sign(y(j+1:n) - y(j)));
  10. end
  11. vars=n*(n-1)*(2*n+5)/18;
  12. if s>0
  13. z=(s-1)/sqrt(vars);
  14. else
  15. z=(s+1)/sqrt(vars);
  16. end
  17. zz=[zz;z];
  18. ndash=n*(n -1)/2;
  19. slope1= zeros( ndash, 1 );
  20. m=0;
  21. for k = 1:n-1
  22. for l= k+1:n
  23. m=m+1;
  24. slope1(m) = ( y(l) - y(k) ) / (x(l) - x(k) ) ;
  25. end
  26. end
  27. slope= median( slope1 );
  28. sss=[sss;slope];
  29. end

 MK中的Z值计算出后,有**%的置信水平,大于0表明上升趋势显著,小于0表明下降趋势显著;利用SEN回归方法得到斜率后,上述Z值的显著性和斜率的显著性是否有关系?

一般的,如果通过拟合函数计算出斜率,进行拟合优度分析,matlab里的自带的线性拟合工具可以进行拟合并且计算R^2:

Matlab计算决定性系数(拟合优度)R2_jerry003的博客-CSDN博客_拟合优度r2

机器学习之性能度量指标——决定系数R^2、PR曲线、ROC曲线、AUC值、以及准确率、查全率、召回率、f1_score_大黄蜂Fighting的博客-CSDN博客_决定系数r

 对于用拟合函数求出的Y,拟合优度(决定系数)的具体代码:

  1. a1=a(2,:);
  2. a2=a1(:);
  3. p = polyfit(x,a2,1);
  4. f = polyval(p,x);
  5. up=(a2-f).^2;
  6. down=(a2-mean(a2)).^2;
  7. r2=1-( sum(up)/sum(down) );

和前述滑动平均法去除异常点影响后的数据结合,拟合后求R2: 

  1. e=[];
  2. d=[];
  3. r=[];
  4. for i=1:length(a)
  5. d1=smooth(a(i,:),3);
  6. d=[d d1];
  7. e1=polyfit(x,d1,1);
  8. e=[e e1(1)];
  9. f = polyval(e1,x);
  10. up=(d1-f).^2;
  11. down=(d1-mean(d1)).^2;
  12. r2=1-( sum(up)/sum(down) );
  13. r=[r r2];
  14. slope=e(:);
  15. r2_t=r(:);
  16. end

【变量之间有无关系——显著性检验:】

通过显著性检验检测科学实验中实验组与对照组之间是否有差异以及差异是否显著(参考以下博文:)1.什么是显著性检验? 2.为什么要做显著性检验? 3.怎么做显著性检验?_taoy86的博客-CSDN博客_显著性分析是为了说明什么问题

【Matlab进行方差检验:】

关于显著性检验,你想要的都在这儿了!!(基础篇)_weixin_33796205的博客-CSDN博客

20220212—MATLAB做箱型图

boxplot函数,借助官方网站查看帮助;

(boxplot(x) 创建 x 中数据的箱线图。如果 x 是向量,boxplot 绘制一个箱子。如果 x 是矩阵,boxplot 为 x 的每列绘制一个箱子。

在每个箱子上,中心标记表示中位数,箱子的底边和顶边分别表示第 25 个和 75 个百分位数。须线会延伸到不是离群值的最远端数据点,离群值会以 '+' 符号单独绘制。

boxplot(x,g) 使用 g 中包含的一个或多个分组变量创建箱线图。boxplot 为具有相同的一个或多个 g 值的各组 x 值创建一个单独的箱子

boxplot(ax,___) 使用坐标区图形对象 ax 指定的坐标区和任何上述语法创建箱线图。

boxplot(___,Name,Value) 使用由一个或多个 Name,Value 对组参数指定的附加选项创建箱线图。例如,您可以指定箱子样式或顺序)

绘图中(xlabel、ylabel、xticklabel等函数应用)

参考Matlab中指定坐标轴刻度值和标签_jk_101的博客-CSDN博客_matlab设置x轴刻度标签

MATLAB - 坐标显示范围、刻度、标签图例等设置_罗伯特祥的博客-CSDN博客_matlab 坐标轴刻度显示

  1. a=xlsread('gai-maizey.xls','gai-maizey');
  2. a1=a(:,4:28);
  3. figure
  4. axis normal
  5. subplot(2,1,1)
  6. boxplot(a1)
  7. xlabel('年份')
  8. ylabel('京津冀地区夏玉米单产(万吨/公顷)')
  9. title('京津冀地区夏玉米单产箱型图')
  10. set(gca,'xticklabel',{'1990','','','','','1995','','','','','2000','','','','','2005',...
  11. '','','','','2010','','','','2014'})

boxplot函数中,尝试了很多次,不能自己定义X轴绘制范围,不晓得为啥子?)

参考以下博主方法 :MATLAB绘图笔记——画箱形图_wokaowokaowokao12345的专栏-CSDN博客_matlab箱型图,也只是以标签的形式改变刻度所对应的值)

获取统计信息MATLAB绘图笔记——画箱形图_wokaowokaowokao12345的专栏-CSDN博客_matlab箱型图 

20220213—趋势分析图(GIS京津冀地区空间可视化&MATLAB总体25年的趋势)

  1. a=xlsread('to3_1989.10-2014.09.xlsx','total.mean');
  2. a1=a(2:85,:);
  3. b=[];
  4. for i=1:size(a1,2)
  5. mid=median(a1(:,i));
  6. b=[b;mid];
  7. end
  8. b2=polyfit(x,b,1);
  9. b22=polyval(b2,x);
  10. f=vpa(poly2sym(b2));
  11. figure
  12. axis normal
  13. subplot(2,1,1)
  14. boxplot(a1)
  15. hold on
  16. plot(x,b,'k*',x,b22,'r--');
  17. h=text(18,295,'$$y=333-0.37x$$','Interpreter','latex')
  18. xlabel('年份')
  19. ylabel('京津冀地区夏玉米单产(万吨/公顷)')
  20. title('京津冀地区夏玉米单产箱型图')
  21. set(gca,'xticklabel',{'1990','','','','','1995','','','','','2000','','','','','2005',...
  22. '','','','','2010','','','','2014'})

 

text函数的应用:(可参考以下博文)

【MATLAB】基本绘图 ( text 函数 | annotation 函数 | 绘制图像示例 )_让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 )-CSDN博客

 [mtalab学习记录03]matlab中输入LaTeX公式_没头脑nao的博客-CSDN博客

继续学习数理统计相关知识:
昨天(平均值、中位数、众数)

20220214—1990-2014年各月份趋势变化—某几个月份年变化趋势

  1. a=xlsread('to3_1989.10-2014.09.xlsx','Sheet1');
  2. j=[];f=[];mr=[];ap=[];my=[];ju=[];jy=[];au=[];sep=[];oct=[];nov=[];dec=[];
  3. for i=5:12:301
  4. j1=a(2:85,i);
  5. j1=median(j1)
  6. j=[j;j1];
  7. f1=a(2:85,i+1);
  8. f1=median(f1)
  9. f=[f;f1];
  10. mr1=a(2:85,i+2);
  11. mr1=median(mr1)
  12. mr=[mr;mr1];
  13. ap1=a(2:85,i+3);
  14. ap1=median(ap1)
  15. ap=[ap;ap1];
  16. my1=a(2:85,i+4);
  17. my1=median(my1)
  18. my=[my;my1];
  19. ju1=a(2:85,i+5);
  20. ju1=median(ju1)
  21. ju=[ju;ju1];
  22. jy1=a(2:85,i+6);
  23. jy1=median(jy1)
  24. jy=[jy;jy1];
  25. au1=a(2:85,i+7);
  26. au1=median(au1)
  27. au=[au;au1];
  28. sep1=a(2:85,i+8);
  29. sep1=median(sep1)
  30. sep=[sep;sep1];
  31. oct1=a(2:85,i-3);
  32. oct1=median(oct1)
  33. oct=[oct;oct1];
  34. dec1=a(2:85,i-2);
  35. dec1=median(dec1)
  36. dec=[dec;dec1];
  37. nov1=a(2:85,i-1);
  38. nov1=median(nov1);
  39. nov=[nov;nov1];
  40. end
  41. total=[j f mr ap my ju jy au sep oct nov dec];
  42. boxplot(total)
  43. xlabel('月份')
  44. ylabel('京津冀地区臭氧总柱浓度(Dobsons)')
  45. title('1990-2014期间各月份京津冀地区臭氧总柱浓度箱型图')
  46. 某几个月份年变化趋势
  47. b=xlsread('aod_1989.10-2014.09.xlsx','Sheet1');
  48. bb=b(2:end,2:end);
  49. bm666=[];bm777=[];bm888=[];bm999=[];
  50. for k=1:size(bb,1)
  51. b1=bb(k,:);
  52. bm6=[];bm7=[];bm8=[];bm9=[];
  53. for j=9:12:300
  54. bm66=b1(j);bm6=[bm6 bm66];
  55. bm77=b1(j+1);bm7=[bm7 bm77];
  56. bm88=b1(j+2);bm8=[bm8 bm88];
  57. bm99=b1(j+3);bm9=[bm9 bm99];
  58. end
  59. bm666=[bm666;bm6];bm777=[bm777;bm7];bm888=[bm888;bm8];bm999=[bm999;bm9];
  60. mean6=mean(bm666,1);mean7=mean(bm777,1);mean8=mean(bm888,1);mean9=mean(bm999,1);
  61. end
  62. x=[1990:2014];
  63. figure
  64. plot(x,mean6,'-r+');
  65. hold on
  66. plot(x,mean7,'-b*');
  67. hold on
  68. plot(x,mean8,'-ys');
  69. hold on
  70. plot(x,mean9,'-k^');
  71. xlabel('年份')
  72. ylabel('京津冀地区6-9各月份气溶胶光学厚度多年变化趋势')
  73. title('1990-2014京津冀地区6-9各月份气溶胶光学厚度多年变化趋势')
  74. legend('6月份AOD','7月份AOD','8月份AOD','9月份AOD');

20220215—B站视频学习【统计学速成课】Statistics - [45集全/中英双语] - Crash Course Statistics_哔哩哔哩_bilibili

(正态分布)

20220223—B站视频学习【公开课-85集全】可汗学院:统计学(强烈推荐)_哔哩哔哩_bilibili

1.平均数、中位数、众数(数据集中趋势)

平均数、中位数、众数的区别与联系 - 百度文库

各自的应用情况不同,数据都比较均匀的平均水平、个别不均匀偏大偏小的中等水平、数据多部分出现偏大偏小的多数水平;

2.极差(最大数-最小数);中程数(最大值最小值的平均值)

3.象形图、条形图(同一个对象不同时期比如分数的比较)、线形图(趋势变化)、饼图(占比)

多幅线形图中的刻度可能会给人误导;

4.茎叶图(茎代表十位数、叶代表个位数;说明球员成绩分布)

5.箱线图(与中位数有关)

 中位数、上四分数、下四分数;须告诉最大值最小值;中位数离哪端较近;

20220224—B站视频学习

显著性检验

如何通俗地理解假设检验基本原理_R语言中文社区-CSDN博客(例子好懂)

R语言各种假设检验实例整理(常用) - ywliao - 博客园

【小记】显著性差异的计算_yaoyz105-CSDN博客_显著性差异如何计算

关于显著性检验,你想要的都在这儿了!!(基础篇)_weixin_33796205的博客-CSDN博客

6.统计学(描述性、推论性【样本——整体】)

20220225—B站视频学习,去趋势分析

时间序列去趋势分析

时间序列--去趋势_kylin_learn的博客-CSDN博客_时间序列怎么去趋势

参考以下博文,matlab操作夏玉米单产数据以及总柱臭氧数据线性去趋势

使用Matlab对数据进行去趋势(detrend)_wokaowokaowokao12345的专栏-CSDN博客_detrend

  1. 夏玉米单产:
  2. a=xlsread('gai-maizey.xls','gai-maizey');
  3. a1=a(:,4:28);
  4. am=a1(1,:);
  5. t=(1990:2014);
  6. figure
  7. plot(t,am);
  8. legend('Original Data','Location','northwest');
  9. xlabel('year');
  10. ylabel('maize yield');
  11. detrend_am= detrend(am);
  12. trend = am - detrend_am;
  13. mean(detrend_am)
  14. hold on
  15. plot(t,trend,':r')
  16. plot(t,detrend_am,'m')
  17. plot(t,zeros(size(t)),':k')
  18. legend('Original Data','Trend','Detrended Data',...
  19. 'Mean of Detrended Data','Location','northwest')
  20. xlabel('year');
  21. ylabel('maize yield');
  22. 总柱臭氧去趋势:
  23. b=xlsread('to3_1989.10-2014.09.xlsx','maize.mean1');
  24. b1=b(2:83,:);
  25. bm=b1(1,:);
  26. figure
  27. plot(t,bm);
  28. legend('Original Data','Location','northwest');
  29. xlabel('year');
  30. ylabel('TO3');
  31. detrend_bm= detrend(bm);
  32. trend = bm - detrend_bm;
  33. mean(detrend_bm)
  34. hold on
  35. plot(t,trend,':r')
  36. plot(t,detrend_bm,'m')
  37. plot(t,zeros(size(t)),':k')
  38. legend('Original Data','Trend','Detrended Data',...
  39. 'Mean of Detrended Data','Location','northwest')
  40. xlabel('year');
  41. ylabel('TO3');
  42. 去趋势后夏玉米单产和总柱臭氧关系
  43. a=xlsread('gai-maizey.xls','gai-maizey');
  44. a1=a(:,4:28);
  45. am=a1(1,:);
  46. t=(1990:2014);
  47. detrend_am= detrend(am);
  48. b=xlsread('to3_1989.10-2014.09.xlsx','maize.mean1');
  49. b1=b(2:83,:);
  50. bm=b1(1,:);
  51. detrend_bm= detrend(bm);
  52. p = polyfit(detrend_bm,detrend_am,1);
  53. f = polyval(p,detrend_bm);
  54. up=(detrend_am-f).^2;
  55. down=(detrend_am-mean(detrend_am)).^2;
  56. r2=1-( sum(up)/sum(down) );
  57. plot(detrend_bm,detrend_am,'k*',detrend_bm,f,'r-')
  58. 添加循环:
  59. a=xlsread('gai-wheaty.xls','gai-wheaty');
  60. a1=a(:,4:28);
  61. b=xlsread('to3_1989.10-2014.09.xlsx','wheat.mean1');
  62. b1=b(2:66,:);
  63. cofr=[];
  64. cofp=[];
  65. for j=1:length(a1)
  66. am=a1(j,:);
  67. bm=b1(j,:);
  68. avalue=[];
  69. bvalue=[];
  70. detrend_am= detrend(am);
  71. detrend_bm= detrend(bm);
  72. [r1,p1]=corrcoef(detrend_bm(:),detrend_am(:));
  73. cofr=[cofr;r1(1,2)];
  74. cofp=[cofp;p1(1,2)];
  75. end

差分法去趋势的matlab实现

  1. a=xlsread('gai-maizey.xls','gai-maizey');
  2. a1=a(:,4:28);
  3. am=a1(1,:);
  4. avalue=[];
  5. b=xlsread('to3_1989.10-2014.09.xlsx','maize.mean1');
  6. b1=b(2:83,:);
  7. bm=b1(1,:);
  8. bvalue=[];
  9. for i=1:length(am)-1
  10. valuea = am(i+1) - am(i);
  11. avalue=[avalue valuea];
  12. valueb = bm(i+1) - bm(i);
  13. bvalue=[bvalue valueb];
  14. end
  15. p = polyfit(bvalue,avalue,1);
  16. f = polyval(p,bvalue);
  17. up=(avalue-f).^2;
  18. down=(avalue-mean(avalue)).^2;
  19. r2=1-( sum(up)/sum(down) );
  20. plot(bvalue,avalue,'k*',bvalue,f,'r-')

两种方法最后求单产和臭氧浓度相关性时,相关性不高,R2太小

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/675400
推荐阅读
相关标签
  

闽ICP备14008679号