Neparametricke metody

<<  Statistics`ContinuousDistributions`

SetOptions[ListPlot, PlotJoined -> True];

Test nahodnosti

Priklad 1.
Vybrali sme 10 lan, aby sme zistili tieto udaje o nosnosti

11.1,      10.4,     9.6,    10.6,     11,    9.9,    10.1,    10.5,    8.7,     11.1

testujte hypotezu, ze vyber je nahodny.

Test vykoname po prikazoch, prikazy mozno potom spojit do jednej procedury, aj vykreslime.Nadcitame data, najdeme median, vykreslime, prikazom Select alebo Cases [data, Except-podmienka]  vynechame hodnoty, ktore sa rovnaju medianu a znizime pocet merani

u = {11.1,  10.4,  9.6,  10.6,  11,  9.9,  10.1,  10.5,  8.7,  
        11.1}

me = Median[u]

g1 = ListPlot[u];

g2 = Plot[me, {t, 0, Length[u]}];

Show[g1, g2]

u1 = Select[u, # ≠ me &];

Cases[u, Except[me]]

n = Length[u1]

a = Table[j[i], {i, 1, n}]

Do[If[u[[i]] < me, j[i] = 1, j[i] = 0], {i, 1, n}]

a

k = 1;

Do[If[j[i] == j[i + 1], k, k = k + 1], {i, 1, n - 1}]

k

norma[t_] := Abs[t - (n/2) - 1]/(Sqrt[((n - 1)/4)])

norma[k] // N

α = 0.05

If[norma[k] < Quantile[NormalDistribution[0, 1], 1 - (α/2)], 
      Print["Vyhodnotenie testu:   merania  su nahodne"], 
      Print["Vyhodnotenie testu: merania nie su nahodne"]]

Test kritickych hodnot

Priklad 2.
Merali sme vlhkost strku v percentach s nasledujucimi vysledkami:

14.9   13.9   12.1   14   14.1   14.1   15   14.5   14.2   13.8   14.2   14.4   15   15.1   15   14.9   12   13.5
Testom kritickych bodov zistite, ci merania su nahodne

Nadcitame data, ak su dve hodnoty vedla seba rovnake, tak ich vynechame az na jednu, znizime pocet merani, nachystame si funkciu, ktora normuje.

normaK[t_] := 
      Abs[t - ((2 (n - 2))/3)]/(Sqrt[((16  n - 29)/90)])

strk = {14.9,  13.9,  12.1,  14,  14.1,  14.1,  15,  14.5, 
          14.5, 14.5,  14.2,  13.8,  14.2,  14.4 , 15,  15.1,  15,  
          14.9,  12,  13.5};

n = Length[strk]

Do[If[strk[[i]] == strk[[i + 1]], strk[[i]] = 0], {i, 1, 
        n - 1}]

strk

s1 = Cases[strk, Except[0]]

n = Length[s1]

Teraz zistime pocet kritickych bodov

k = 0;

Do[If[
        s1[[i + 1]] > s1[[i]] ∧ 
            s1[[i + 1]] > s1[[i + 2]] ∨ 
          s1[[i + 1]] < s1[[i]] ∧ 
            s1[[i + 1]] < s1[[i + 2]], k = k + 1], {i, 1, 
        n - 2}]

If[normaK[k] < Quantile[NormalDistribution[0, 1], 1 - (α/2)], 
      Print["Vyhodnotenie testu:   merania  su nahodne"], 
      Print["Vyhodnotenie testu: merania nie su nahodne"]]

Medianovy test

Vieme, ze starou metodou sa vyrabali lana o medianovej sile (nosnost lana) 9.75. Testujte, ze lana vyrabane novou metodu maju tu istu medianovu silu

Data uz mame nadcitane v datovom subore u, utvorime kladne rozdiely a zistime pocty rozdielov s kladnymi znmienkami, kedze nie su k dispozicii tabulky, opat porovname s kvantilom normalneho rozdelenia,

normaZ[t_] := Abs[2  t - n]/(Sqrt[n])

me = 9.75;

k = 0

rozdiel = u - me

Do[If[rozdiel[[i]] > 0, k = k + 1], {i, 1, 
        Length[rozdiel]}]

If[normaZ[k] < Quantile[NormalDistribution[0, 1], 1 - (α/2)], 
      Print["Vyhodnotenie testu:   merania  su nahodne"], 
      Print["Vyhodnotenie testu: merania nie su nahodne"]]

Jednovyberovy Wilcoxonov test

10 pokusných osôb malo nezávisle na sebe odhadnúť, kedy od daného signálu uplynie jedna minúta. Boli namerané tieto údaje:
53      48      45      55      63      51      66      56      50      58
Testujte symetriu rozdelenie. keze nie su k dispozicii tabulky, testujte pomocou kvantilov normalneho rozdelenia

normaW[t_] := 
      Abs[t - ((n (n + 1))/4)]/(Sqrt[((n (n + 1) (2  n + 1))/24)])

data = {53,  48,  45,  55,  63,  51,  66,  56,  50, 
        58}

d1 = data - 60

d1 = Cases[d1, Except[0]]

n = Length[d3]

d3 = Table[{Abs[d1[[i]]], i}, {i, 1, n}]

d4 = Sort[d3]

d5 = Table[{d4[[i]], i}, {i, 1, n}]

d6 = Table[Flatten[d5[[i]]], {i, 1, n}]

d7 = d6[[Ordering[d6[[All, {2}]]]]]

ss = 0

Do[If[d1[[i]] == First[d7[[i]]], 
        ss = ss + Last[d7[[i]]]], {i, 1, n}]

ss

If[normaW[ss] < Quantile[NormalDistribution[0, 1], 1 - (α/2)], 
      Print["Vyhodnotenie testu:   distribucna funkcia je symetricka okolo \
medianu"], 
      Print["Vyhodnotenie testu:   distribucna funkcia je symetricka okolo \
medianu"]]

Dvojvyberovy Wilcoxonov test

Firma, ktorá sa špecializuje na domáce čističe vzduchu potrebuje zistiť, či je nový prístroj efektívnejší ako starý. Sledujeme prašnosť vzduchu a nameriame výsledky pričom m=4,  n=6:

prvý prístroj           51    52          49       55
druhý prístroj         45    54          4 8      44    53    60
Testujte hypotezu, ze cistice maju rovnaku ucinnost

p1 = {{51, 1}, {52, 1}, {49, 1}, {55, 1}}

p2 = {{45, 2}, {54, 2}, {48, 2}, {44, 2}, {53, 2}, {60, 2}}

m = Length[p1]

n = Length[p2]

p3 = Join[p1, p2]

p4 = Sort[p3]

ss = 0

Do[If[p4[[i, 2]] == 1, ss = ss + i], {i, 1, 
        n + m}]

ss

normaW2[t_] := 
      Abs[ss - 0.5*m*n]/(Sqrt[((m*n*(m + n + 1))/12)])

If[normaW[ss] < Quantile[NormalDistribution[0, 1], 1 - (α/2)], 
      Print["Vyhodnotenie testu:   distibucne funkcie sa rovnaju"], 
      Print["Vyhodnotenie testu:   distribucne funkcie sa \
nerovnaju"]]

Kruskal Wallisov test

V tovarni na vyrobu armatur su rovnake stroje od troch roznych vyrobcov. Ich vykonnost je uvedena v tabulke. Testujte hypotezu o rovnakej vykonnosti strojov

({{vyrobca,  ,  ,  ,  }, {A, 5.89, 5.98, 5.69, 5.74}, {B, 5.81, 5.9, 5.63, 5.71}, {C, 5.8, 5.99, 5.62, 6}})

stroje = {{5.89, 1}, {5.98, 1}, {5.69, 1}, {5.74, 1}, {5.81, 2}, {5.9, 
          2}, {5.63, 2}, {5.71, 2}, {5.8, 3}, {5.99, 3}, {5.62, 3}, {6, 
          3}}

n = Length[stroje]

n1 = 0; n2 = 0; n3 = 0;

Do[Which[stroje[[i, 2]] == 1, n1 = n1 + 1, 
        stroje[[i, 2]] == 2, n2 = n2 + 1, 
        stroje[[i, 2]] == 3, n3 = n3 + 1], {i, 1, n}]

n1

n2

n3

stroje1 = Sort[stroje]

ss1 = 0; ss2 = 0; ss3 = 0;

Do[Which[stroje1[[i, 2]] == 1, ss1 = ss1 + i, 
        stroje1[[i, 2]] == 2, ss2 = ss2 + i, 
        stroje1[[i, 2]] == 3, ss3 = ss3 + i], {i, 1, n}]

ss1

ss2

ss3

qq = (12/(n (n + 1))) (((ss1^2)/n1) + ((ss2^2)/n2) + 
                ((ss3^2)/n3)) - 3 (n + 1) // N

If[qq < Quantile[ChiSquareDistribution[2], 1 - α], 
      Print["Vyhodnotenie testu:   distibucne funkcie sa rovnaju"], 
      Print["Vyhodnotenie testu:   distribucne funkcie sa \
nerovnaju"]]

Quantile[ChiSquareDistribution[2], 0.95]