část B01–B05
Kvantitativní údaje o nějakých vlastnostech nebo výkonech členů dané skupiny lze vyjádřit čísly. Na příklad tělesná hmotnost, výška, výkon v běhu, počet shybů jsou údaje popisující jednotlivce v takové skupině. Celou skupinu pak charakterizují průměry všech naměřených dat. Aritmetický průměr počítáme vzorcem
Údajem o tom, jak rozptýleny jsou naměřené hodnoty jest rozptyl čili střední kvadratická odchylka všech hodnot od průměru. Její druhá odmocnina je směrodatná odchylka, kterou počítáme upraveným vzorcem
Aritmetický průměr a směrodatná odchylka jsou charakteristiky souborů při statistických testech, o nichž bude řeč později. Lze je také počítat lepšími vědeckými kalkulátory, zde uvádíme program pro jejich výpočet z čísel, uvedených v řádku DATA.
DATA 10,13,12,14,17,18,16
a:
READ x: ON ERROR GOTO b
s = s + x: k = k + x * x
n = n + 1: GOTO a
b:
p = s / n
sx = SQR((k – s * s / n) / (n – 1))
LPRINT "prum,smer.odch,n="; p, sx, n
END
Pozn.: není-li k dispozici tiskárna, změníme příkaz LPRINT v předposledním řádku programu na pouhé PRINT, a výsledky musíme opisovat z obrazovky.
Máme-li n párů dat x, y, můžeme potřebovat jejich průměry
a směrodatné odchylky
Páry můžeme zakreslit do korelačního pole, a má-li toto pole lineární trend, můžeme počítat pomocí kovariance
součinitel korelace r
Tento součinitel ukazuje těsnost souvislosti mezi činiteli x, y. Všechny potřebné sumace a výpočty lze provést programem:
DATA 76,81,71,85,57,52,49,52,70,70,69,63,26,33,65,83,59,62
a:
READ x, y: ON ERROR GOTO b
sx = sx + x: kx = kx + x * x
sy = sy + y: ky = ky + y * y
xy = xy + x * y: n = n + 1: GOTO a
b:
px = sx / n: py = sy / n
s1 = SQR((kx – sx * sx / n) / (n – 1))
s2 = SQR((ky – sy * sy / n) / (n – 1))
c = (xy – sx * sy / n) / (n – 1)
r = c / (s1 * s2)
LPRINT "px,sx="; px; " "; s1
LPRINT "py,sy="; py; " "; s2
LPRINT "r,n="; r; " "; n
END
Máme-li n párů dat x,y, můžeme potřebovat jejich průměry
a směrodatné odchylky
Páry můžeme zakreslit do korelačního pole, a má-li toto pole lineární trend, můžeme počítat pomocí kovariance
součinitel korelace
Tento součinitel ukazuje těsnost souvislosti mezi činiteli x, y. Je-li dostatečně blízký jedničce, je vhodné najít regresní přímku y = a + b · x, která dovoluje počítat teoretické hodnoty y pro daná x. Součinitele a, b počítáme podle vzorců:
Všechny potřebné sumace, výpočty a nakreslení grafu provede následující program:
DATA 100,110,120,107,140,115,160,125,180,132,200,138
DATA 220,147,240,152,260,154,280,159,300,165,320,167
DATA 340,173,360,175,380,179,400,182
CLS: INPUT "xmin,xmax="; x1, x2
INPUT "ymin,ymax="; y1, y2
CLS: SCREEN 12: KEY OFF
LINE (50, 10)-(50, 300): LINE -(640, 300)
FOR x = x1 TO x2 STEP (x2 – x1) / 10
v = 50 + (x – x1) / (x2 – x1) * 500
LINE (v, 300)-(v, 305)
LOCATE 21, v / 8 – 1: PRINT x;: NEXT x
FOR y = y1 TO y2 STEP (y2 – y1) / 10
s = 300 – (y – y1) / (y2 – y1) * 280
LINE (50, s)-(52, s)
LOCATE s / 14 + 1, 2: PRINT y: NEXT y
p:
READ x, y: ON ERROR GOTO q
CIRCLE (50 + (x – x1) / (x2 – x1) * 500, 300 – (y – y1) / (y2 – y1) * 280), 3
sx = sx + x: kx = kx + x * x: sy = sy + y: ky = ky + y * y
xy = xy + x * y: n = n + 1: GOTO p
q:
p1 = sx / n: p2 = sy / n
s1 = kx – sx * sx / n: s2 = ky – sy * sy / n
c = xy – sx * sy / n: b = c / s1: a = (sy – b * sx) / n
y3 = a + b * x1: y4 = a + b * x2
LINE (50, 300 – (y3 – y1) / (y2 – y1) * 280)-(550, 300 – (y4 – y1) / (y2 – y1) * 280)
LOCATE 15, 42: PRINT "px,py="; p1, p2
LOCATE 16, 42: PRINT "sx,sy="; SQR(s1 / (n – 1)); SQR(s2 / (n – 1))
LOCATE 17, 42: PRINT "a,b="; a; b
r = c / SQR(s1 * s2): LOCATE 18, 42: PRINT "r="; r
END
Změříme-li u každé z n-osob m-hodnot (výsledky testů, antropometrická data apod.), budou nás zajímat
Následující program počítá všechny tyto ukazatele tím, že
DATA 1,1.1,5
DATA 2,1.4,5
DATA 3,1.8,4
DATA 4,1.9,6
DATA 5,2.4,4
DATA 6,2.4,6
DATA 7,3.1,4
DATA 8,3.2,5
DATA 9,3.5,5
DATA 10,3.7,6
PRINT
INPUT "radku,sloupcu "; n, m
DIM x(n, m), p(m), s(m, m), c(m, m), t(m, m), r(m, m)
FOR i = 1 TO n: FOR j = 1 TO m
READ x(i, j): NEXT j: NEXT i
FOR j = 1 TO m: s = 0
FOR i = 1 TO n: s = s + x(i, j)
NEXT i: p(j) = s / n: NEXT j
FOR j = 1 TO m: FOR i = 1 TO n
x(i, j) = x(i, j) – p(j): NEXT i: NEXT j
FOR j = 1 TO m: FOR k = 1 TO m: FOR i = 1 TO n
s(k, j) = s(k, j) + x(i, k) * x(i, j)
NEXT i: NEXT k: NEXT j
FOR k = 1 TO m: FOR j = 1 TO m
s(k, j) = s(k, j) / (n – 1)
NEXT j: NEXT k: PRINT
PRINT "prumery, smer.odch"
FOR i = 1 TO m
PRINT "i,p,s="; i, p(i), SQR(s(i, i))
NEXT i: PRINT
PRINT "matice korel.soucinitelu"
FOR i = 1 TO m: FOR j = 1 TO m
r(i, j) = s(i, j) / SQR(s(i, i) * s(j, j))
PRINT TAB(5 * j – 4); USING "#####"; INT(r(i, j) * 1000);
NEXT j: PRINT: NEXT i: PRINT
FOR i = 1 TO m: FOR j = 1 TO m
t(i, j) = s(i, j): NEXT j: NEXT i
FOR i = 1 TO m
IF ABS(s(i, i)) < 1E-09 THEN PRINT "spatne podminena matice": END
q = 1 / s(i, i): s(i, i) = 1
FOR k = 1 TO m: s(i, k) = s(i, k) * q: NEXT k
FOR j = 1 TO m: IF i = j THEN GOTO a
q = s(j, i): s(j, i) = 0
FOR k = 1 TO m: s(j, k) = s(j, k) – q * s(i, k): NEXT k
a:
NEXT j: NEXT i
PRINT "souc.mnohonas.korelace a determinace"
FOR i = 1 TO m
mk = 1 – 1 / (t(i, i) * s(i, i)): PRINT "mk"; i; "="; SQR(mk); mk
NEXT i: END
i,p,s= 1 | 5.5 | 3.02765 |
i,p,s= 2 | 2.45 | .9009255 |
i,p,s= 3 | 5 | .9164966 |
1000 | 991 | 224 | |
991 | 1000 | 105 | |
224 | 105 | 1000 |
Má-li řada hodnot náhodné kolísání, můžeme ji vyhladit pomocí klouzavého průměru, tj. průměru n sousedních členů řady. Po výpočtu průměru se od součtu odečte první člen, a přičte další člen řady. Tak se přes všechny členy řady posouvá okno, obsahující n členů a pro každou polohu tohoto okna se počítá nový průměr. Následující program provádí tyto operace:
DATA 10,12,9,10,8,14,14,10,8,12,15,18
INPUT "prumer pro n="; n: DIM b(n)
s = 0: FOR i = 1 TO n
READ b(i): s = s + b(i): NEXT i
q:
a = s / n: PRINT a;
s = s – b(1): FOR i = 1 TO n – 1
b(i) = b(i + 1): NEXT i
READ b(n): ON ERROR GOTO e
s = s + b(n): GOTO q
e:
PRINT "KONEC": END
3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|
10,33 | 10,25 | 9,6 | 10,5 | 11 | 10,87 | 10,55 |
10,33 | 9,75 | 9,6 | 11,66 | 11 | 10,62 | 10,77 |
9,- | 10,25 | 11,- | 10,83 | 10,43 | 10,62 | 11,11 |
10,66 | 11,5 | 11,2 | 10,66 | 10,86 | 10,37 | 12,11 |
12 | 11,5 | 10,6 | 11 | 11,57 | 12,37 | |
12,66 | 11,5 | 11,6 | 12,06 | 13 | ||
10,66 | 11 | 11,8 | 12,83 | |||
10 | 11,25 | 12,6 | ||||
11,66 | 13,25 | |||||
15 |
Technické řešení této výukové pomůcky je spolufinancováno Evropským sociálním fondem a státním rozpočtem České republiky.