现在我有的资料如下:
12.1000000000000
11.5666666666667
9.40000000000000
10.0333333333333
.
.
.
11.7333333333333
共110笔数据,存成.txt档,欲设计一个可计算Kendall系数的程式。
Kendall 相关系数的计算方法如下:
1. 将n组资料对(x,y),按x值的大小排列,使x1为最小、xn为最大,排列结果为( x1, y1
), ( x2 , y2 ), ..., ( xn , yn )。其中,x 为自变量或影响变量,y 是应变量。
2. 检视所有的n(n-1)/2 个yi 与 yj 的比较,计算当序号i > j 时 yi > yj 的个数
P,以及 yi < yj 的个数M,令S = P-M。
我自己写的code如下:
program project01
real,allocatable:: A(:)
allocate( A(110) ); A=0.
open(10,file='mtempnorth.txt')
do i=1,110
read(10,*) A(i)
end do
close(10)
do i=1,109
if(A(i+1)>A(i))then
write(*,*)'p',i
else if(A(i+1)==A(i))then
write(*,*)i
else
write(*,*)'M',i
end if
end do
stop
end
但这样子只能拿x1比一轮,我想要第二轮再拿x2与x3.x4...x110比大小,第三轮拿x3与
x4.x5...x110比大小,依此类推!
目前我只有想到写109个do loop暴力法求解,有没有更快的方法比完109轮且快速得到P与M
的个数?
小弟fortran新手QQ,八月才开始看彭国伦的书自学!