Kódím.cz
1

Pravděpodobnostní rozdělení

Pravděpodobnostní rozdělení náhodných veličin a testování hypotéz pomocí modulu scipy

Dvouvýběrový pravostranný t-test

Nyní si ukážeme postup při pravostranném testu. Upravme si nejprve předchozí zadání: Máme data o průměrném počtu výrobků, které neprošly kontrolou kvality (tj. zmetků), vyrobených ve dvou různých závodech, přičemž druhý závod postupuje podle upravených výrobních procesů. Předpokládáme, že počty mají v obou případech shodný rozptyl. Ověřte hypotézu, že změna výrobních postupů vedla ke snížení zmetkovosti.

Hypotézy našeho testu jsou následující:

  • (Střední hodnota obou souborů je stejná.)
  • (Střední hodnota prvního souboru je vyšší.)

Statistika testu zůstává stejná, kritický obor se přesunuje doprava, tj.:

Soubor se všemi výpočty naleznete zde.

Výpočet s využitím doplňku Analýza dat

Výpočet spustíme pomocí stejného postupu, jako jsme si uvedli výše, tj. označíme oblasti s daty a výstupní oblast. Níže máme výsledek výpočtu. Hodnota statistiky je a tentokrát máme správně určenou i hranici kritického oboru, kritický obor je tedy

Špatně je ale p-hodnota. Hodnota statistiky je záporná a protože kritický obor určujeme zprava, musí být p-hodnota vyšší než . Dochází zde tedy k problému, který jsme si popisovali výše. Tato p-hodnota by byla správná v případě levostranného testu. V případě pravostranného testu je ale .

Porovnání p-hodnot je na grafu níže. Červeně je označena p-hodnota levostranného testu, zeleně p-hodnota pravostranného.

Využití funkce T.TEST

Podobně jako Analýza dat, i funkce T.TEST v jednodušší variantě vrací chybný výsledek. Pří použití následujícího vzorce

T.TEST(A2:A41;B2:B35;1;2)

Python alternativa:

from scipy.stats import ttest_ind

t_stat, p_value = ttest_ind(x, y, equal_var=True, alternative="greater")

získáme hodnotu , který by byla správná, pokud bychom dělali levostranný test.

Použijme tedy opět funkci podmínky. Tento vzorec je stejný jako výše s výjimkou znaménka u podmínky, které je obráceně.

=KDYŽ(E3>F3;T.TEST(A2:A41;B2:B35;1;2);1-T.TEST(A2:A41;B2:B35;1;2))

Python alternativa:

from scipy.stats import ttest_ind

t_stat, p_value = ttest_ind(x, y, equal_var=True, alternative="greater")

Manuální výpočet

Vzorec pro výpočet statistiky zůstává stejný, proto rovnou přejdeme k dalším krokům.

Kritický obor tentokrát určujeme zprava. Do kritického oboru budou patřit nejvyšší hodnoty z definičního oboru tak, že pravděpodobnost, že testová statistika nabude těchto hodnot, bude přesně , v našem případě . Zbylé hodnoty, u nichž je tato pravděpodobnost , jsou mimo kritický obor. Jak první parametr inverzní distribuční funkce Studentova rozdělení T.INV tedy zadáme , ostatní se nemění:

=T.INV(1-E7;E2+F2-2)

Python alternativa:

from scipy.stats import t

critical_value = t.ppf(1 - alpha, df=len(x) + len(y) - 2)

Kritický obor je tedy:

.

p-hodnotu určíme pomocí funkce T.DIST a to opět směrem doprava, tj:

=1-T.DIST(E12;E2+F2-2;PRAVDA)

Python alternativa:

from scipy.stats import t

p_value = t.sf(t_stat, df=len(x) + len(y) - 2)

Můžeme rovněž použít pravostrannou distribuční funkci T.DIST.RT, která nám zápis trochu zjednoduší:

=T.DIST.RT(E12;E2+F2-2)

Python alternativa:

from scipy.stats import t

p_value = t.sf(t_stat, df=len(x) + len(y) - 2)