Přechod na menu, Přechod na obsah, Přechod na patičku
     

B. Statistika

část B01–B05


B01 Aritmetický průměr a směrodatná odchylka

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

x=\frac{\sum^n_{i=1}x_i}{n}=\frac{x_1+x_2+…+x_n}{n}

Ú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

x=\sqrt{\frac{\sum x^2-{\frac{\sum x}{n}}^2}{n-1}}

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
Výsledek:

prum,smer.odch,n= 14.28571 2.870208 7

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.



B02 Statistika párovaných dat

Máme-li n párů dat x, y, můžeme potřebovat jejich průměry

p_x=\frac{\sum x}{n}
p_y=\frac{\sum y}{n}

a směrodatné odchylky

s_x=\sqrt{\frac{{\sum{x^2}-\frac{({\sum{x}})^2}{n}}}{n-1}}
s_y=\sqrt{\frac{{\sum{y^2}-\frac{({\sum{y}})^2}{n}}}{n-1}}

Páry můžeme zakreslit do korelačního pole, a má-li toto pole lineární trend, můžeme počítat pomocí kovariance

cov_{x,y}=\frac{\sum{xy}-\frac{\sum{x}\sum{y}}{n}}{n-1}

součinitel korelace r

r=\frac{cov_{x,y}}{s_xs_y}

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
Příklad:

z dat v řádku DATA dostaneme:
px,sx = 60,222 15,28707
py,sy = 64,555 17,24174
r,n = 0,8877378 9

B03 Aritmetické průměry, směrodatné odchylky, součinitel korelace a graf lineární regrese pro párovaná data

Máme-li n párů dat x,y, můžeme potřebovat jejich průměry

p_x=\frac{\sum x}{n}
p_y=\frac{\sum y}{n}

a směrodatné odchylky

s_x=\sqrt{\frac{{\sum{x^2}-\frac{({\sum{x}})^2}{n}}}{n-1}}
s_y=\sqrt{\frac{{\sum{y^2}-\frac{({\sum{y}})^2}{n}}}{n-1}}

Páry můžeme zakreslit do korelačního pole, a má-li toto pole lineární trend, můžeme počítat pomocí kovariance

cov_{x,y}=\frac{\sum{xy}-\frac{\sum{x}\sum{y}}{n}}{n-1}

součinitel korelace

r=\frac{cov_{x,y}}{s_xs_y}

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ů:

b=\frac{cov_{x,y}}{{s_x}^2}
a=p_y-b.p_x

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

B04 Vyhodnocení matice dat výpočtem aritmetických průměrů, směrodatných odchylek, matice korelačních součinitelů a součinitelů mnohonásobné korelace a determinace

Změříme-li u každé z n-osob m-hodnot (výsledky testů, antropometrická data apod.), budou nás zajímat

  1. průměry a směrodatné odchylky jednotlivých sloupců (testů)
  2. matice korelačních součinitelů mezi všemi možnými dvojicemi sloupců (testů)
  3. součinitelé mnohonásobné korelace a determinace každého sloupce (testu) se všemi ostatními.

Následující program počítá všechny tyto ukazatele tím, že

  1. uloží data do matice n × m (počet osob × počet testů)
  2. vypočítá aritmetické průměry všech sloupců (testů)
  3. odečte tyto průměry od hodnot příslušných sloupců
  4. vypočítá matici m × m variancí a kovariancí
  5. z variancí, ležících v diagonále této matice vypočítá směrodatné odchylky, z kovariancí a variancí matici korelačních součinitelů
  6. provede inverzi této matice
  7. z diagonálních prvků původní a invertované matice počítá součinitele mnohonásobné korelace a determinace, ukazující korelaci jednotlivých sloupců se všemi ostatními a podíl vlivu ostatních sloupců (testů) na veličinu, danou sloupcem (testem).

Literatura

  1. Sassouri. Communications of Association of Computer Manufacturers (CACM) 1961, č. 3
  2. Agejev N. I.: Algoritmy 1–50. Moskva, VC AN SSR, 1966, s. 71–73
  3. Jahn W. – Vahle H.: Die Faktorenanalyse und ihre Anwendung. 1970, Verlag Die Wirtschaft, Berlin, str. 41
  4. Lohse H. – Ludwig R. – Roehr L.: Statistische Verfahren. 1982, Volk und Wissen, Berlin, str. 208–209.
  5. Storm Regina: Wahrscheinlichkeitsrechnung, mathematische Statistik und statistische Qualitaetskontrolle. 1976, Fachbuchverlag, Leipzig, str. 244–245.

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
Výsledky:

průměry, směr.odch.
i,p,s= 1 5.5 3.02765
i,p,s= 2 2.45 .9009255
i,p,s= 3 5 .9164966

matice korel. souc.
1000 991 224
991 1000 105
224 105 1000

součinitel mnohonasobné korelace a determinace
mk 1 = .9991829  .9983666
mk 2 = .9991491  .9982989
mk 3 = .9487171  .9000641

B05 Klouzavý průměr

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:

  1. sečte prvních n členů řady, součet je s
  2. vypočítá průměr p = s / n
  3. odečte od součtu první člen
  4. všechny členy řady přenese o 1 úroveň níž: index proměnné xi = xi+1
  5. k součtu přičte další člen řady
  6. vrátí se na bod 2.
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
Klouzavé průměry pro n =
3456789
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
autor: Ing. Josef Kopřiva, recenzent: Mgr. Martin Sebera, Ph.D. |
Fakulta sportovních studií, Masarykova univerzita |
Návrat na úvodní stránku webu, přístupnost |
Stránky Fakulty sportovních studií MU
| Technická spolupráce:
| Servisní středisko pro e-learning na MU
| Fakulta informatiky Masarykovy univerzity, 2011

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.