Mann-Kendall法(非参数检验方法)程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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