相関と回帰分析と順位相関


9.相関と回帰分析
100 rem Soukan 
110 dim x(50),y(50)
120 n = 10 : xo = 0 : yo = 0
130 for i = 1 to n
140   read x(i)
150   xo = xo+x(i)
160 next i
170 for i = 1 to n
180   read y(i)
190   yo = yo+y(i)
200 next i
210 x1 = xo/n:rem Heikin
220 y1 = yo/n:rem Heikin
230 q = 0 : s = 0 : t = 0
240 print "X       Y"
250 for i = 1 to n
260   print x(i),y(i)
270   q = q+(x(i)-x1)*(y(i)-y1):rem Bunshi
280   s = s+(x(i)-x1)*(x(i)-x1)
290   t = t+(y(i)-y1)*(y(i)-y1)
300 next i
310 r = q/sqr(s*t)
320 print "Soukan Keisuu= ",r
330 rem Kaiki  y=a*x+b
340 sy = 0 : sx = 0 : sxy = 0 : sx2 = 0
350 for j = 1 to n
360   sy = sy+y(j)
370   sx = sx+x(j)
380   sx2 = sx2+x(j)*x(j)
390   sxy = sxy+x(j)*y(j)
400 next j
410 b = (sy*sx2-sx*sxy)/(n*sx2-sx*sx)
420 a = (n*sxy-sx*sy)/(n*sx2-sx*sx)
430 print "y=a*x+b  a=";a,"b=";b
440 end
450 rem mogi data
460 data 5,6,2,8,10,9,3,7,3,8
470 data 3,4,1,4,5,6,2,4,1,3
解説)
相関と回帰分析(直線回帰)の係数を求めるプログラムです。
10行目のdimで行列を定義しています。x,yとも50個までとしていますが、
幾らでも増やせます。
xを先に全部読んで、次にyを読むようにしています。

10.順位相関
100 rem spir-man(-1<=r<=1)
110 dim t1(100),t2(100)
120 w = 0 : n = 5
130 for i = 1 to n
140   read t1(i),t2(i)
150 next i
151   print "t1      t2"
160 for i = 1 to n
170   w = w+t1(i)*t2(i)
172   print t1(i),t2(i)
180 next i
190 r = 3*(4*w-n*(n+1)*(n+1))/n/(n*n-1)
200 print "W=";w
210 print "Jun-i Soukan R=";r
220 end
230 rem mogi data
240 data 5,4
250 data 3,3
260 data 2,1
270 data 4,5
280 data 1,2
解説)
スピルマンの順位相関です。120行目でデータ数nを5にしています。
データ数を増やしたい時は、この値を変えて下さい。
上と違いx,yを一組ずつ読むようにしてあります。

文法的には、特に説明することはないかと思います。remを書くのにマルチステート
メント(:rem)にしているところがちょっと違う使い方か、と言った程度です。


戻る