clear, close all

%% Cvičení 10. Testy nezávislosti
% Table of Contents
% Testy nezávislosti pro spojitá data
%     Pearsonův test korelačního koeficientu
%     Spearmanův test korelačního koeficientu
% Testy nezávislosti pro diskrétní data
%     Chí-kvadrát test nezávislosti
%     Fisherův exaktní test
%     Gamma koeficient
%     Yule's Q koeficient - speciální případ Gamma
% Samostatná práce v Graderu
%
% Postup:
% potřebujeme testovat nezávislost veličin?
% máme spojité nebo diskrétní výběry?
% pokud jsou spojité, máme normalitu obou výběrů?
% podle předpokladů zvolíme správný test  - viz. tabulka s testy.
% H0: veličiny jsou nezávislé
% HA:   nejsou nezávislé
% vypočteme p-hodnotu
% porovnáme p-hodnotu s hladinou významnosti: (pokud není řečeno jinak, je \alpha =0,05)
% H0 nezamítáme (p>\alpha ) nebo zamítáme (p<\alpha )
% Závěr (pro spojité vyběry - jsou data vhodná k regresi?)
%% Testy nezávislosti pro spojitá data
%% Pearsonův test korelačního koeficientu
% Testujeme nezávislost ceny ojetého auta značky ABC a najetých kilometrů na tachometru. Data jsou tady  - v prvním řádku jsou najeté kilometry, v druhém řádku  cena vozidla v tisících Kč:

km=[136186.   180287.   76228.    175044.   183514.   94667.    91059.    236219.   207414.  188629.   126520. 257712. 204316.   91301.    139567.   227955.   112595.   173941.   99774.    61585.    231953.   34224.    39803.    125315.];
cena=[248.   221.   442.   258.   328.   325.   424.   252.   310.   315.   359.  169.   212.   262.   239.   185.  403.   237.   228.   510.   341.   506.   497.   419. ];

% Máme dva výběry se spojitými daty
%  Nejprve otestujeme, zda výběry splňují předpoklad normality:

[h,pN1]=adtest(km)
[h,pN2]=adtest(cena)

% Oba výběry mají normalitu, chceme testovat nezávislost - použijeme tedy Pearsonův test
% H0: najeté kilometry a cena vozidla jsou lineárně nezávislé
% HA:   nejsou  lineárně nezávislé

[rPear,p]=corr(km',cena',"type","Pearson") % data musí být ve sloupcích

% Zamítáme nebo nezamítáme H0? Jsou data vhodná k lineární regresi?
% Je mezi veličinami přímá nebo nepřímá závislost? Jak výrazná je?
%
%% Spearmanův test korelačního koeficientu
% U malých dětí jsme pozorovali jak dlouho si ráno čistí zuby v minutách. Záznamy o délce čištění a věku dítěte  jsou uvedeny v tabulce. Testujte nezávislost veličin. Jsou data vhodná k regresi?

zuby=[9.59   26.51   10.49   5.56   15.43  29.54   6.24   25.58 27.57   12.55 28.01   6.2   17.27   11.19   17.23   18.5   13.44   27.19   27.50   13.39];
vek=[3.5   2.1   2.4   2.6   5.1   5.5   3.5   2.8   2.9   3.1 3.6   3.9   2.3   2.8   2.5   3.9   5.7   5.8   5.8   4.6];

% Máme dva výběry se spojitými daty
%  Nejprve otestujeme, zda výběry splňují předpoklad normality:
%

[h,pN1]=adtest(zuby)

% První výběr nemá normalitu,  chceme testovat nezávislost - použijeme tedy Spearmanův test
% H0: délka čištění zubů a věk dítěte  jsou  nezávislé
% HA:   nejsou  nezávislé

[rSpear,p]=corr(zuby',vek',"type","Spearman") % data musí být ve sloupcích

% Zamítáme nebo nezamítáme H0? Jsou data vhodná k regresi?
% Je mezi veličinami přímá nebo nepřímá závislost? Jak výrazná je?
%
%% Testy nezávislosti pro diskrétní data
%% Chí-kvadrát test nezávislosti
% Zjišťovali jsme, zda je závislost mezi typem pohonu auta, který si zvolí řidič a dobou, po kterou vlastní řidičský průkaz. Máme výsledky dotazníku, kde  hodnoty v prvním řádku znamenají:  1 - benzínový motor, 2 - naftový, 3 - elektromobil, 4 - hybridní. V druhém řádku: 1 - vlastní řidičský průkaz do 5 let, 2 - od 6 do 10 let, 3 - více než 10 let.  Pro naměřená data testujte hypotézu, že volba pohonu a doba od vydání řidičského průkazu jsou nezávislé.

pohon=[1.   1.   1.   1.   1.   4.   3.   3.   3.   3.   3.   3.   1.   1.   1.   1.   1.   1.   2.   2.   2.  2.   2.   2. 3.     3.   3.   2.   2.   4.   4.   2.   2.   4.   4.   4.   4.   4.   4. 1.   1.   1.   1.   1.   1.   3.   3.   3.   3.   3.   3.   1.   1.   1.   1.   1.   1.   2.   2.   2.  2.   2.   2. 3.     3.   3.   2.   2.   2.   2.   2.   2.   4.   4.   4.   4.   4.   4. 1.   1.   1.   1.   1.   4.   3.   3.   3.   3.   3.   3.   1.   1.   1.   1.   1.   1.   2.   2.   2.  2.   2.   2. 3.     3.   3.   2.   2.   4.   4.   2.   2.   4.   4.   4.   4.   4.   4. 1.   1.   1.   1.   1.   1.   3.   3.   3.   3.   3.   3.   1.   1.   1.   1.   1.   1.   2.   2.   2.  2.   2.   2. 3.     3.   3.   2.   2.   2.   2.   2.   2.   4.   4.   4.   4.   4.   4.];

doba=[3.   3.   3.   2.   2.   1.   3.   3.   3.   3.   2.   2.   2.   2.   1.   1.   1.   1.   1.   1.   1.   3.   3.   3. 1.   1.   1.   2.   2.   2.   2.   1.   1.   1.   2.   2.   3.   3.   3. 3.   3.   3.   2.   2.   2.   3.   3.   3.   3.   2.   2.   2.   2.   1.   1.   1.   1.   1.   1.   1.   3.   3.   3. 1.   1.   1.   2.   2.   2.   2.   1.   1.   1.   2.   2.   3.   3.   3. 3.   3.   3.   2.   2.   1.   3.   3.   3.   3.   2.   2.   2.   2.   1.   1.   1.   1.   1.   1.   1.   3.   3.   3. 1.   1.   1.   2.   2.   2.   2.   1.   1.   1.   2.   2.   3.   3.   3. 3.   3.   3.   2.   2.   2.   3.   3.   3.   3.   2.   2.   2.   2.   1.   1.   1.   1.   1.   1.   1.   3.   3.   3. 1.   1.   1.   2.   2.   2.   2.   1.   1.   1.   2.   2.   3.   3.   3.];

% Máme dvě diskrétní veličiny: pohon $\in\{1,2,3,4\}$ a doba $\in\{1,2,3\}$. Potřebujeme zjistit, zda jsou nezávislé.
% Máme nominální a ordinální data, která nejsou binární, tedy kontingenční tabulka nebude 2x2 - použijeme $\chi^2$-test nezávislosti
% H0: volba pohonu a doba od vydání řidičského průkazu jsou nezávislé
% HA:  nejsou nezávislé

[tbl,chi2,p] = crosstab(pohon,doba)% tbl - kontingenční tabulka,chi2 - statistika, p- p-hodnota

% Vidíme, že všechny četnosti >2 a alespoň 80% četností >5
% Zamítáme nebo nezamítáme H0? Závěr?
%
%% Fisherův exaktní test
% Předpoklady:
% nominální binární data
% kontingenční tabulka 2x2
% Pojišťovna provádí průzkum, kolik případů rakoviny plic bylo zaznamenáno mezi kuřáky a nekuřáky. Máme data, kde první řádek má hodnoty 0 - nekuřák, 1 - kuřák, a druhý řádek má hodnoty 0 - nebyla diagnostikována rakovina plic, 1 - byla diagnostikována rakovina plic. Testujte nezávislost veličin.
% máme 2 diskrétní náhodné veličiny -  kouření a rakovina plic
% máme nominální binární data, testujeme nezávislost - použijeme Fisherův exaktní test
% H0: kouření a rakovina plic jsou nezávislé
% HA:  nejsou nezávislé

kurak=[zeros(1,4) zeros(1,6) ones(1,4) zeros(1,10) zeros(1,7) ones(1,4) zeros(1,5) ones(1,10) zeros(1,4) ones(1,5) ones(1,30) ones(1,2) zeros(1,20)]
rak=[zeros(1,4) zeros(1,10) zeros(1,5) zeros(1,10) ones(1,3) zeros(1,2) zeros(1,2) ones(1,15) zeros(1,3) ones(1,5) ones(1,30) zeros(1,2) zeros(1,20)]

% potřebujeme vytvořit kontingenční tabulku

KT=crosstab(kurak,rak) % použijeme jenom pro kontingenční tabulku

% Fisherův exaktní test:

[h,p]=fishertest(KT)


% Zamítáme nebo nezamítáme H0? Závěr?
%% Gamma koeficient
% Předpoklady:
% ordinální kategorická data
% testovat nebudeme - v Matlabu chybí funkce, ale vypočteme gamma koeficient:
% $\gamma=\frac{N_c-N_d}{N_c+N_d}$, \gamma\in(-1,1)
% uspořádaná kontingenční tabulka data v souladu pro obě veličiny
% hlavní diagonála - přímá vazba
% vedlejší diagonála - nepřímá vazba
% Hledáme souvislosti mezi počtem dětí v rodině a počtem pokojů v bytě, kde bydlí. Data jsme setřídili do následujících kategorií: počet dětí -  1 dítě, 2 dětí, 3 a více, počet pokojů - 1, 2, 3 a více. Máme kontingenční tabulku:
% $\begin{array}{|c|c|c|}
% \hline\mbox{děti, pokoje}& 1& 2& 3 \mbox{ a více}\\
% \hline
% 1 & 45 & 15 & 17\\
% \hline
% 2 &13& 60 &14\\
% \hline
% 3 \mbox{ a více}& 12 & 29& 95\\
% \hline
% \end{array}$

tab=[45 15 17; 
     13 60 14;
     12 29 95];
Nc=45*(60+14+29+95)+15*(14+95)+13*(29+95)+60*95;
Nd=17*(13+60+12+29)+15*(13+12)+14*(12+29)+60*12;
gamma=(Nc-Nd)/(Nc+Nd)

% Je mezi veličinami přímá nebo nepřímá závislost? Jak výrazná je?
%% Yule's Q koeficient - speciální případ Gamma
% ordinální binární data
% uspořádaná kontingenční tabulka data v souladu pro obě veličiny 2x2
% Hledáme souvislosti mezi počtem dětí v rodině a počtem pokojů v bytě, kde bydlí. Data jsme setřídili do následujících kategorií: počet dětí -  nemají děti / mají děti, počet pokojů - 1 pokoj / více pokojů. Máme kontingenční tabulku:
% $\begin{array}{|c|c|}
% \hline\mbox{děti, pokoje}& 1&  \mbox{ více pokojů}\\
% \hline
% \mbox{nemají děti} & 13  & 5\\
% \hline
% \mbox{ mají děti}& 7 & 19\\
% \hline
% \end{array}$

x=[13 5;
   7 19];
Nc=13*19;
Nd=5*7;
Q=(Nc-Nd)/(Nc+Nd)

% Je mezi veličinami přímá nebo nepřímá závislost? Jak výrazná je?
%% Samostatná práce v Graderu
%
%
%