Mann-Kendall法(非参数检验方法)程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Mann-Kendall法(非参数检验方法)程序

统计知识2009-02-02 13:47:51 阅读986 评论1 字号:大中小订阅

Mann-Kendall法(非参数检验方法)用于气候突变检测

program main

implicit none

c This is a program for testing climate jump i by use of

c 'Mann-Kendall test'.

c-------------------------------------------------

integer,parameter :: iy=100

integer i

real x(iy),u1(iy),u2(iy)

c-------Read Data

c-------

open(31,file='d: mk.txt ',form='formatted')

do i=1,50

x(i)=0.5

x(i+50)=-0.5

end do

c-------Mann-Kendall test method

call MKtest (iy,x,u1,u2)

c------

do i=1,iy

write(31,10)i,x(i),u1(i),u2(i)

end do

10 format(1x,i4,4f8.2)

stop

end

!c------------------------------------------------------------------

subroutine MKtest(m,x,u1,u2)

dimension x(m),u1(m),u2(m)

dimension xr(m),ur(m) !work array

do i=1,m

xr(i)=x(m+1-i)

end do

call MKrank(m,x,u1)

call MKrank(m,xr,ur)

do i=1,m

u2(i)=-ur(m+1-i)

enddo

return

end

!c------------------------------------------------------------------

!c-------Mann-Kendall Rank Statistic subroutine MKrank(m,x,u)

dimension x(m),u(m)

u(1)=0.0

d=0.0

do i=2,m

num=0

do j=1,i

if(x(i).gt.x(j))then

num=num+1

endif

enddo

d=d+float(num)

e=i*(i-1.)/4.

var=i*(i-1.)*(2.*i+5.)/72.

u(i)=(d-e)/sqrt(var)

enddo

return

end

相关文档
最新文档