--- プログラム ---
BEGIN{ #1
print "data:"
print "number,value1,value2"
print ""
print "sample1"
loadfile("./data/dt01.txt")
print "soukankeisuu="
print soukankeisuu()
print ""
print "sample2"
loadfile("./data/dt02.txt")
print "soukankeisuu="
print soukankeisuu()
print ""
print "sample3"
loadfile("./data/dt03.txt")
print "soukankeisuu="
print soukankeisuu()
print ""
print "sample4"
loadfile("./data/dt04.txt")
print "soukankeisuu="
print soukankeisuu()
print ""
} #1
function heikin(an)
{ #1
x=0
for(i=1;i<=rn;i++)
{ #2
x=x+arr[i,an]
} #2
ans=x/rn
return ans
} #1
function hensasekiwa()
{ #1
hk1=heikin(1)
hk2=heikin(2)
x=0
for(i=1;i<=rn;i++)
{ #2
x=x+(arr[i,1]-hk1)*(arr[i,2]-hk2)
} #2
ans=x
return ans
} #1
function hensaheihouwa(an)
{ #1
hk=heikin(an)
x=0
for(i=1;i<=rn;i++)
{ #2
x=x+(arr[i,an]-hk)^2
} #2
ans=x
return ans
} #1
function soukankeisuu()
{ #1
ans=hensasekiwa()/(sqrt(hensaheihouwa(1))*sqrt(hensaheihouwa(2)))
return ans
} #1
function loadfile(fn)
{ #1
rn=1
while(getline < fn > 0)
{ #2
split($0,arr2,",")
for(j=0;j<=2;j++)
{ #3
arr[rn,j]=arr2[j+1]
} #3
rn++
} #2
rn--
close(fn)
for(i=1;i<=rn;i++)
{ #2
for(j=0;j<2;j++)
{ #3
printf arr[i,j] ","
} #3
print arr[i,2]
} #2
} #1
--- 実行結果 ---
data:
number,value1,value2
sample1
1,88,6
2,92,8
3,65,6
4,83,8
5,58,6
6,98,9
7,77,8
8,71,6
9,63,6
soukankeisuu=
0.752915
sample2
1,10,1
2,20,2
3,30,3
4,40,4
5,50,5
6,60,6
7,70,7
8,80,8
9,90,9
soukankeisuu=
1
sample3
1,10,9
2,20,8
3,30,7
4,40,6
5,50,5
6,60,4
7,70,3
8,80,2
9,90,1
soukankeisuu=
-1
sample4
1,10,9
2,20,8
3,30,7
4,40,6
5,50,5
6,60,6
7,70,7
8,80,8
9,90,9
soukankeisuu=
0
++ MEMO ++
相関係数は2つのデータ間の線形関係の強さを調べるのに用いられる。
-1〜+1の範囲の値をとる。
1に近いほど正の相関(データ1↑・データ2↑)、-1に近いほど負の相関(データ1↑・データ2↓)がある、という。
戻る