Zdrojový soubor pro Knit: Rmd soubor
Cieľom cvičenia je jednoduchá aplikácia (prostredníctvom programu R)
niektorých jednovýberových a dvojvýberových štatistických testov na
reálne data. Pre tieto účely bude použitých postupne niekoľko rôznych
datových súborov.
Užitočné materiály pre prácu so štatistickým programom
R
Datové súbory spoločne načítate do programu R pomocou príkazu (počítač musí byť pripojený na internet)
load(url("http://msekce.karlin.mff.cuni.cz/~maciak/NMFM301/cv3.RData"))
Analogickým príkazom môžeme načítať aj niekoľko pomocných funkcii,
ktoré umožňujú priamo spočítať niektoré užitočné charakteristiky – napr.
intervaly spoľahlivosti, prípadne niektoré základné štatistické testy.
Konkrétne sa jedná o funkcie ci.asym()
,
ci.t()
, invalid()
,
kuchej.chisq()
, multitest()
,
plotCI()
, plotmeans()
,
print.multitest()
, print.propor()
,
propor()
a sign.test()
.
load(url("http://msekce.karlin.mff.cuni.cz/~maciak/NMFM301/functions.RData"))
K dispozici sú štyri rôzne datové soubory, pomenované ako
miry
, tlak
, sex
a
deti
.
Pomoci příkazů dim()
, str()
,
head()
a summary()
si zistíme rozsah,
struktúru a formát dat a tiež niektoré základné popisné charakteristiky
(prvého rádu).
Rozsah náhodnych vyběrů a počet sledovaných proměnných:
dim(miry)
dim(tlak)
dim(sex)
dim(deti)
Štruktúra jednotlivych premenných v daných súboroch:
str(miry)
str(tlak)
str(sex)
str(deti)
Niekoľko prvých pozorovaní z každého datového súboru:
head(miry)
head(tlak)
head(sex)
head(deti)
Základné popisné charakteristiky (bez charakteristík druhého rádu – t.j., napr. rozptyl, smerodajná chyba, atď.):
summary(miry)
summary(tlak)
summary(sex)
summary(deti)
Odhadnutá variabilita (resp. variančná-kovariančná matica) dat (popisné charakteristiky druhého rádu):
var(miry[,c("vaha", "vyska")])
var(tlak[,-c(1,3)])
var(sex[,c("vek", "veksex", "pocpart", "pocpart.rok")], na.rm = T)
var(deti[, c("vek", "poc.deti")])
V nasledujúcich častiach sa postupne zameriame na niektoré základne
jednovýberové, dvojvýberové párové a dvojvýberové nepárové štatistické
testy. Jednotlivé testy budú ilustrované na príkladoch naviazaných a
uvedené štyri datové súbory.
Uvažujme náhodný výber \(X_{1}, \dots, X_{n}\) z nejakého spojitého rozdelenia, ktoré je dané distribučnou funkciou \(F_{X}\). Kolmogorovův-Smirnovův test testuje hypotézu \(H_0: F_X(x)=F_0(x) \quad\forall x\in\mathbb{R}\) proti alternativě \(H_1: \exists x\in\mathbb{R}: F_X(x)\neq F_0(x)\), kde \(F_0\) je nějaká pevně specifikovaná spojitá distribuční funkce. Jedná se o neparametrický statistický test, kterého testová statistika je definová
\[ K_n=\sup_{x\in\mathbb{R}}\left|\widehat{F}_{n}(x)-F_0(x)\right|, \]
kde \(\widehat{F}_{n}\) je empirická distribuční funkce náhodného výběru \(X_1,\ldots,X_n\).
Hypotézu zamítáme pro velké hodnoty \(K_n\) nebo \(\sqrt{n}K_n\). Používáme asymptotické kritické hodnoty vypočtené numericky.
Otestujeme hypotézu, že výška obyvatel USA zaznamenaná v datovém
souboru miry
se řídí rozdělením N(168,100). Nejprve
spočítáme a vykreslíme empirickou distribuční funkci a hypotetickou
distribuční funkci. Empirická distribuční funkce se počítá funkcí
ecdf
.
plot(ecdf(miry$vyska),cex.points=0.5, main="")
xpts=seq(135,200,length=500)
lines(xpts,pnorm(xpts,mean=168,sd=10), col = "red")
legend(138, 1, legend = c("Empirická distribuční funkce", "Teoretická distribučni funkce"), col = c("black", "red"),
lty = c(1,1), lwd = c(2,2))
Funkce lines()
doplní na předchozí obrázek propojené
hodnoty hypotetické distribuční funkce spočítané v bodech
xpts
.
Provedeme Kolmogorovův-Smirnovův test pomocí funkce
ks.test()
. Pro help jak zadávat a používat argumenty u této
funkce, použite ?ks.test
. Jako první argument má testovaný
náhodný výběr, další tři argumenty specifikují hypotetickou distribuční
funkci, poslední argument říká, že máme počítat asymptotický test
(nikoli přesný).
ks.test(miry$vyska,"pnorm",mean=168,sd=10,exact=FALSE)
## Warning in ks.test(miry$vyska, "pnorm", mean = 168, sd = 10, exact = FALSE):
## ties should not be present for the Kolmogorov-Smirnov test
##
## One-sample Kolmogorov-Smirnov test
##
## data: miry$vyska
## D = 0.03703, p-value = 0.4993
## alternative hypothesis: two-sided
R nás varuje, že v datech jsou shodné hodnoty (ties), čímž porušujeme předpoklady. Výsledek testu tedy nemusí být spolehlivý. Nyní budeme tento problém ignorovat.
Hodnota testové statistiky \(K_n\) byla 0.037, p-hodnota vyšla 0.4993. Na hladině \(\alpha=0.05\), nemůžeme zamítnout hypotézu, že výška má rozdělení N(168,100).
Nyní opakujte celý postup pro výšku mužů
(miry$vyska[miry$pohl=="Male"]
) a otestujte, zdali má výška
mužů normální rozdělení se střední hodnotou 174 a směrodatnou odchylkou
7.5.
Kolmogorovův-Smirnovův test je definovaný pre obecnou nulovú a
alternatívnu hypotézu (bez předpokladu normality) a proto je v prípade
tejto takto formulovaného testu pomerně slabý v porovnaní so niektorými
inými štatistickými testami, ktoré sú špecificky navrhnuté pre
testovanie nulovej hypotézy, že náhodný výber pochádza z normálneho
rozdelenia.
Silnejší (v tomto prílade aj vhodnejší) test na testovanie normality
náhodného výberu je napr. Shapiro-Wilkův test - v programe R
implementovaný pod funkciou shapiro.test()
. Vyskúšajte
nasledujúci príkaz:
shapiro.test(miry$vyska)
##
## Shapiro-Wilk normality test
##
## data: miry$vyska
## W = 0.99282, p-value = 0.01698
Iný test, ktorý testuje normalitu náhodného výberu na základe
porovnania empirickej šikmosti a špičatosti s teoretickými hodnotami v
normálnom rozdelení je Jarque-Bera test, ktorá je v Rku implementovaný v
knižnici ‘tseries’ (inštalácia knižnice pomocou príkazu
install.packages("tseries")
).
library(tseries)
jarque.bera.test(miry$vyska)
##
## Jarque Bera Test
##
## data: miry$vyska
## X-squared = 5.5187, df = 2, p-value = 0.06333
Jak je to v prípade porovnania požadovanej hladiny u jednotlivých testov?
N <- c(10, 100, 1000, 5000)
power <- NULL
set.seed(1234)
for (n in N){
p1 <- p2 <- p3 <- NULL
for (i in 1:100){
x <- rchisq(n, df = 50)
p1 <- c(p1, as.numeric(ks.test(x,"pnorm",mean=mean(x),sd=sd(x),exact=FALSE)$p.value < 0.05))
p2 <- c(p2, as.numeric(shapiro.test(x)$p.value < 0.05))
p3 <- c(p3, as.numeric(jarque.bera.test(x)$p.value < 0.05))
}
power <- rbind(power, c(n, mean(p1), mean(p2), mean(p3)))
}
plot(power[,4] ~ log10(power[,1]), col = "red", type = "l", pch = 21, bg = "red", xlab = "Logarimus rozsahu náhodného výberu", ylab = "Empirická síla testu")
points(power[,4] ~ log10(power[,1]), pch = 21, bg = "red")
points(power[,3] ~ log10(power[,1]), pch = 21, bg = "blue")
points(power[,2] ~ log10(power[,1]), pch = 21, bg = "green")
lines(power[,3] ~ log10(power[,1]), col = "blue")
lines(power[,2] ~ log10(power[,1]), col = "green")
abline(1,0, col = "black", lty = 3)
legend(1, 1, legend = c("Shapiro-Wilk test", "Jarque-Beta test", "Kolmogorov-Smirnov test"), col = c("blue", "red", "green"), lty= rep(1,3))
Tento test je určený pre testovanie nulovej hypotézy o strednej hodnote náhodného výberu. Matematicky formálne môže test zapísať následovne:
Pre náhodný výber \(X_1, \dots,
X_n\) z normálneho rozdelenia \(N(\mu,
\sigma^2)\), kde \(\mu \in
\mathbb{R}\) je neznámy parameter strednej hodnoty a \(\sigma^2 > 0\) je známy rozptyl,
testujeme nulovú hypotézu \[
H_{0}: \mu = \mu_0,
\] oproti obecnej alternatíve \[
H_{1}: \mu \neq \mu_0,
\] kde \(\mu_0 \in \mathbb{R}\)
je predom zvolená pevna hodnota (stredná hodnota \(X_i\) za platnosti nulovej hypotézy). Za
predpokladu známeho rozptylu \(\sigma^2 >
0\) je jednovýberový t-test založený na testovej štatistike \[
T = \sqrt{n} \frac{\overline{X}_n - \mu_0}{\sigma},
\] ktorá ma za platnosti nulovej hypotézy \(H_0\) štandardné normálne rozdelenie \(N(0,1)\). Nulovú hypotézu zamietame pre
veľké hodnoty testovej štatistiky, konkrétne pre \(|T| > u_{1 - \alpha/2}\). Symbol \(\overline{X}_n\) označuje výberový priemer,
\(u_{1 - \alpha/2}\) je príslušný \(1 - \alpha/2\) kvantil štandardného
normálneho rozdelenia a \(\alpha \in
(0,1)\). Jedná sa o tzv. z-test (presný).
V praxi ale častejšie nastáva situácia, že teoretický rozptyl náhodných veličín \(X_1, \dots, X_n\) je neznámy a preto je nutné použíť výberový rozptyl \(S_n^2 = \frac{1}{n - 1}\sum_{i = 1}^n (X_i - \overline{X}_n)^2\), pričom platí, že pri vhodnom pre3k8lovan9 sa jedná o náhodnú veličinu s \(\chi^2\) rozdelením s \(n - 1\) stupňami voľnosti, teda \[ (n - 1) \frac{S_n^2}{\sigma^2} \sim \chi_{n - 1}^2. \] Z definície studentovho t rozdelenia dostaneme, že prislušná testová štatistika \[ T = \sqrt{n} \frac{\overline{X}_n - \mu_0}{S_n} \] má studentovo t rozdelenie s (n - 1) stupňami voľnosti. Nulovú hypotézu zamietame pre príliš veľké, resp, príliš malé hodnoty \(T\), presnejšie ak \(|T| > q_{n - 1}(1 - \alpha/2)\), kde \(q_{n - 1}(1 - \alpha/2)\) je príslušný \(1 - \alpha/2\) kvantil studentovho t rozdelenia s \(n - 1\) stupňami voľnosti. Jedná sa o tzv. jednovýberový t-test (presný).
Pomocou programu R, s využitím predpokladu normality náhodného výberu (výška ľudí v populácii) môžeme otestovať nulovú hypotézu, že stredná hodnota výšky je 168 cm:
t.test(miry$vyska, mu = 168)
##
## One Sample t-test
##
## data: miry$vyska
## t = -0.22664, df = 499, p-value = 0.8208
## alternative hypothesis: true mean is not equal to 168
## 95 percent confidence interval:
## 167.0099 168.7853
## sample estimates:
## mean of x
## 167.8976
a porovnajte výsledok s
print(mean(miry$vyska))
## [1] 167.8976
print(var(miry$vyska))
## [1] 102.0674
print(sd(miry$vyska))
## [1] 10.10284
print(sqrt(var(miry$vyska)))
## [1] 10.10284
print(T <- sqrt(nrow(miry)) * (mean(miry$vyska) - 168)/sd(miry$vyska))
## [1] -0.2266425
print(2 * pt(- abs(T), df = nrow(miry) - 1))
## [1] 0.8207946
Niekedy nie je reálne/rozumné predpokládať normálne rozdelenie
náhodného výberu. Avšak ak je možné predpokladať aspoň konečný druhý
moment, možeme využíť asymptotický z-test, ktorý má testovú štatistiku
\[
T = \sqrt{n} \frac{\overline{X}_n - \mu_0}{S_n}.
\]
Použitie príkazu t.test()
nie je uplne správne. Prákaz
totíž spočíta správnu hodnotu testovej štatistiky, ale nesprávnu \(p\)-hodnotu. Porovnajte:
print(2 * pnorm(- abs(T)))
print(2 * pt(- abs(T), df = nrow(miry) - 1))
t.test()
zistite, ako testovať a v
programe R implementovať štatistický test pre jednostrannú alternatívu.
Uvažujme opäť náhodný výber \(X_{1}, \dots, X_{n}\) z nejakého spojitého rozdelenia, ktoré je dané distribučnou funkciou \(F_{X}\). Znaménkový test testuje hypotézu \(H_0: m_X=m_0\) proti alternativě \(H_1: m_X\neq m_0\), kde \(m_X\) je teoretický médian rozdelenia \(F_{X}\) a \(m_0\) je nejaká predom zvolená konstanta. Test je založen na testovej statistice \[ Y_n=\sum_{i=1}^n \mathbb{I}_{(0,\infty)}(X_i-m_0). \] Můžeme jej provést přesně (\(Y_n\) má za hypotézy binomické rozdělení) nebo asymptoticky pomocí statistiky \[ \frac{2}{\sqrt{n}}Y_n-\sqrt{n}, \] která má za \(H_0\) přibližně normované normální rozdělení.
Asymptotický test je implementován funkcí sign.test()
.
Jejím prvním argumentem je náhodný výběr, druhým argumentem je
hypotetický medián \(m_0\). Např. test
hypotézy, že medián hmotnosti je 78 kg:
sign.test(miry$vaha,78)
## n Y_n Test. statistika Krit. hodnota
## 500.0000000 267.0000000 1.5205262 1.9599640
## P-hodnota
## 0.1283788
Funkce sign.test()
počítá celkový počet pozorování
n, hodnotu \(Y_n\), hodnotu
asymptotické testové statistiky, kritickou hodnotu pro testování a
p-hodnotu.
Otestujte nyní asymptotickým znaménkovým testem hypotézy, že medián hmotnosti mužů (žen) je 78 kg.
Přesný asymptotický test lze získat pomocí funkce
binom.test()
(jde vlastně o test na parametr binomického
rozdělení). Do této funkce musíme zadat hodnotu \(Y_n\) a hodnotu n.
binom.test(sum(miry$vaha>78),length(miry$vaha))
##
## Exact binomial test
##
## data: sum(miry$vaha > 78) and length(miry$vaha)
## number of successes = 267, number of trials = 500, p-value = 0.1399
## alternative hypothesis: true probability of success is not equal to 0.5
## 95 percent confidence interval:
## 0.4891844 0.5784114
## sample estimates:
## probability of success
## 0.534
Otestujte nyní přesným znaménkovým testem hypotézy, že medián
hmotnosti mužů (žen) je 78 kg. Liší se nějak zásadně výsledky přesného
testu od testu asymptotického? Proč asi?
Nyní budeme pracovat s datovým souborem tlak
, který
obsahuje 2309 pozorování. Nalezneme v něm dvě měření systolického tlaku
v mm Hg (sys.tl.1
a sys.tl.2
) vykonaná na téže
osobě v určitém časovém intervalu (několik minut) a dvě měření
diastolického tlaku (dia.tl.1
a dia.tl.2
).
Dále máme informace o věku (veličina vek
, od 50 let výš) a
pohlaví (veličina pohl
) pacientů.
Nejprve spočítejme průměrný systolický tlak při prvním a druhém měření
mean(tlak$sys.tl.1)
## [1] 132.1369
mean(tlak$sys.tl.2)
## [1] 130.0017
a vykreslime krabicový diagram obou měření. Takto se malují krabicové diagramy dvou veličin (nebo dvou skupin) vedle sebe:
boxplot(c(tlak$sys.tl.1,tlak$sys.tl.2)~rep(1:2,nrow(tlak)),main="Systolický tlak",
names=c("1. měření","2. měření"), col = "lightblue")
Prohlédněme si ještě histogram rozdílů mezi prvním a druhým měřením (s 24 intervaly o délce 2 mm Hg):
hist(tlak$sys.tl.1-tlak$sys.tl.2,breaks=24, col = "lightblue", main = "Rozdíl systolických tlaků", xlab = "Rozdiel systolického a diastolického tlaku")
Řekli byste podle obrázků, že mezi prvním a druhým měřením tlaku je nějaký systematický rozdíl?
Otestujme si, zdali se systematicky liší střední hodnota prvního a
druhého měření systolického tlaku. Problém je třeba řešit párovým
testem, protože se jedná o náhodný výběr dvojic pozorování \((X_i,Y_i)\) učiněných na tom samém
pacientovi \(i\in\{1,\ldots,n\}\).
Párové testy jsou vlastně jednovýběrové testy aplikované na rozdíly
\(Z_i=X_i-Y_i\). Ukážeme si na tomto
příkladě několik různých párových testů.
Párový t-test spočítáme v programu R pomoci příkazu (podívejte se na
help ?t.test
pro pochopení správne implementace).
t.test(tlak$sys.tl.1,tlak$sys.tl.2,paired=TRUE)
##
## Paired t-test
##
## data: tlak$sys.tl.1 and tlak$sys.tl.2
## t = 14.269, df = 2308, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## 1.841697 2.428550
## sample estimates:
## mean of the differences
## 2.135123
T-statistika nabyla hodnoty více než 14, proto s velikou rezervou zamítáme hypotézu o rovnosti středních hodnot. Můžeme tedy tvrdit, že střední hodnota systolického tlaku mezi prvním a druhým měřením klesla.
Párový znaménkový test testuje rovnost středních hodnot, jestliže rozdělení rozdílů mezi prvním a druhým měřením tlaku je symetrické. Pomocí histogramu rozdílů (viz výše) můžeme neformálně posoudit, zdali je tento předpoklad splněn. Myslíte, že ano?
Párový znaménkový test provedeme jako jednovýběrový znaménkový test aplikovaný na rozdíly mezi prvním a druhým měřením tlaku.
sign.test(tlak$sys.tl.1-tlak$sys.tl.2,m0=0)
## n Y_n Test. statistika Krit. hodnota
## 2.309000e+03 1.272000e+03 4.890530e+00 1.959964e+00
## P-hodnota
## 1.005650e-06
Vidíme, že i znaménkový test zamítá hypotézu o rovnosti středních
hodnot. Počet lidí, jimž se mezi oběma měřeními tlak snížil, byl příliš
velký. Poznáte z výstupu funkce sign.test
, kolik jich
bylo?
I párový Wilcoxonův test testuje rovnost středních hodnot za
předpokladu symetrie rozdělení rozdílů mezi prvním a druhým měřením
tlaku. Počítá se funkcí wilcox.test
, argumenty vypadají
podobně jako u párového t-testu.
wilcox.test(tlak$sys.tl.1,tlak$sys.tl.2,paired=TRUE,correct=FALSE)
##
## Wilcoxon signed rank test
##
## data: tlak$sys.tl.1 and tlak$sys.tl.2
## V = 1371104, p-value < 2.2e-16
## alternative hypothesis: true location shift is not equal to 0
Wilcoxonův test také zamítá hypotézu o rovnosti středních
hodnot.
Nyní budeme pracovat s datovým souborem sex
. Tento
soubor obsahuje informace o sexuálním životě 4467 Američanů. Obsahuje
veličiny active
(byl/a někdy sexuálně aktivní?),
veksex
(věk sexuální iniciace - pouze u aktivních),
pocpart
(počet partnerů za celý život),
pocpart.rok
(počet partnerů za uplynulý rok) a dále
demografická data (věk, pohlaví, vzdělání, rodinný status).
Porovnáme nejprve věk při sexuální iniciaci (prvním pohlavním styku) mužů a žen.
Začneme deskriptivní statistikou. Nakreslíme si krabicový diagram věku iniciace pro obě pohlaví
boxplot(veksex~pohl,data=sex, pch = 21, bg = "pink", col = "lightblue")
a spočítáme průměry, mediány a rozptyly pro obě pohlaví. Použijeme k
tomu funkci tapply
(argument na.rm=TRUE
říká,
že se mají vynechat chybějící hodnoty veličiny veksex
).
tapply(sex$veksex,sex$pohl,mean,na.rm=TRUE)
## Male Female
## 17.35301 17.90112
tapply(sex$veksex,sex$pohl,median,na.rm=TRUE)
## Male Female
## 17 17
tapply(sex$veksex,sex$pohl,var,na.rm=TRUE)
## Male Female
## 18.23625 15.54390
Ještě můžeme namalovat průměry věku iniciace a intervaly spolehlivosti pro střední věk iniciace pro obě pohlaví.
plotmeans(veksex~pohl,data=sex,xlab="Pohlavi",ylab="Prumerny vek iniciace")
Nakonec porovnáme empirické distribuční funkce věku iniciace obou pohlaví.
plot(ecdf(sex$veksex[sex$pohl=="Male"]),col="blue",cex.points=0.5,verticals=TRUE,
main="Sexualni iniciace")
lines(ecdf(sex$veksex[sex$pohl=="Female"]),col="red",cex.points=0.5,verticals=TRUE)
legend(40,0.4,lty=1,col=c("blue","red"),legend=c("Muzi","Zeny"))
Nasvědčují podle vás popisné statistiky a grafy tomu, že se věk iniciace mužů a žen může lišit?
Nyní přikročíme k testování několika různými metodami.
Dvouvýběrový Kolmogorovův-Smirnovův test testuje rovnost
distribučních funkcí věku iniciace mužů a žen. Jeho testová statistika
je \[
K_{n,m}=\sup_{x\in\mathbb{R}}\left|\widehat{F}_{X}(x)-\widehat{F}_{Y}(x)\right|.
\] Výsledky nám spočítá funkce ks.test
.
ks.test(sex$veksex[sex$pohl=="Male"],sex$veksex[sex$pohl=="Female"])
## Warning in ks.test(sex$veksex[sex$pohl == "Male"], sex$veksex[sex$pohl == :
## p-value will be approximate in the presence of ties
##
## Two-sample Kolmogorov-Smirnov test
##
## data: sex$veksex[sex$pohl == "Male"] and sex$veksex[sex$pohl == "Female"]
## D = 0.084467, p-value = 5.431e-06
## alternative hypothesis: two-sided
Opět dostáváme varování o výskytu shodných hodnot. Věk iniciace zaokrouhlený na kalendářní rok fakticky není spojitá veličina, proto bychom Kolmogorovův-Smirnovův test raději neměli používat. Nicméně, p-hodnota je velice malá, kdybychom tomuto testu věřili navzdory porušeným předpokladům, zamítli bychom hypotézu o rovnosti distribučních funkcí s velkou rezervou.
Proveďme nyní dvouvýběrový t-test na rovnost středních hodnot. Testová statistika pro hypotézu \(H_0: \mu_X=\mu_Y\) je \[ T_{n,m}=\sqrt{\frac{mn}{n+m}}\,\frac{\overline{X}_{n}-\overline{Y}_{m}}{S_{n,m}}, \] kde \[ S^2_{n,m}=\frac{n-1}{n+m-2}S^2_{X}+\frac{m-1}{n+m-2}S^2_{Y} \] je nestranný odhad společného rozptylu spočítaný z obou výběrů. Tento test předpokládá normalitu a shodné rozptyly. Ani jeden předpoklad není nejspíš splněn, i když porušení normality by při takhle velkém počtu pozorování vadit nemělo.
t.test(sex$veksex[sex$pohl=="Male"],sex$veksex[sex$pohl=="Female"],var.equal=TRUE)
##
## Two Sample t-test
##
## data: sex$veksex[sex$pohl == "Male"] and sex$veksex[sex$pohl == "Female"]
## t = -3.9956, df = 3591, p-value = 6.583e-05
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -0.8170783 -0.2791568
## sample estimates:
## mean of x mean of y
## 17.35301 17.90112
I t-test zamítá rovnost středních hodnot u mužů a u žen s velkou rezervou.
Lépe by bylo použít dvouvýběrový z-test, který nepožaduje normalitu
ani shodnost rozptylů. Jeho testová statistika je \[
Z_{n,m}=\frac{\overline{X}_{n}-\overline{Y}_{m}}{\sqrt{S^2_X/n+S^2_Y/m}}.
\] Tento test dostaneme funkcí t.test
, v níž
vynecháme argument var.equal=TRUE
(požadující shodnost
rozptylů). Kritické hodnoty a p-hodnoty se počítají Welchovou
aproximací.
t.test(sex$veksex[sex$pohl=="Male"],sex$veksex[sex$pohl=="Female"])
##
## Welch Two Sample t-test
##
## data: sex$veksex[sex$pohl == "Male"] and sex$veksex[sex$pohl == "Female"]
## t = -3.9985, df = 3577.5, p-value = 6.503e-05
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -0.8168818 -0.2793533
## sample estimates:
## mean of x mean of y
## 17.35301 17.90112
Welchův test dává prakticky stejné výsledky jako dvouvýběrový t-test
se shodnými rozptyly.