現在我有的資料如下:
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,八月才開始看彭國倫的書自學!