3 Egy- és kétmintás próbák a várható értékre

Ebben a fejezetben olyan statisztikai változókat vizsgálunk, amelyek a normális eloszlásúak és a normális eloszlás egyik paraméterére, a várható értékre vonatkozóan fogalmazunk meg hipotézist. Az egymintás próbákban azt vizsgáljuk, hogy az \(X\) változó értékei általában kisebbek-e vagy nagyobbak-e, mint egy bizonyos hipotetikus érték, míg a páros és független mintás próbákban két változó ugyanakkoraságát vizsgáljuk. Ezek a kérdések mind visszavezethetők a változó(k) középértékére, esetünkben a várható értékére vonatkozó hipotézis megfogalmazására. Az egymintás próbákban azt vizsgáljuk, hogy a várható érték eltér-e egy hipotetikus értéktől. A páros mintás próbákban a változó két különböző helyzetre vagy időpontra vonatkozó várható értékének eltérését vizsgáljuk. A független mintás esetekben pedig a változó két különböző populációbeli várható értékének eltérését vizsgáljuk.

3.1 Egymintás u-próba

Az egymintás u-próba egy ismert \(\sigma\) szórású normális eloszlású változó várható értékére vonatkozó hipotézist teszteli: a \(\mu\) várható érték eltér-e egy előre definiált \(\mu_0\) értéktől.

Alkalmazási feltételek:

  • a minta változója a populációban normális eloszlású
  • a minta változójának a szórása (\(\sigma\)) ismert a populációban

Null- és ellenhipotézisek:

  • Nullhipotézis:
    • \(H_0: \mu=\mu_0\)
  • Ellenhipotézis:
    • \(H_1: \mu \neq \mu_0\) (kétoldali ellenhipotézis) vagy
    • \(H_1: \mu < \mu_0\) (egyoldali, kisebb (bal oldali) ellenhipotézis) vagy
    • \(H_1: \mu > \mu_0\) (egyoldali, nagyobb (jobb oldali) ellenhipotézis)

Próbastatisztika:

A nullhipotézis igaz volta mellett a \(Z\) próbastatisztika standard normális eloszlású.

\[Z=\frac{\bar{X}-\mu_0}{\sigma / \sqrt{n}} \sim N(0,1)\]

3.1.1 Példa kétoldali ellenhipotézisre: földrengés hatása a szorongásra.

Tegyük fel, hogy a szorongás mértéke a populációban normális eloszlású változó \(\mu=50\) és \(\sigma=10\). Egy földrengés után egy véletlen minta adatai a szorongásra a következők: 72, 59, 54, 56, 48, 52, 57, 51, 64, 67. Van hatása a földrengésnek a szorongás szintjére?
Forrás: (Cohen 2013, 162)

A feladat szövegéből kiderül, hogy az egymintás u-próba feltételei teljesülnek. A földrengés hatására a szorongás szintje megváltozhatott, így azt teszteljük, hogy az új, ismeretlen szorongásváltozó várható értéke eltér-e a korábbi 50-es szinttől. Vagyis a következő null- és ellenhipotézist vizsgáljuk:

  • \(H_0: \mu=50\)
  • \(H_1: \mu \neq 50\) (kétoldali ellenhipotézis)

Adatok beolvasása. Az egymintás u-próba végrehajtása előtt létrehozzuk x vektorban a mintát.

# az adatvektor létrehozása
x <- c(72, 59, 54, 56, 48, 52, 57, 51, 64, 67) 

Az egymintás u-próba végrehajtása. A próba végrehajtásához a PASWR2 csomag z.test() függvényét hívjuk. Az argumentumokban megadjuk az adatmintát (x= argumentum), a hipotetikus várható értéket (mu=), és az ismert populációbeli szórást (sigma.x=).

library(PASWR2)
PASWR2::z.test(x = x, mu = 50, sigma.x = 10)
## 
##  One Sample z-test
## 
## data:  x
## z = 2.5298, p-value = 0.01141
## alternative hypothesis: true mean is not equal to 50
## 95 percent confidence interval:
##  51.80205 64.19795
## sample estimates:
## mean of x 
##        58

Az egymintás u-próba értékelése. Az egymintás u-próba eredménye alapján azt mondhatjuk, hogy a földrengés hatására szignifikánsan megnő a szorongás szintje (\(z=2,5298\); \(p = 0,0114\)).

Az egymintás u-próba kézi számolása. A próba outputjában szereplő értékeket a fent megadott próbastatisztika alapján magunk is kiszámolhatjuk:

atlag     <- mean(x, na.rm = T)  # mintaátlag
szoras    <- 10                  # populációbeli szórás
n         <- sum(!is.na(x))      # mintaelemszám
SE        <- szoras/sqrt(n)      # standard hiba
mu.0      <- 50                  # hipotetikus várható érték
z         <- (atlag-mu.0)/SE     # próbastatisztika értéke
z                                # próbastatisztika értékének kiírása
## [1] 2.529822
2*(1-pnorm(q = abs(z)))          # a p érték kétoldali próba esetén
## [1] 0.01141204

Az egymintás u-próbához kapcsolódó konfidenciaintervallum. A próba outputjában szereplő konfidenciaintervallum határait a DescTools csomag MeanCI() függvényével is meghatározhatjuk, de a kézi kiszámolása sem túl bonyolult. Normális eloszlás és ismert \(\sigma\) szórás esetén a várható értékre vonatkozó \(\left(1-\alpha \right)\) megbízhatóságú konfidenciaintervallum:

\[\left] \bar{X}-u_{\alpha}\frac{\sigma}{\sqrt{n}}, \bar{X}+u_{\alpha}\frac{\sigma}{\sqrt{n}} \right[\]

A MeanCI() függvény argumentumában meg kell adnunk az adatmintát (x=), az ismert szórást (sd=), valamint opcionálisan a megbízhatósági szintet (conf.level=) és a hiányzó értékek eltávolítására használatos na.rm=T paramétert.

library(DescTools)
MeanCI(x = x, sd = 10, conf.level = 0.95, na.rm=T)      # 95%-os konfidenciaintervallum
##     mean   lwr.ci   upr.ci 
## 58.00000 51.80205 64.19795
# A 95%-os konfidenciaintervallumra a kézi kiszámolási mód
atlag     <- mean(x, na.rm = T)                     # mintaátlag
szoras    <- 10                                     # populációbeli szórás
n         <- sum(!is.na(x))                         # mintaelemszám
SE        <- szoras/sqrt(n)                         # standard hiba
alfa      <- 0.05                                   # alfa=1-0.95
u.alfa    <- qnorm(p = 1-alfa/2)                    # u_alfa kritikusérték
atlag + c(-u.alfa*SE, u.alfa*SE)                    # a 95%-os konf.intv. határai 
## [1] 51.80205 64.19795

Az alkalmazási feltételek ellenőrzése az egymintás u-próbához. A példa szövege alapján feltételezhetjük a vizsgált szorongás változó normális eloszlását. Ha ez a kitétel hiányozna, akkor a shapiro.test() függvénnyel tesztelhetjük a minta mögötti változó normális eloszlását. A Shapiro-Wilk próba nullhipotézise szerint normális eloszlású a változó. A normalitás ellenőrzésére végezhetünk grafikus vizsgálatot, például rajzolhatunk hisztogramot vagy QQ-ábrát.

shapiro.test(x)                      # normalitás ellenőrzése Shapiro-Wilk-próbával
## 
##  Shapiro-Wilk normality test
## 
## data:  x
## W = 0.95281, p-value = 0.7017
par(mfrow=c(1,3))                    # a grafikus eszköz felosztása 1 sorra és 3 oszlopra
hist(x)                              # normalitás ellenőrzése hisztogrammal
hist(x, freq = F); lines(density(x)) # normalitás ellenőrzése hisztogrammal, és simított gyakorásgi görbével
qqnorm(x);qqline(x)                  # normalitás ellenőrzése QQ-ábrával

par(mfrow=c(1,1))                    # az alapértelmezett felosztás visszaállítása a grafikus eszközön

A Shapiro-Wilk próba eredménye nem cáfolja a változó normalitását (\(p=0,7017\)), és ugyanilyen következtetést vonhatunk le hisztogram és QQ-ábra alapján is.

Leíró statisztikák az egymintás u-próbához. Egyetlen változó esetén nagyon egyszerűen határozzuk meg a leíró statisztikai mutatókat. Az alapértelmezett summary() mellett számos csomagban találunk függvényt a mutatók kiírására. Most a psych csomag describe(), a DescTools csomag Desc() és pastecs csomag stat.desc() függvényére mutatunk példát:

summary(x)                                     # mutatók a beépített summary() függvényével
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   48.00   52.50   56.50   58.00   62.75   72.00
library(psych)
psych::describe(x = x)                         # mutatók a psych csomag describe() függvényével
##   vars  n mean  sd median trimmed  mad min max range skew kurtosis  se
## 1    1 10   58 7.6   56.5    57.5 7.41  48  72    24 0.47     -1.2 2.4
library(DescTools)
Desc(x = x)                                    # mutatók a DescTools csomag Desc() függvényével
## -------------------------------------------------------------------------------------------------- 
## x (numeric)
## 
##   length       n     NAs  unique      0s    mean  meanSE
##       10      10       0     = n       0   58.00    2.40
## 
##      .05     .10     .25  median     .75     .90     .95
##    49.35   50.70   52.50   56.50   62.75   67.50   69.75
## 
##    range      sd   vcoef     mad     IQR    skew    kurt
##    24.00    7.60    0.13    7.41   10.25    0.47   -1.20
##  
## 
##     level  freq   perc  cumfreq  cumperc
## 1      48     1  10.0%        1    10.0%
## 2      51     1  10.0%        2    20.0%
## 3      52     1  10.0%        3    30.0%
## 4      54     1  10.0%        4    40.0%
## 5      56     1  10.0%        5    50.0%
## 6      57     1  10.0%        6    60.0%
## 7      59     1  10.0%        7    70.0%
## 8      64     1  10.0%        8    80.0%
## 9      67     1  10.0%        9    90.0%
## 10     72     1  10.0%       10   100.0%
library(pastecs)
print(stat.desc(x = x, norm=T), digits = 2)    # mutatók a pastecs csomag stat.desc() függvényével
##      nbr.val     nbr.null       nbr.na          min          max        range          sum 
##        10.00         0.00         0.00        48.00        72.00        24.00       580.00 
##       median         mean      SE.mean CI.mean.0.95          var      std.dev     coef.var 
##        56.50        58.00         2.40         5.44        57.78         7.60         0.13 
##     skewness     skew.2SE     kurtosis     kurt.2SE   normtest.W   normtest.p 
##         0.47         0.34        -1.20        -0.45         0.95         0.70

A hatás nagyságának meghatározása az egymintás u-próbában. Az egymintás u-próba esetén a hatás nagysága (effect size):

\[d=\left|\frac{\bar{X}-\mu_0}{\sigma}\right|\]

(mean(x)-50)/10 # Cohen-d kiszámítása
## [1] 0.8

A Cohen-d értéke 0.8, ami azt mutatja, hogy a hatás nagysága jelentős.

Az erő meghatározása egymintás u-próbában. A statisztikai erő meghatározásához a pwr csomag pwr.norm.test() függvényét használjuk. A bemenő paraméterek:

  • n= - a mintaelemszám
  • d= - a hatás nagysága
  • sig.level= - az \(\alpha\) szignifikanciaszint
  • alternative= - az ellenhipotézis formája

A statisztikai erő kiszámításához jelen esetben a populációbeli hatás méretéből (\(d=0,8\)) indulunk ki, de sokszor érdemesebb a legkisebb számunkra érdekes hatásból kiindulva elvégezni a számítást.

library(pwr)
d <- (mean(x)-50)/10 # Cohen-d kiszámítása
pwr.norm.test(d = d, n = 10, sig.level = 0.05, alternative="two.sided")
## 
##      Mean power calculation for normal distribution with known variance 
## 
##               d = 0.8
##               n = 10
##       sig.level = 0.05
##           power = 0.7156166
##     alternative = two.sided

Az output alapján azt mondhatjuk, hogy a próba statisztikai ereje 71,56%-os.

A mintaelemszám meghatározása az egymintás u-próbában. Ha 90%-os statisztikai erőre van szükségünk a próba végrehajtása során, akkor ugyanilyen minimális hatásnagyság kimutatásához (\(d=0,8\)), mekkora mintaelemszámra van szükség?

library(pwr)
pwr.norm.test(d = 0.8, power = 0.9, sig.level = 0.05, alternative="two.sided")
## 
##      Mean power calculation for normal distribution with known variance 
## 
##               d = 0.8
##               n = 16.41786
##       sig.level = 0.05
##           power = 0.9
##     alternative = two.sided

Látható, hogy a 90%-os statisztikai erő eléréséhez (kerekítve) 16 elemű minta szükséges.

Alternatívák az egymintás u-próba végrehajtására. Egymintás u-próba végrehajtásához a BSDA és a TeachingDemos csomag z.test() függvényét is használhatjuk.

library(BSDA)
BSDA::z.test(x = x, mu = 50, sigma.x = 10)
## 
##  One-sample z-Test
## 
## data:  x
## z = 2.5298, p-value = 0.01141
## alternative hypothesis: true mean is not equal to 50
## 95 percent confidence interval:
##  51.80205 64.19795
## sample estimates:
## mean of x 
##        58
library(TeachingDemos)
TeachingDemos::z.test(x = x, mu = 50, stdev = 10)
## 
##  One Sample z-test
## 
## data:  x
## z = 2.5298, n = 10.0000, Std. Dev. = 10.0000, Std. Dev. of the
## sample mean = 3.1623, p-value = 0.01141
## alternative hypothesis: true mean is not equal to 50
## 95 percent confidence interval:
##  51.80205 64.19795
## sample estimates:
## mean of x 
##        58

3.1.2 Példa egyoldali (bal, kisebb) ellenhipotézisre: szorongáscsökkentő mellékhatása

Pszichiáterek új szorongás elleni gyógyszert tesztelnek, amelynek egy lehetséges mellékhatása a pulzusszám csökkenése lehet. Összesen 50 orvostanhallgatónál 6 hetes gyógyszerfogyasztás után megmérték a pulzusszámot, melynek átlaga 70 ütés per perc. Tudjuk, hogy populációban a pulzusszám normális eloszlású, várható érték 72, szórás 12. A pszichiáter levonhatja azt a következtetést, hogy az új gyógyszer csökkenti a pulzusszámot?
Forrás: (Cohen 2013, 162)

Amennyiben a gyógyszer csökkenti a pulzusszámot, akkor az új változó várható értéke kisebb lesz, mint a szokásos 72 ütés per perc. Feltételezzük, hogy az új változó populációbeli szórása marad 12, így bal oldali (kisebb) ellenhipotézissel hajtjuk végre az egymintás u-próbát. A null- és ellenhipotézisek:

  • \(H_0: \mu = 72\)
  • \(H_1: \mu < 72\)

Az egymintás u-próba végrehajtása egyoldali (bal, kisebb) ellenhipotézissel. A példában a minta helyett összesítő adatokat találunk, így a PASWR2 csomagból a zsum.test() függvényt használjuk az egymintás u-próba végrehajtására. Megadjuk a mintaátlagot (mean.x=), a mintaelemek számát (n.x=), az ismert szórást (sigma.x=) és a hipotetikus várható értéket (mu=), valamint nem felejtkezünk el az alternative = "less" argumentumról sem, amely biztosítja, hogy a próba bal oldali legyen.

library(PASWR2)
PASWR2::zsum.test(mean.x = 70, n.x = 50, sigma.x = 12, mu = 72, alternative = "less")
## 
##  One Sample z-test
## 
## data:  User input summarized values for x
## z = -1.1785, p-value = 0.1193
## alternative hypothesis: true difference in means is less than 72
## 95 percent confidence interval:
##      -Inf 72.79141
## sample estimates:
## mean of x 
##        70

Az egymintás u-próba értékelése egyoldali (bal, kisebb) ellenhipotézis esetén. Az egyoldali ellenhipotézissel végrehajtott egymintás u-próba eredménye alapján azt mondhatjuk, hogy nincs elegendő bizonyítékunk arra, hogy a szorongáscsökkentő gyógyszer csökkenti a pulzusszámot (\(z=-1,1785\); \(p = 0,1193\)).

Az egymintás u-próba kézi számolása egyoldali (bal, kisebb) ellenhipotézis esetén. A próba outputjában szereplő értékeket a fent megadott próbastatisztika alapján magunk is kiszámolhatjuk:

atlag     <- 70                  # mintaátlag
szoras    <- 12                  # populációbeli szórás
n         <- 50                  # mintaelemszám
SE        <- szoras/sqrt(n)      # standard hiba
mu.0      <- 72                  # hipotetikus várható érték
z         <- (atlag-mu.0)/SE     # próbastatisztika értéke
z                                # próbastatisztika értékének kiírása
## [1] -1.178511
pnorm(q = z)                     # a p érték egyoldali (bal, kisebb) próba esetén
## [1] 0.1192964

Az egymintás u-próbához kapcsolódó konfidenciaintervallum egyoldali (bal, kisebb) ellenhipotézis esetén. A próba outputjában szereplő konfidenciaintervallum határait magunk is kiszámolhatjuk. Jelen egyoldali bal, kisebb ellenhipotézis (\(H_1: \mu < 72\)) esetében válik világossá a statisztikai próbák és a konfidenciaintervallumok közötti megközelítésbeli különbség. A statisztikai próba a nullhipotézis teljesülése felől közelít (vagyis a populáció hirtelen ismertté válik), és az adatok megfelelését vizsgálja ezen populációbeli eloszláshoz. Bal oldali esetben ez azt jelenti, hogy a kritikus tartomány a bal oldalon helyezkedik el, a megtartási tartomány pedig ettől jobbra található, és egészen a pozitív végtelenig tart. Ugyanis a nullhipotézis állításának a 72 vagy annál nagyobb átlagok teljesen megfelelnek, az ellenhipotézis szerint csak a 72-nél kisebb értékek a kritikusak. A konfidenciaintervallum készítése az adatokból indul ki, és azt vizsgálja, hogy a populációbeli hipotetikus érték megfelel-e ennek az intervallumnak (vagyis beleesik vagy sem). Bal oldali ellenhipotézis esetén az adatok alapján készített konfidenciaintervallum a mínusz végtelentől egy adott értékig tart, és az adatoknak megfelelő populációbeli várható értékeket tartalmazza. Ha a hipotetikus 72 érték beleesik ebbe az intervallumba, akkor a nullhipotézist támogatjuk, ha azonban ettől az intervallumtól jobbra helyezkedik el, akkor az ellenhipotézist, miszerint populációbeli várható érték kisebb a 72 hipotetikus értéknél.

Normális eloszlás és ismert \(\sigma\) szórás esetén a várható értékre vonatkozó bal oldali \(\left(1-\alpha \right)\) megbízhatóságú konfidenciaintervallum:

\[\left] - \infty , \bar{X}+u_{\alpha}\frac{\sigma}{\sqrt{n}} \right[\]

# A bal oldali 95%-os konfidenciaintervallumra a kézi kiszámolási mód
atlag     <- 70                      # mintaátlag
szoras    <- 12                      # populációbeli szórás
n         <- 50                      # mintaelemszám
SE        <- szoras/sqrt(n)          # standard hiba
alfa      <- 0.05                    # alfa=1-0.95
u.alfa    <- qnorm(p = 1-alfa)       # u_alfa kritikusérték
atlag + c(-Inf, u.alfa*SE)           # a bal odali 95%-os konf.intv. határai 
## [1]     -Inf 72.79141

Az egymintás u-próbában a hatás nagyságának meghatározása egyoldali (bal, kisebb) ellenhipotézis esetén. Az egymintás u-próba esetén a hatás nagysága (effect size):

\[d=\left|\frac{\bar{X}-\mu_0}{\sigma}\right|\]

abs((70-72)/12) # Cohen-d kiszámítása
## [1] 0.1666667

A Cohen-d értéke 0,17, ami azt mutatja, hogy a hatás kis mértékű.

Az egymintás u-próbában az erő meghatározása egyoldali (bal, kisebb) ellenhipotézis esetén. A statisztikai erő meghatározásához a pwr csomag pwr.norm.test() függvényét használjuk. A bemenő paraméterek:

  • n= - a mintaelemszám
  • d= - a hatás nagysága
  • sig.level= - az \(\alpha\) szignifikanciaszint
  • alternative= - az ellenhipotézis formája
library(pwr)
d <- -0.1666666 # Cohen-d értéke, előjelesen
pwr.norm.test(d = d, n = 50, sig.level = 0.05, alternative="less")
## 
##      Mean power calculation for normal distribution with known variance 
## 
##               d = -0.1666666
##               n = 50
##       sig.level = 0.05
##           power = 0.3204851
##     alternative = less

Az output alapján azt mondhatjuk, hogy a próba statisztikai ereje 32%-os.

Mintaelemszám meghatározása az egymintás u-próbában egyoldali (bal, kisebb) ellenhipotézis esetén. Ha 80%-os statisztikai erőre van szükségünk a próba végrehajtása során, akkor ugyanilyen hatásnagyság kimutatásához (\(d=-0,167\)), mekkora mintaelemszámra van szükség?

d <- -0.1666666 # Cohen-d értéke, előjelesen
pwr.norm.test(d = d, power = 0.8, sig.level = 0.05, alternative="less")
## 
##      Mean power calculation for normal distribution with known variance 
## 
##               d = -0.1666666
##               n = 222.5722
##       sig.level = 0.05
##           power = 0.8
##     alternative = less

Látható, hogy a 80%-os statisztikai erő eléréséhez (kerekítve) 223 elemű minta szükséges.

3.1.3 Példa egyoldali (jobb, nagyobb) ellenhipotézisre: az elfojtott düh hatása

Egy elképzelt vizsgálatban annak a 64 tanulónak, akik nagyon magas pontszámot értek el egy a dühvel kapcsolatos kérdőíven, megmérték a szisztolés vérnyomását. Az átlag 124 Hgmm lett. A populációban a szisztolés vérnyomás normális eloszlású: \(N(120, 10)\). Következtethetünk arra, hogy az elfojtott düh kapcsolatban van a magas vérnyomással?
Forrás: (Cohen 2013, 162)

Az elfojtott düh vérnyomásnövelő hatását úgy tudnánk bizonyítani, ha a vizsgált populációban a szisztolés vérnyomás a szokásos 120 Hgmm-nél nagyobb lenne. Az egymintás u-próba feltételei teljesülnek, melyet most jobb oldali (nagyobb) ellenhipotézissel hajtjuk végre. A null- és ellenhipotézisek:

  • \(H_0: \mu = 120\)
  • \(H_1: \mu > 120\)

Az egymintás u-próba végrehajtása egyoldali (jobb, nagyobb) ellenhipotézissel. Ez a példa sem tartalmazza a mintát, így itt is a PASWR2 csomag zsum.test() függvényét használjuk. A jobb oldali ellenhipotézis miatt az alternative = "greater" argumentummal hívjuk a függvényt.

library(PASWR2)
PASWR2::zsum.test(mean.x = 124, n.x = 64, sigma.x = 10, mu = 120, alternative = "greater")
## 
##  One Sample z-test
## 
## data:  User input summarized values for x
## z = 3.2, p-value = 0.0006871
## alternative hypothesis: true difference in means is greater than 120
## 95 percent confidence interval:
##  121.9439      Inf
## sample estimates:
## mean of x 
##       124

Az egymintás u-próba értékelése egyoldali (jobb, nagyobb) ellenhipotézis esetén. Az egyoldali ellenhipotézissel végrehajtott egymintás u-próba eredménye alapján azt mondhatjuk, hogy az elfojtott düh szignifikánsan megnöveli a szisztolés vérnyomás mértékét (\(z=3,2\); \(p = 0,0007\)).

Az egymintás u-próba kézi számolása egyoldali (jobb, nagyobb) ellenhipotézis esetén. A próba outputjában szereplő értékeket a fent megadott próbastatisztika alapján magunk is kiszámolhatjuk:

atlag     <- 124                 # mintaátlag
szoras    <- 10                  # populációbeli szórás
n         <- 64                  # mintaelemszám
SE        <- szoras/sqrt(n)      # standard hiba
mu.0      <- 120                 # hipotetikus várható érték
z         <- (atlag-mu.0)/SE     # próbastatisztika értéke
z                                # próbastatisztika értékének kiírása
## [1] 3.2
1-pnorm(q = z)                   # a p érték egyoldali (jobb, nagyobb) próba esetén
## [1] 0.0006871379

Az egymintás u-próbához kapcsolódó konfidenciaintervallum egyoldali (jobb, nagyobb) ellenhipotézis esetén. A próba outputjában szereplő konfidenciaintervallum határait magunk is kiszámolhatjuk. Jelen egyoldali jobb, nagyobb ellenhipotézis (\(H_1: \mu > 120\)) esetében szintén jól érzékelhető a statisztikai próbák és a konfidenciaintervallumok közötti megközelítésbeli különbség. A statisztikai próba a nullhipotézis teljesülése felől közelít (vagyis a populáció hirtelen ismertté válik), és az adatok megfelelését vizsgálja ezen populációbeli eloszláshoz. Jobb oldali esetben ez azt jelenti, hogy a kritikus tartomány a jobb oldalon helyezkedik el, a megtartási tartomány pedig ettől balra található, és egészen a negatív végtelenig tart. Ugyanis a nullhipotézis állításának a 120 vagy annál kisebb átlagok teljesen megfelelnek, az ellenhipotézis szerint csak a 120-nél nagyobb értékek a kritikusak. A konfidenciaintervallum készítése az adatokból indul ki, és azt vizsgálja, hogy a populációbeli hipotetikus érték megfelel-e ennek az intervallumnak (vagyis beleesik vagy sem). Jobb oldali ellenhipotézis esetén az adatok alapján készített konfidenciaintervallum a plusz végtelentől egy adott értékig tart, és az adatoknak megfelelő populációbeli várható értékeket tartalmazza. Ha a hipotetikus 120 érték beleesik ebbe az intervallumba, akkor a nullhipotézist támogatjuk, ha azonban ettől az intervallumtól balra helyezkedik el, akkor az ellenhipotézist, miszerint populációbeli várható érték nagyobb a 120 hipotetikus értéknél.

Normális eloszlás és ismert \(\sigma\) szórás esetén a várható értékre vonatkozó jobb oldali \(\left(1-\alpha \right)\) megbízhatóságú konfidenciaintervallum:

\[\left] \bar{X}-u_{\alpha}\frac{\sigma}{\sqrt{n}}, + \infty \right[\]

# A jobb oldali 95%-os konfidenciaintervallumra a kézi kiszámolási mód
atlag     <- 124                     # mintaátlag
szoras    <- 10                      # populációbeli szórás
n         <- 64                      # mintaelemszám
SE        <- szoras/sqrt(n)          # standard hiba
alfa      <- 0.05                    # alfa=1-0.95
u.alfa    <- qnorm(p = 1-alfa)       # u_alfa kritikusérték
atlag + c(-u.alfa*SE, Inf)           # a bal odali 95%-os konf.intv. határai 
## [1] 121.9439      Inf

Az egymintás u-próbában a hatás nagyságának meghatározása egyoldali (jobb, nagyobb) ellenhipotézis esetén. Az egymintás u-próba esetén a hatás nagysága (effect size):

\[d=\left|\frac{\bar{X}-\mu_0}{\sigma}\right|\]

abs((124-120)/10) # Cohen-d kiszámítása
## [1] 0.4

A Cohen-d értéke 0.17, ami azt mutatja, hogy a hatás közepes mértékű.

Az egymintás u-próbában az erő meghatározása egyoldali (jobb, nagyobb) ellenhipotézis esetén. A statisztikai erő meghatározásához a pwr csomag pwr.norm.test() függvényét használjuk. A bemenő paraméterek:

  • n= - a mintaelemszám
  • d= - a hatás nagysága
  • sig.level= - az \(\alpha\) szignifikanciaszint
  • alternative= - az ellenhipotézis formája
library(pwr)
d <- 0.4      # Cohen-d értéke, előjelesen
pwr.norm.test(d = d, n = 64, sig.level = 0.05, alternative="greater")
## 
##      Mean power calculation for normal distribution with known variance 
## 
##               d = 0.4
##               n = 64
##       sig.level = 0.05
##           power = 0.9400444
##     alternative = greater

Az output alapján azt mondhatjuk, hogy a próba statisztikai ereje 94%-os.

Mintaelemszám meghatározása az egymintás u-próbában egyoldali (jobb, nagyobb) ellenhipotézis esetén. Ha 80%-os statisztikai erőre van szükségünk a próba végrehajtása során, akkor ugyanilyen hatásnagyság kimutatásához (\(d=0,4\)), mekkora mintaelemszámra van szükség?

d <- 0.4    # Cohen-d értéke, előjelesen
pwr.norm.test(d = d, power = 0.8, sig.level = 0.05, alternative="greater")
## 
##      Mean power calculation for normal distribution with known variance 
## 
##               d = 0.4
##               n = 38.64099
##       sig.level = 0.05
##           power = 0.8
##     alternative = greater

Látható, hogy a 80%-os statisztikai erő eléréséhez már egy (kerekítve) 39 elemű minta elegendő.

3.2 Páros u-próba

A páros u-próba két összetartozó minta esetén a különbségváltozó várható értékének (\(\mu_d=\mu_1-\mu_2\)) adott értéktől (\(d_0\)) való eltérését vizsgálja, miközben a különbségváltozó populációbeli szórása ismert.

Alkalmazási feltételek:

  • véletlen, összetartozó (páros) minta: \((X_1, X_2)\)
  • az \(X_1\) és \(X_2\) normális eloszlású (elegendő, ha a \(X_1-X_2\) különbségváltozó normális eloszlású)
  • ismert \(\sigma_d\) populációbeli szórás a \(X_1-X_2\) különbségváltozóra

Null- és ellenhipotézisek:

  • Nullhipotézis:
    • \(H_0: \mu_d=d_0\)
    • ha \(d_0=0\), akkor \(H_0: \mu_1-\mu_2=0\) vagy \(H_0: \mu_1=\mu_2\) formában is írható
  • Ellenhipotézis:
    • \(H_1: \mu_d \neq d_0\) (kétoldali ellenhipotézis) vagy
    • \(H_1: \mu_d < d_0\) (egyoldali, kisebb (bal oldali) ellenhipotézis) vagy
    • \(H_1: \mu_d > d_0\) (egyoldali, nagyobb (jobb oldali) ellenhipotézis)
    • ha \(d_0=0\), akkor a fenti ellenhipotézisek:
      • \(H_1: \mu_1\neq\mu_2\) (kétoldali ellenhipotézis) vagy
      • \(H_1: \mu_1<\mu_2\) (egyoldali, kisebb (bal oldali) ellenhipotézis) vagy
      • \(H_1: \mu_1>\mu_2\) (egyoldali, nagyobb (jobb oldali) ellenhipotézis)

Próbastatisztika:

\[Z=\frac{(\bar{X_1}-\bar{X_2})-d_0}{\sigma_d/\sqrt{n}} \sim N(0,1)\]

3.2.1 Példa: intelligencia pontszám változása.

Tréning előtt (IQ1 változó) és tréning után (IQ2 változó) intelligencia tesztet töltettünk ki 20 személlyel. A változás szokásos mértéke IQ1-IQ2 = -10. Vizsgáljuk meg, hogy a mintánk megfelel-e a várakozásnak? Az intelligencia teszten elért pontok különbségének populációbeli szórása \(\sigma_d=1,4\).
Forrás: (Taeger and Kuhnt 2014)

A feladatban a két időpontban mért IQ változó várható értékének különbségét vizsgáljuk. A páros t-próba null- és ellenhipotézise:

  • \(H_0: \mu_1-\mu_2=-10\)
  • \(H_1: \mu_1-\mu_2 \neq -10\)

Adatok beolvasása. Első lépésben beolvassuk az adatokat egy d adattáblába. Az adattábla tartalmazza a személyek azonosítóját (no változó), és a két időpontban mért intelligencia pontszámot (IQ1 és IQ2).

d <- read.table(file = textConnection("
no,IQ1,IQ2
1,127,137
2,98,108
3,105,115
4,83,93
5,133,143
6,90,100
7,107,117
8,98,108
9,91,101
10,100,110
11,88,98
12,96,106
13,110,120
14,87,97
15,88,98
16,88,100
17,105,115
18,95,111
19,79,89
20,106,116
"), header=T, sep=",")
d$no <- factor(d$no)                               # a személyek sorszámát faktorrá alakítjuk
str(d)                                             # az adattábla szerkezete
## 'data.frame':    20 obs. of  3 variables:
##  $ no : Factor w/ 20 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10 ...
##  $ IQ1: int  127 98 105 83 133 90 107 98 91 100 ...
##  $ IQ2: int  137 108 115 93 143 100 117 108 101 110 ...
d                                                  # a beolvasott adattábla
##    no IQ1 IQ2
## 1   1 127 137
## 2   2  98 108
## 3   3 105 115
## 4   4  83  93
## 5   5 133 143
## 6   6  90 100
## 7   7 107 117
## 8   8  98 108
## 9   9  91 101
## 10 10 100 110
## 11 11  88  98
## 12 12  96 106
## 13 13 110 120
## 14 14  87  97
## 15 15  88  98
## 16 16  88 100
## 17 17 105 115
## 18 18  95 111
## 19 19  79  89
## 20 20 106 116

A páros adatok vizsgálatához is előkészítjük adatainkat. A PairedData csomag paired() függvényét használjuk az átalakításhoz. A későbbiekben a d és d.paired adattáblákat is használni fogjuk.

library(PairedData)
d.paired <- with(d, paired(IQ1, IQ2))              # adatelőkészítés a PairedData csomag használatához
d.paired                                           # a páros minta
## Object of class "paired"
##    IQ1 IQ2
## 1  127 137
## 2   98 108
## 3  105 115
## 4   83  93
## 5  133 143
## 6   90 100
## 7  107 117
## 8   98 108
## 9   91 101
## 10 100 110
## 11  88  98
## 12  96 106
## 13 110 120
## 14  87  97
## 15  88  98
## 16  88 100
## 17 105 115
## 18  95 111
## 19  79  89
## 20 106 116

A páros u-próba végrehajtása. A páros u-próba végrehajtásához a PASWR2 csomag z.test() függvényét használjuk. Megadjuk a páros mintát az x= és y= argumentumokban, továbbá a különbségváltozó populációbeli szórását (sigma.d=), a hipotetikus különbséget (mu=) és a próba összetartozó jellegét biztosító paired=T argumentumot.

library(PASWR2)
PASWR2::z.test(x = d$IQ1, y = d$IQ2, sigma.d = 1.4, mu = -10, paired = T)
## 
##  Paired z-test
## 
## data:  d$IQ1 and d$IQ2
## z = -1.2778, p-value = 0.2013
## alternative hypothesis: true difference in means is not equal to -10
## 95 percent confidence interval:
##  -11.013566  -9.786434
## sample estimates:
## mean of the differences 
##                   -10.4

A páros u-próba értékelése. A páros u-próba eredménye alapján azt mondhatjuk, hogy nincs elegendő bizonyítékunk, hogy az IQ szokásos 10 pontos növekedését megcáfoljuk (\(z=-1,2778\); \(p = 0,2013\)).

A páros u-próba kézi számolása. A próba outputjában szereplő értékeket magunk is kiszámolhatjuk:

atlag   <- mean(d$IQ1 - d$IQ2, na.rm = T) # a különbségváltozó mintaátlaga
szoras  <- 1.4                            # populációbeli szórás
n       <- sum(!is.na(d$IQ1))             # mintaelemszám
SE      <- szoras/sqrt(n)                 # standard hiba
d.0     <- -10                            # a különbségváltozó hipotetikus várható értéke
z       <- (atlag-d.0)/SE                 # próbastatisztika értéke
z                                         # próbastatisztika értékének kiírása
## [1] -1.277753
2*(1-pnorm(q = abs(z)))                   # a p érték kétoldali próba esetén
## [1] 0.2013365

Konfidenciaintervallum kézi számolása páros u-próba esetén. Az \(\left( 1-\alpha \right)\) konfidenciaintervallum kiszámítása nem tér el az egymintás esettől, csak most a különbségváltozóval kell számolnunk.

\[\left] (\bar{X_1}-\bar{X_2})-u_{\alpha}\frac{\sigma_d}{\sqrt{n}}, (\bar{X_1}-\bar{X_2})+u_{\alpha}\frac{\sigma_d}{\sqrt{n}} \right[\]

# A 95%-os konfidenciaintervallumra a kézi kiszámolási mód
atlag     <- mean(d$IQ1-d$IQ2, na.rm = T)           # a különbségváltozó mintaátlaga
szoras    <- 1.4                                    # populációbeli szórás
n         <- sum(!is.na(d$IQ1))                     # mintaelemszám
SE        <- szoras/sqrt(n)                         # standard hiba
alfa      <- 0.05                                   # alfa=1-0.95
u.alfa    <- qnorm(p = 1-alfa/2)                    # u_alfa kritikusérték
atlag + c(-u.alfa*SE, u.alfa*SE)                    # a 95%-os konf.intv. határai 
## [1] -11.013566  -9.786434

Alkalmazási feltételek ellenőrzése páros u-próbához. A páros u-próba feltételeinek ellenőrzése történhet Shapiro-Wilk próbával:

shapiro.test(d$IQ1)                 # normalitás ellenőrzése Shapiro-Wilk-próbával
## 
##  Shapiro-Wilk normality test
## 
## data:  d$IQ1
## W = 0.91329, p-value = 0.07364
shapiro.test(d$IQ2)                 # normalitás ellenőrzése Shapiro-Wilk-próbával
## 
##  Shapiro-Wilk normality test
## 
## data:  d$IQ2
## W = 0.92045, p-value = 0.1011
shapiro.test(d$IQ1-d$IQ2)           # normalitás ellenőrzése Shapiro-Wilk-próbával
## 
##  Shapiro-Wilk normality test
## 
## data:  d$IQ1 - d$IQ2
## W = 0.32979, p-value = 0.0000000127

A fenti outputokból kiolvasható, hogy IQ1 és IQ2 normalitását nem tudjuk megcáfolni, a különbségváltozó azonban nem normális eloszlású.

Leíró statisztikai vizsgálatok a páros u-próbához. A PairedData csomag summary() függvénye az előkészített d.paired adattábla esetén a páros mintáknál megszokott mutatókat jeleníti meg. Mutatókat kapunk a két összetartozó mintára, azok különbségére és átlagára is.

library(PairedData)
PairedData::summary(d.paired)                             # mutatók a páros mintára  
## $stat
##          n  mean median      trim        sd  IQR (*) median ad (*)
## IQ1 (x) 20  98.7     97  96.66667 13.727038 12.78725       13.3434
## IQ2 (y) 20 109.1    108 107.33333 13.630075 11.67532       11.8608
## x-y     20 -10.4    -10 -10.00000  1.391705  0.00000        0.0000
## (x+y)/2 20 103.9    103 102.00000 13.660932 12.23128       12.6021
##         mean ad (*)    sd(w) min max
## IQ1 (x)  12.7838042 11.95591  79 133
## IQ2 (y)  12.6584728 11.84861  89 143
## x-y       0.5013257  0.00000 -16 -10
## (x+y)/2  12.5331414 11.85292  84 138
## 
## $cor
##             cor      wcor
## (x,y) 0.9948492 0.9834514

Grafikus lehetőséges páros u-próbára. A PairedData csomag az előkészített d.paired adattáblára grafikus megjelenítést is lehetővé tesz. Rajzolhatunk kétdimenziós pontdiagramot, valamint dobozdiagramot a párosított mintaelemek megjelenítésével is.

library(gridExtra)
library(PairedData)
p1 <- plot(d.paired) + theme_bw()                         # kétdimenziós pontdiagram
p2 <- plot(d.paired, type="profile") + theme_bw()         # dobozdiagram és a páros mintaelemek
grid.arrange(p1, p2, ncol = 2)                            # ábrák megjelenítése

A páros u-próbában a hatás nagyságának meghatározása. Páros u-próba esetén a hatás nagysága (effect size):

\[d=\left|\frac{(\bar{X_1}-\bar{X_2})-d_0}{\sigma}\right|\]

(mean(d$IQ1-d$IQ2, na.rm = T) - -10)/1.4              # Cohen-d kiszámítása
## [1] -0.2857143

A Cohen-d értéke 0,29, ami azt mutatja, hogy a hatás kis-közepes mértékű.

A páros u-próbában az erő meghatározása. A statisztikai erő meghatározásához a pwr csomag pwr.norm.test() függvényét használjuk. A bemenő paraméterek:

  • n= - a mintaelemszám
  • d= - a hatás nagysága
  • sig.level= - az \(\alpha\) szignifikanciaszint
  • alternative= - az ellenhipotézis formája
library(pwr)
pwr.norm.test(d = 0.29, n = 20, sig.level = 0.05, alternative="two.sided")
## 
##      Mean power calculation for normal distribution with known variance 
## 
##               d = 0.29
##               n = 20
##       sig.level = 0.05
##           power = 0.2542142
##     alternative = two.sided

Az output alapján azt mondhatjuk, hogy a próba statisztikai ereje 25%-os.

Mintaelemszám meghatározása a páros u-próbában. Ha 80%-os statisztikai erőre van szükségünk a próba végrehajtása során, akkor ugyanilyen hatásnagyság kimutatásához (\(d=0,29\)), mekkora mintaelemszámra van szükség?

library(pwr)
pwr.norm.test(d = 0.29, power = 0.8, sig.level = 0.05, alternative="two.sided")
## 
##      Mean power calculation for normal distribution with known variance 
## 
##               d = 0.29
##               n = 93.32771
##       sig.level = 0.05
##           power = 0.8
##     alternative = two.sided

Látható, hogy a 80%-os statisztikai erő eléréséhez (kerekítve) 93 elemű minta szükséges.

3.3 Kétmintás u-próba

Azt teszteljük, hogy két független változó várható értékének különbsége (\(\mu_d=\mu_1-\mu_2\)) eltér-e egy adott értéktől (\(d_0\)). A változók normális eloszlásúak és \(\sigma_1\), \(\sigma_2\) szórásuk ismert.

Alkalmazási feltételek:

  • két véletlen független minta: \(X_1\) és \(X_2\)
  • \(X_1\) és \(X_2\) normális eloszlású a populációban
  • ismert \(\sigma_1\) és \(\sigma_2\) populációbeli szórás az \(X_1\) és \(X_2\) változókra

Null- és ellenhipotézisek:

  • Nullhipotézis:
    • \(H_0: \mu_d=d_0\)
    • ha \(d_0=0\), akkor \(H_0: \mu_1-\mu_2=0\) vagy \(H_0: \mu_1=\mu_2\) formában is írható
  • Ellenhipotézis:
    • \(H_1: \mu_d \neq d_0\) (kétoldali ellenhipotézis) vagy
    • \(H_1: \mu_d < d_0\) (egyoldali, kisebb (bal oldali) ellenhipotézis) vagy
    • \(H_1: \mu_d > d_0\) (egyoldali, nagyobb (jobb oldali) ellenhipotézis)
    • ha \(d_0=0\), akkor a fenti ellenhipotézisek:
      • \(H_1: \mu_1\neq\mu_2\) (kétoldali ellenhipotézis) vagy
      • \(H_1: \mu_1<\mu_2\) (egyoldali, kisebb (bal oldali) ellenhipotézis) vagy
      • \(H_1: \mu_1>\mu_2\) (egyoldali, nagyobb (jobb oldali) ellenhipotézis)

Próbastatisztika:

\[Z=\frac{(\bar{X_1}-\bar{X_2})-d_0}{\sqrt{\frac{\sigma_1^2}{n_1} + \frac{\sigma_2^2}{n_2}}} \sim N(0,1)\]

3.3.1 Példa: magas vérnyomás

Azt vizsgáljuk, hogy egészségesek és magas vérnyomásban szenvedők körében eltér-e a szisztolés vérnyomás. Az egészséges csoportban (status=0), a populációbeli szórás \(\sigma_1=10\), a mintaelemszám \(n_1=25\), míg a betegek körében (status=1) \(\sigma_2=12\) és \(n_2=30\).
Forrás: (Taeger and Kuhnt 2014)

A normális eloszlás és az ismert szórások lehetővé teszik, hogy a két populációban vizsgált szisztolés vérnyomás változó várható értékének egyformaságát kétmintás u-próba segítségével vizsgálhassuk:

  • \(H_0: \mu_1=\mu_2\)
  • \(H_1: \mu_1 \neq \mu_2\)

Adatok beolvasása. Végezzük el az adatok beolvasását a d adattáblába. A no és status numerikus oszlopokat faktorrá alakítjuk.

d <- read.table(file = textConnection("
no,status,mmhg
1,0,120
2,0,115
3,0,94
4,0,118
5,0,111
6,0,102
7,0,102
8,0,131
9,0,104
10,0,107
11,0,115
12,0,139
13,0,115
14,0,113
15,0,114
16,0,105
17,0,115
18,0,134
19,0,109
20,0,109
21,0,93
22,0,118
23,0,109
24,0,106
25,0,125
26,1,150
27,1,142
28,1,119
29,1,127
30,1,141
31,1,149
32,1,144
33,1,142
34,1,149
35,1,161
36,1,143
37,1,140
38,1,148
39,1,149
40,1,141
41,1,146
42,1,159
43,1,152
44,1,135
45,1,134
46,1,161
47,1,130
48,1,125
49,1,141
50,1,148
51,1,153
52,1,145
53,1,137
54,1,147
55,1,169
"), header=T, sep=",")
d$no     <- factor(d$no)                                               # a személyek sorszámát faktorrá alakítjuk
d$status <- factor(d$status, labels=c("egészséges", "magas vérnyomás"))# a status faktorrá alakítása
str(d)                                                                 # az adattábla szerkezete
## 'data.frame':    55 obs. of  3 variables:
##  $ no    : Factor w/ 55 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10 ...
##  $ status: Factor w/ 2 levels "egészséges","magas vérnyomás": 1 1 1 1 1 1 1 1 1 1 ...
##  $ mmhg  : int  120 115 94 118 111 102 102 131 104 107 ...
d                                                                      # a beolvasott adattábla
##    no          status mmhg
## 1   1      egészséges  120
## 2   2      egészséges  115
## 3   3      egészséges   94
## 4   4      egészséges  118
## 5   5      egészséges  111
## 6   6      egészséges  102
## 7   7      egészséges  102
## 8   8      egészséges  131
## 9   9      egészséges  104
## 10 10      egészséges  107
## 11 11      egészséges  115
## 12 12      egészséges  139
## 13 13      egészséges  115
## 14 14      egészséges  113
## 15 15      egészséges  114
## 16 16      egészséges  105
## 17 17      egészséges  115
## 18 18      egészséges  134
## 19 19      egészséges  109
## 20 20      egészséges  109
## 21 21      egészséges   93
## 22 22      egészséges  118
## 23 23      egészséges  109
## 24 24      egészséges  106
## 25 25      egészséges  125
## 26 26 magas vérnyomás  150
## 27 27 magas vérnyomás  142
## 28 28 magas vérnyomás  119
## 29 29 magas vérnyomás  127
## 30 30 magas vérnyomás  141
## 31 31 magas vérnyomás  149
## 32 32 magas vérnyomás  144
## 33 33 magas vérnyomás  142
## 34 34 magas vérnyomás  149
## 35 35 magas vérnyomás  161
## 36 36 magas vérnyomás  143
## 37 37 magas vérnyomás  140
## 38 38 magas vérnyomás  148
## 39 39 magas vérnyomás  149
## 40 40 magas vérnyomás  141
## 41 41 magas vérnyomás  146
## 42 42 magas vérnyomás  159
## 43 43 magas vérnyomás  152
## 44 44 magas vérnyomás  135
## 45 45 magas vérnyomás  134
## 46 46 magas vérnyomás  161
## 47 47 magas vérnyomás  130
## 48 48 magas vérnyomás  125
## 49 49 magas vérnyomás  141
## 50 50 magas vérnyomás  148
## 51 51 magas vérnyomás  153
## 52 52 magas vérnyomás  145
## 53 53 magas vérnyomás  137
## 54 54 magas vérnyomás  147
## 55 55 magas vérnyomás  169

A kétmintás u-próba végrehajtása. A kétmintás u-próba végrehajtását a PASWR2 csomag z.test() függvényével kezdeményezzük. Megadjuk mindkét független mintát az x= és y= argumentumokban, majd a minták mögötti populáció ismert szórásait közöljük (sigma.x= és sigma.y).

library(PASWR2)
PASWR2::z.test(x = d$mmhg[ d$status %in% "egészséges"], 
               y = d$mmhg[ d$status %in% "magas vérnyomás"], sigma.x = 10, sigma.y = 12)
## 
##  Two Sample z-test
## 
## data:  d$mmhg[d$status %in% "egészséges"] and d$mmhg[d$status %in% "magas vérnyomás"]
## z = -10.556, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -37.12753 -25.49914
## sample estimates:
## mean of x mean of y 
##  112.9200  144.2333

A kétmintás u-próba értékelése. A kétmintás u-próba eredménye alapján azt mondhatjuk, hogy elegendő bizonyítékunk van arra, hogy a szisztolés vérnyomás szignifikánsan eltér az egészségesek és magas vérnyomásban szenvedők két csoportjában. (\(z=-10,556\); \(p < 0,0001\)).

A kétmintás u-próba kézi számolása. A próba outputjában szereplő értékeket magunk is kiszámolhatjuk:

x.1      <- d$mmhg[ d$status %in% "egészséges"]          # 1. adatminta
x.2      <- d$mmhg[ d$status %in% "magas vérnyomás"]     # 2. adatminta
atlag    <- mean(x.1, na.rm = T) - mean(x.2, na.rm = T)  # mintaátlagok különbsége
szoras.1 <- 10                                           # 1. populációbeli szórás
szoras.2 <- 12                                           # 2. populációbeli szórás
n.1      <- sum(!is.na(x.1))                             # 1. minta elemszáma
n.2      <- sum(!is.na(x.2))                             # 2. minta elemszáma
SE       <- sqrt(szoras.1^2/n.1 + szoras.2^2/n.2)        # közös standard hiba
d.0      <- 0                                            # a különbségváltozó hipotetikus várható értéke
z        <- (atlag-d.0)/SE                               # próbastatisztika értéke
z                                                        # próbastatisztika értékének kiírása
## [1] -10.55572
2*(1-pnorm(q = abs(z)))                                  # a p érték kétoldali próba esetén
## [1] 0

Konfidenciaintervallum kézi számolása kétmintás u-próbához. A próba outputjában szereplő konfidenciaintervallum határait kézi számolással is meghatározzuk. Az \(\left( 1-\alpha \right)\) konfidenciaintervallum kiszámítása:

\[\left] (\bar{X_1}-\bar{X_2})-u_{\alpha}\sqrt{\frac{\sigma_1^2}{n_1} + \frac{\sigma_2^2}{n_2}}, (\bar{X_1}-\bar{X_2})+u_{\alpha}\sqrt{\frac{\sigma_1^2}{n_1} + \frac{\sigma_2^2}{n_2}} \right[\]

# A 95%-os konfidenciaintervallumra a kézi kiszámolási mód
x.1      <- d$mmhg[ d$status %in% "egészséges"]                # 1. adatminta
x.2      <- d$mmhg[ d$status %in% "magas vérnyomás"]           # 2. adatminta
atlag    <- mean(x.1, na.rm = T) - mean(x.2, na.rm = T)        # mintaátlagok különbsége
szoras.1 <- 10                                                 # 1. populációbeli szórás
szoras.2 <- 12                                                 # 2. populációbeli szórás
n.1      <- sum(!is.na(x.1))                                   # 1. minta elemszáma
n.2      <- sum(!is.na(x.2))                                   # 2. minta elemszáma
SE       <- sqrt(szoras.1^2/n.1 + szoras.2^2/n.2)              # közös standard hiba
alfa      <- 0.05                                              # alfa=1-0.95
atlag + c(-u.alfa*SE, u.alfa*SE)                               # a 95%-os konf.intv. határai 
## [1] -37.12753 -25.49914

Alkalmazási feltételek ellenőrzése kétmintás u-próbához. A kétmintás u-próba feltételeinek ellenőrzését a Shapiro-Wilk próbával is elvégezhetjük.

by(d$mmhg, d$status, shapiro.test)   # normalitás ellenőrzése Shapiro-Wilk-próbával
## d$status: egészséges
## 
##  Shapiro-Wilk normality test
## 
## data:  dd[x, ]
## W = 0.96052, p-value = 0.4249
## 
## -------------------------------------------------------- 
## d$status: magas vérnyomás
## 
##  Shapiro-Wilk normality test
## 
## data:  dd[x, ]
## W = 0.97971, p-value = 0.8179

A fenti ouputból kiolvasható, hogy a két csoportra vonatkozó normalitási feltételt nem tudjuk megcáfolni.

Leíró statisztikai mutatók kétmintás u-próbához. A kétmintás u-próbához kapcsolódó leíró statisztikai vizsgálatok:

library(psych)
describeBy(x = d$mmhg, group = d$status)
## group: egészséges
##   vars  n   mean    sd median trimmed mad min max range skew kurtosis   se
## 1    1 25 112.92 11.15    113  112.52 8.9  93 139    46 0.47     -0.1 2.23
## -------------------------------------------------------- 
## group: magas vérnyomás
##   vars  n   mean    sd median trimmed  mad min max range skew kurtosis se
## 1    1 30 144.23 10.96  144.5  144.38 6.67 119 169    50 -0.1    -0.02  2
library(DescTools)
Desc(mmhg~status, data=d)
## ------------------------------------------------------------------------- 
## mmhg ~ status
## 
## Summary: 
## n pairs: 55, valid: 55 (100.0%), missings: 0 (0.0%), groups: 2
## 
##                                         
##              egészséges  magas vérnyomás
## mean        112.9200000      144.2333333
## median      113.0000000      144.5000000
## sd           11.1539231       10.9566020
## IQR          12.0000000        8.7500000
## n                    25               30
## np          45.4545455%      54.5454545%
## NAs                   0                0
## 0s                    0                0
## 
## Kruskal-Wallis rank sum test:
##   Kruskal-Wallis chi-squared = 36.452, df = 1, p-value = 0.000000001565
library(pastecs)
print(by(d$mmhg, d$status, stat.desc, norm = T), digits = 2)
## d$status: egészséges
##      nbr.val     nbr.null       nbr.na          min          max 
##       25.000        0.000        0.000       93.000      139.000 
##        range          sum       median         mean      SE.mean 
##       46.000     2823.000      113.000      112.920        2.231 
## CI.mean.0.95          var      std.dev     coef.var     skewness 
##        4.604      124.410       11.154        0.099        0.468 
##     skew.2SE     kurtosis     kurt.2SE   normtest.W   normtest.p 
##        0.504       -0.104       -0.058        0.961        0.425 
## -------------------------------------------------------- 
## d$status: magas vérnyomás
##      nbr.val     nbr.null       nbr.na          min          max 
##       30.000        0.000        0.000      119.000      169.000 
##        range          sum       median         mean      SE.mean 
##       50.000     4327.000      144.500      144.233        2.000 
## CI.mean.0.95          var      std.dev     coef.var     skewness 
##        4.091      120.047       10.957        0.076       -0.101 
##     skew.2SE     kurtosis     kurt.2SE   normtest.W   normtest.p 
##       -0.118       -0.022       -0.013        0.980        0.818

A hatás nagyságának meghatározása kétmintás u-próbában. A kétmintás u-próba esetén a hatás nagysága (effect size):

\[d=\left|\frac{(\bar{X_1}-\bar{X_2})-\mu_0}{\sqrt{(\sigma_1^2+\sigma_2^2)/2}}\right|\]

x.1      <- d$mmhg[ d$status %in% "egészséges"]                # 1. adatminta
x.2      <- d$mmhg[ d$status %in% "magas vérnyomás"]           # 2. adatminta
atlag    <- mean(x.1, na.rm = T) - mean(x.2, na.rm = T)        # mintaátlagok különbsége
szoras.1 <- 10                                                 # 1. populációbeli szórás
szoras.2 <- 12                                                 # 2. populációbeli szórás
s        <- sqrt((szoras.1^2 + szoras.2^2)/2)                  # közös szórás 
atlag / s                                                      # a Cohen-d értéke, előjelesen
## [1] -2.834976

A Cohen-d értéke 2,83 ami azt mutatja, hogy a hatás nagy mértékű.

Alternatívák a kétmintás u-próba végrehajtására. Kétmintás u-próba végrehajtásához a BSDA csomag z.test() függvényét is használhatjuk.

library(BSDA)
BSDA::z.test(x = d$mmhg[ d$status %in% "egészséges"], 
             y = d$mmhg[ d$status %in% "magas vérnyomás"], sigma.x = 10, sigma.y = 12)
## 
##  Two-sample z-Test
## 
## data:  d$mmhg[d$status %in% "egészséges"] and d$mmhg[d$status %in% "magas vérnyomás"]
## z = -10.556, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -37.12753 -25.49914
## sample estimates:
## mean of x mean of y 
##  112.9200  144.2333

3.4 Egymintás t-próba

Az egymintás t-próba egy ismeretlen szórású normális eloszlású változó várható értékére vonatkozó hipotézist teszteli: a \(\mu\) várható érték eltér-e egy előre definiált \(\mu_0\) értéktől.

Alkalmazási feltételek:

  • a minta változója a populációban normális eloszlású

Null- és ellenhipotézisek:

  • Nullhipotézis:
    • \(H_0: \mu=\mu_0\)
  • Ellenhipotézis:
    • \(H_1: \mu \neq \mu_0\) (kétoldali ellenhipotézis) vagy
    • \(H_1: \mu < \mu_0\) (egyoldali, kisebb (bal oldali) ellenhipotézis) vagy
    • \(H_1: \mu > \mu_0\) (egyoldali, nagyobb (jobb oldali) ellenhipotézis)

Próbastatisztika:

A nullhipotézis igaz volta mellett a \(t\) próbastatisztika \(\left( n-1 \right)\) szabadsági fokú t eloszlású.

\[T=\frac{\bar{X}-\mu_0}{s / \sqrt{n}} \sim t(n-1)\]

3.4.1 Példa: a holdillúzió

A holdillúzió egy olyan optikai csalódás, mely során a horizonton lévő Holdat nagyobbnak látjuk, mint amikor magasan az égbolton van. Kaufman és Rock (1962) a holdillúzió létezését vizsgálta, amikor 10 vizsgálati személynek meg kellett becsülni, hogy a horizonton lévő Hold átmérője, hányszorosa a “normál” Hold átmérőjének. Az adatok a következők: 1,73 1,06 2,03 1,40 0,95 1,13 1,41 1,73 1,63 1,56. Létezik a holdillúzió jelensége?
Forrás: (Howell 2013, 191)

A holdillúzió jelenség létezéséhez azt kell bizonyítanunk, hogy a horizonton lévő Hold képzelt átmérője nem 1-szerese a valóságos átmérőnek. Egymintás t-próbát a következő null-és ellenhipotézissel hajtjuk végre:

  • \(H_0: \mu = 1\)
  • \(H_1: \mu \neq 1\)

Adatok beolvasása. Első lépésként hozzuk létre x adatvektorban a mintát:

 # adatvektor létrehozása
x <- c(1.73, 1.06, 2.03, 1.40, 0.95, 1.13, 1.41, 1.73, 1.63, 1.56)

Egymintás t-próba végrehajtása. Egymintás t-próba végrehajtásához a t.test() függvényt használjuk. Megadjuk az adatmintát az x= argumentumban, majd a hipotetikus várható értéket a mu= argumentumban.

t.test(x = x, mu = 1)
## 
##  One Sample t-test
## 
## data:  x
## t = 4.2976, df = 9, p-value = 0.001998
## alternative hypothesis: true mean is not equal to 1
## 95 percent confidence interval:
##  1.219287 1.706713
## sample estimates:
## mean of x 
##     1.463

Az egymintás t-próba értékelése. Az egymintás t-próba eredményéből kiolvasható, hogy a holdillúzió jelensége létezik, vagyis a horizonton lévő Hold képzelt átmérője a valós átmérő 1-szeresénél szignifikánsan nagyobb (\(t(9)=4,2976; p=0,002\)).

Az egymintás t-próba kézi számolása. A próba outputjában szereplő értékeket a fent megadott próbastatisztika alapján magunk is kiszámolhatjuk:

atlag     <- mean(x, na.rm = T)                         # mintaátlag
szoras    <- sd(x, na.rm = T)                           # minta szórása
n         <- sum(!is.na(x))                             # mintaelemszám
SE        <- szoras/sqrt(n)                             # standard hiba
mu.0      <- 1                                          # hipotetikus várható érték
t         <- (atlag-mu.0)/SE                            # próbastatisztika értéke
t                                                       # próbastatisztika értékének kiírása
## [1] 4.297592
2*(1-pt(q = abs(t), df = n-1))                          # a p érték kétoldali próba esetén
## [1] 0.001997695

Az egymintás t-próbához kapcsolódó konfidenciaintervallum. A próba outputjában szereplő konfidenciaintervallum határait a DescTools csomag MeanCI() függvényével is meghatározhatjuk, de a kézi kiszámolása sem túl bonyolult. A várható értékre vonatkozó \(\left(1-\alpha \right)\) megbízhatóságú konfidenciaintervallum:

\[\left] \bar{X}-t_{\alpha, df}\frac{s}{\sqrt{n}}, \bar{X}+t_{\alpha, df}\frac{s}{\sqrt{n}} \right[\]

A MeanCI() függvény argumentumában meg kell adnunk az adatmintát (x=), valamint opcionálisan a megbízhatósági szintet (conf.level=) és a hiányzó értékek eltávolítására használatos na.rm=T paramétert.

library(DescTools)
MeanCI(x = x, conf.level = 0.95, na.rm=T)      # 95%-os konfidenciaintervallum
##     mean   lwr.ci   upr.ci 
## 1.463000 1.219287 1.706713
# A 95%-os konfidenciaintervallumra a kézi kiszámolási mód
atlag     <- mean(x, na.rm = T)                     # mintaátlag
szoras    <- sd(x, na.rm = T)                       # minta szórása
n         <- sum(!is.na(x))                         # mintaelemszám
SE        <- szoras/sqrt(n)                         # standard hiba
alfa      <- 0.05                                   # alfa=1-0.95
t.alfa    <- qt(p = 1-alfa/2, df = n-1)             # t_{alfa,df} kritikusérték
atlag + c(-t.alfa*SE, t.alfa*SE)                    # a 95%-os konf.intv. határai 
## [1] 1.219287 1.706713

Az alkalmazási feltételek ellenőrzése az egymintás t-próbához. Az egymintás t-próba alkalmazási feltétele, hogy a vizsgált szorongás változó normális eloszlású legyen a populációban. Ezt a shapiro.test() függvénnyel tesztelhetjük, illetve végezhetünk grafikus vizsgálatot, például rajzolhatunk hisztogramot, simított hisztogramot és QQ-ábrát.

shapiro.test(x)      # normalitás ellenőrzése Shapiro-Wilk-próbával
## 
##  Shapiro-Wilk normality test
## 
## data:  x
## W = 0.96283, p-value = 0.8176
library(ggplot2)     # a ggplot2 grafikát tartalmazó csomag
library(gridExtra)   # több ábrát egy képen jeleníthetünk meg ezzel a csomaggal
p1 <- ggplot(data = data.frame(x), aes(x = x)) +                # normalitás ellenőrzése hisztogrammal
        geom_histogram(binwidth = .2, right=T, col="#00ADEE", fill="#C7EBFC", size=1) + theme_bw() 
p2 <- ggplot(data = data.frame(x), aes(x = x)) + geom_density() # normalitás ellenőrzése simított hisztogrammal
p3 <- ggplot(data = data.frame(x), aes(sample = x)) + stat_qq() # normalitás ellenőrzése QQ-ábrával
grid.arrange(p1, p2, p3, ncol=3)                                # ábrák megjelenítése
## Warning: `right` is deprecated. Please use `closed` instead.

A Shapiro-Wilk próba eredménye nem cáfolja a változó normalitását (\(p=0,8176\)), és ugyanilyen következtetést vonhatunk le az ábrákról is.

Leíró statisztikák az egymintás t-próbához. Egyetlen változó esetén nagyon egyszerűen határozzuk meg a leíró statisztikai mutatókat. Az alapértelmezett summary() mellett számos csomagban találunk függvény a mutatók kiírására. Most a psych csomag describe(), a DescTools csomag Desc() és pastecs csomag stat.desc() függvényére mutatunk példát:

summary(x)                                     # mutatók a beépített summary() függvényével
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.950   1.197   1.485   1.463   1.705   2.030
library(psych)
psych::describe(x = x)                         # mutatók a psych csomag describe() függvényével
##   vars  n mean   sd median trimmed  mad  min  max range  skew kurtosis
## 1    1 10 1.46 0.34   1.48    1.46 0.36 0.95 2.03  1.08 -0.03    -1.35
##     se
## 1 0.11
library(DescTools)
Desc(x = x)                                    # mutatók a DescTools csomag Desc() függvényével
## ------------------------------------------------------------------------- 
## x (numeric)
## 
##    length        n      NAs   unique       0s     mean   meanSE
##        10       10        0        9        0   1.4630   0.1077
## 
##       .05      .10      .25   median      .75      .90      .95
##    0.9995   1.0490   1.1975   1.4850   1.7050   1.7600   1.8950
## 
##     range       sd    vcoef      mad      IQR     skew     kurt
##    1.0800   0.3407   0.2329   0.3632   0.5075  -0.0300  -1.3496
##  
## 
##    level  freq   perc  cumfreq  cumperc
## 1   0.95     1  10.0%        1    10.0%
## 2   1.06     1  10.0%        2    20.0%
## 3   1.13     1  10.0%        3    30.0%
## 4    1.4     1  10.0%        4    40.0%
## 5   1.41     1  10.0%        5    50.0%
## 6   1.56     1  10.0%        6    60.0%
## 7   1.63     1  10.0%        7    70.0%
## 8   1.73     2  20.0%        9    90.0%
## 9   2.03     1  10.0%       10   100.0%
library(pastecs)
print(stat.desc(x = x, norm=T), digits = 2)    # mutatók a pastecs csomag stat.desc() függvényével
##      nbr.val     nbr.null       nbr.na          min          max 
##       10.000        0.000        0.000        0.950        2.030 
##        range          sum       median         mean      SE.mean 
##        1.080       14.630        1.485        1.463        0.108 
## CI.mean.0.95          var      std.dev     coef.var     skewness 
##        0.244        0.116        0.341        0.233       -0.030 
##     skew.2SE     kurtosis     kurt.2SE   normtest.W   normtest.p 
##       -0.022       -1.350       -0.506        0.963        0.818

Grafikus vizsgálat az egymintás t-próbához. A PASWR2 csomag eda() függvényével több leíró statisztikai ábrát is megrajzolhatunk.

library(PASWR2)
PASWR2::eda(x = x)

## Size (n)  Missing  Minimum   1st Qu     Mean   Median   TrMean   3rd Qu 
##   10.000    0.000    0.950    1.197    1.463    1.485    1.463    1.705 
##      Max    Stdev      Var  SE Mean   I.Q.R.    Range Kurtosis Skewness 
##    2.030    0.341    0.116    0.108    0.508    1.080   -1.350   -0.030 
## SW p-val 
##    0.818

A hatás nagyságának meghatározása az egymintás t-próbához. A t-próbához tartozó hatásméret kiszámítása a következő összefüggéssel történik.

\[d=\left|\frac{\bar{X}-\mu_0}{s}\right|\]

A hatásmérték kiszámítása az lsr csomag cohensD() függvényével és kézzel is könnyen kiszámolható:

library(lsr)
cohensD(x = x, mu = 1)  # Cohen-d meghatározása
## [1] 1.359018
(mean(x)-1)/sd(x)       # Cohen-d kézi kiszámítása
## [1] 1.359018

A Cohen-d értéke 1,36, ami azt mutatja, hogy a hatás nagysága jelentős.

A statisztikai erő meghatározása az egymintás t-próbában.

A statisztikai erő meghatározásához a pwr csomag pwr.t.test() függvényét használjuk. A bemenő paraméterek:

  • n= - a mintaelemszám
  • d= - a hatás nagysága
  • sig.level= - az \(\alpha\) szignifikanciaszint
  • alternative= - az ellenhipotézis formája
  • type= - a t próba típusa
library(pwr)
pwr.t.test(n = 10, d = 1.359,  sig.level = 0.05, alternative = "two.sided", type = "one.sample")
## 
##      One-sample t test power calculation 
## 
##               n = 10
##               d = 1.359
##       sig.level = 0.05
##           power = 0.9675853
##     alternative = two.sided

Az output alapján azt mondhatjuk, hogy a próba statisztikai ereje 96,8%-os.

Mintaelemszám meghatározása egymintás t-próbához.

Ha 90%-os statisztikai erő elegendő, akkor ugyanilyen hatásnagyság kimutatásához (\(d=1,359\)), mekkora mintaelemszámra van szükség?

library(pwr)
pwr.t.test(power = 0.9, d = 1.359,  sig.level = 0.05, alternative = "two.sided", type = "one.sample")
## 
##      One-sample t test power calculation 
## 
##               n = 7.857303
##               d = 1.359
##       sig.level = 0.05
##           power = 0.9
##     alternative = two.sided

A fenti outputból kiolvasható, hogy 8 elemű mintára van szükségünk.

Alternatíva az egymintás t-próba végrehajtására. Egymintás t-próbát az lsr csomag oneSampleTTest() függvényével, valamint a lessR csomag ttest() függvényével is végrehajthatunk. Mindkét alternatíva jelentősen gazdagabb outputot szolgáltat az alapértelmezett t.test() függvényhez képest.

library(lsr)
oneSampleTTest(x = x, mu = 1)         # egymintás t-próba végrehajtása az lsr csomag oneSampleTTest() függvényével
## 
##    One sample t-test 
## 
## Data variable:   x 
## 
## Descriptive statistics: 
##                 x
##    mean     1.463
##    std dev. 0.341
## 
## Hypotheses: 
##    null:        population mean equals 1 
##    alternative: population mean not equal to 1 
## 
## Test results: 
##    t-statistic:  4.298 
##    degrees of freedom:  9 
##    p-value:  0.002 
## 
## Other information: 
##    two-sided 95% confidence interval:  [1.219, 1.707] 
##    estimated effect size (Cohen's d):  1.359
library(lessR)
ttest(x = x, mu = 1)                  # egymintás t-próba végrehajtása a lessR csomag ttest() függvényével
## 
## 
## ------ Description ------
## 
## x:  n.miss = 0,  n = 10,   mean = 1.463,  sd = 0.341
## 
## 
## ------ Normality Assumption ------
## 
## Null hypothesis is a normal distribution of x.
## Shapiro-Wilk normality test:  W = 0.9628,  p-value = 0.8176
## 
## 
## ------ Inference ------
## 
## t-cutoff: tcut =  2.262 
## Standard Error of Mean: SE =  0.108 
## 
## Hypothesized Value H0: mu = 1 
## Hypothesis Test of Mean:  t-value = 4.298,  df = 9,  p-value = 0.002
## 
## Margin of Error for 95% Confidence Level:  0.244
## 95% Confidence Interval for Mean:  1.219 to 1.707
## 
## 
## ------ Effect Size ------
## 
## Distance of sample mean from hypothesized:  0.463
## Standardized Distance, Cohen's d:  1.359
## 
## 
## ------ Graphics Smoothing Parameter ------
## 
## Density bandwidth for 0.245
## --------------------------------------------------

3.5 Páros t-próba

A páros t-próba két összetartozó minta esetén a különbségváltozó várható értékének (\(\mu_d=\mu_1-\mu_2\)) adott értéktől (\(d_0\)) való eltérését vizsgálja.

Alkalmazási feltételek:

  • véletlen, összetartozó (páros) minta: \((X_1, X_2)\)
  • az \(X_1\) és \(X_2\) normális eloszlású (elegendő, ha a \(X_1-X_2\) különbségváltozó normális eloszlású)

Null- és ellenhipotézisek:

  • Nullhipotézis:
    • \(H_0: \mu_d=d_0\)
    • ha \(d_0=0\), akkor \(H_0: \mu_1-\mu_2=0\) vagy \(H_0: \mu_1=\mu_2\) formában is írható
  • Ellenhipotézis:
    • \(H_1: \mu_d \neq d_0\) (kétoldali ellenhipotézis) vagy
    • \(H_1: \mu_d < d_0\) (egyoldali, kisebb (bal oldali) ellenhipotézis) vagy
    • \(H_1: \mu_d > d_0\) (egyoldali, nagyobb (jobb oldali) ellenhipotézis)
    • ha \(d_0=0\), akkor a fenti ellenhipotézisek:
      • \(H_1: \mu_1\neq\mu_2\) (kétoldali ellenhipotézis) vagy
      • \(H_1: \mu_1<\mu_2\) (egyoldali, kisebb (bal oldali) ellenhipotézis) vagy
      • \(H_1: \mu_1>\mu_2\) (egyoldali, nagyobb (jobb oldali) ellenhipotézis)

Próbastatisztika:

\[T=\frac{(\bar{X_1}-\bar{X_2})-d_0}{s_d/\sqrt{n}} \sim t(n-1)\]

3.5.1 Példa: a vizualizáció és fájdalom kontrolálása.

Önként jelentkezőket arra kértek, hogy tegyék jeges vízbe a kezüket. Az egyik esetben azt kérték tőlük, hogy képzeljenek el egy kellemes körülményt (pl. pálmafák, napsütés, tengerpart), majd később megismételték a kísérletet úgy, hogy egy kellemetlen körülmény elképzelésére kérték őket (pl. statisztikai próbák végrehajtása). Mindkét esetben megmérték, hogy hány másodperc elteltével veszik ki a kezüket a jeges vízből. Vizsgáljuk meg, hogy van-e hatása az elképzelt körülménynek (vizualizáció) a fájdalom tűrésére!
Forrás: (Dancey and Reidy 2011, 230)

A két vizualizációs módhoz (kellemes és kellemetlen körülmény elképzelése) tartozó két változó várható értékének egyezését vizsgáljuk páros t-próbával:

  • \(H_0: \mu_1=\mu_2\)
  • \(H_1: \mu_1\neq\mu_2\) (kétoldali ellenhipotézis)

Adatok beolvasása. Első lépésként végezzük el az adatok beolvasását egy d adattáblába:

d <- read.table(file = textConnection("
participant stat beach
1 5 7
2 7 15
3 3 6
4 6 7
5 10 12
6 4 12
7 7 10
8 8 14
9 8 13
10 15 7
"), header=T, sep="")
d$participant <- factor(d$participant)
str(d)            # az adattábla szerkezete
## 'data.frame':    10 obs. of  3 variables:
##  $ participant: Factor w/ 10 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10
##  $ stat       : int  5 7 3 6 10 4 7 8 8 15
##  $ beach      : int  7 15 6 7 12 12 10 14 13 7
d                 # a beolvasott adattábla
##    participant stat beach
## 1            1    5     7
## 2            2    7    15
## 3            3    3     6
## 4            4    6     7
## 5            5   10    12
## 6            6    4    12
## 7            7    7    10
## 8            8    8    14
## 9            9    8    13
## 10          10   15     7

A páros adatok vizsgálatához is előkészítjük adatainkat. A PairedData csomag paired() függvényét használjuk az átalakításhoz. A későbbiekben a d.paired adattáblát is használni fogjuk.

library(PairedData)
d.paired <- with(d, paired(stat, beach))      # adatelőkészítés a PairedData csomag használatához
d.paired                                      # a páros minta
## Object of class "paired"
##    stat beach
## 1     5     7
## 2     7    15
## 3     3     6
## 4     6     7
## 5    10    12
## 6     4    12
## 7     7    10
## 8     8    14
## 9     8    13
## 10   15     7

A páros adatokból egy hosszú adattáblát is létrehozunk a reshape2 csomag melt() függvényével. A továbbiakban a d.l adattáblát is fogjuk használni.

library(reshape2)
d.l <- melt(d, id.vars = "participant", variable.name = "group", value.name = "seconds")
d.l
##    participant group seconds
## 1            1  stat       5
## 2            2  stat       7
## 3            3  stat       3
## 4            4  stat       6
## 5            5  stat      10
## 6            6  stat       4
## 7            7  stat       7
## 8            8  stat       8
## 9            9  stat       8
## 10          10  stat      15
## 11           1 beach       7
## 12           2 beach      15
## 13           3 beach       6
## 14           4 beach       7
## 15           5 beach      12
## 16           6 beach      12
## 17           7 beach      10
## 18           8 beach      14
## 19           9 beach      13
## 20          10 beach       7

Páros t-próba végrehajtása. A páros t-próba végrehajtását a t.test() függvénnyel kezdeményezhetjük. A páros mintát megadjuk az x= és y= argumentumokban, valamint a paired=T paraméterrel a t-próba páros típusát definiáljuk.

t.test(x = d$stat, y = d$beach, paired = T)         # páros t-próba végrehajtása
## 
##  Paired t-test
## 
## data:  d$stat and d$beach
## t = -2.0647, df = 9, p-value = 0.06895
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -6.2868382  0.2868382
## sample estimates:
## mean of the differences 
##                      -3

A páros t-próba értékelése. A páros t-próba eredménye alapján azt mondhatjuk, hogy nincs elegendő bizonyítékunk arra, hogy a két vizualizációs módban eltérő lenne a fájdalom kontrolálásának mértéke (\(t (9)=-2,0647\); \(p=0,06895\)).

A páros t-próba kézi számolása. A próba outputjában szereplő értékeket magunk is kiszámolhatjuk:

atlag   <- mean(d$stat - d$beach, na.rm = T)          # a különbségváltozó mintaátlaga
szoras  <- sd(d$stat - d$beach, na.rm = T)            # a különbségváltozó mintabeli szórása
n       <- sum(!is.na(d$stat))                        # mintaelemszám
SE      <- szoras/sqrt(n)                             # standard hiba
d.0     <- 0                                          # a különbség hipotetikus várható értéke
t       <- (atlag-d.0)/SE                             # próbastatisztika értéke
t                                                     # próbastatisztika értékének kiírása
## [1] -2.064742
2*(1-pt(q = abs(t), df = n-1))                        # a p érték kétoldali próba esetén
## [1] 0.06894876

Konfidenciaintervallum kézi számolása páros t-próba esetén. Az \(\left( 1-\alpha \right)\) konfidenciaintervallum kiszámítása nem tér el az egymintás esettől, csak most a különbségváltozóval kell számolnunk.

\[\left] (\bar{X_1}-\bar{X_2})-t_{\alpha, df}\frac{s_d}{\sqrt{n}}, (\bar{X_1}-\bar{X_2})+t_{\alpha, df}\frac{s_d}{\sqrt{n}} \right[\]

# A 95%-os konfidenciaintervallumra a kézi kiszámolási mód
atlag     <- mean(d$stat - d$beach, na.rm = T)      # a különbségváltozó mintaátlaga
szoras    <- sd(d$stat - d$beach, na.rm = T)        # a különbségváltozó mintabeli szórása
n         <- sum(!is.na(d$stat))                    # mintaelemszám
SE        <- szoras/sqrt(n)                         # standard hiba
alfa      <- 0.05                                   # alfa=1-0.95
t.alfa    <- qt(p = 1-alfa/2, df = n-1)             # t_{alfa,df} kritikusérték
atlag + c(-t.alfa*SE, t.alfa*SE)                    # a 95%-os konf.intv. határai 
## [1] -6.2868382  0.2868382

Alkalmazási feltételek ellenőrzése páros t-próbához. A páros t-próba feltételeinek ellenőrzése történhet Shapiro-Wilk próbával:

shapiro.test(d$stat)                               # normalitás ellenőrzése Shapiro-Wilk-próbával
## 
##  Shapiro-Wilk normality test
## 
## data:  d$stat
## W = 0.91263, p-value = 0.2995
shapiro.test(d$beach)                              # normalitás ellenőrzése Shapiro-Wilk-próbával
## 
##  Shapiro-Wilk normality test
## 
## data:  d$beach
## W = 0.89146, p-value = 0.1761
shapiro.test(d$stat-d$beach)                       # normalitás ellenőrzése Shapiro-Wilk-próbával
## 
##  Shapiro-Wilk normality test
## 
## data:  d$stat - d$beach
## W = 0.84996, p-value = 0.05803

A fenti outputokból kiolvasható, hogy a két változó és a különbségváltozó normalitását nem tudjuk megcáfolni.

Leíró statisztikai vizsgálatok páros t-próbához. A PairedData csomag summary() függvénye az előkészített d.paired adattábla esetén a páros mintáknál megszokott mutatókat jeleníti meg. Mutatókat kapunk a két összetartozó mintára, azok különbségére és átlagára is.

library(PairedData)
PairedData::summary(d.paired)                      # mutatók a páros mintára  
## $stat
##            n mean median      trim       sd  IQR (*) median ad (*)
## stat (x)  10  7.3    7.0  6.833333 3.400980 2.038547        2.2239
## beach (y) 10 10.3   11.0 10.166667 3.335000 4.262417        5.1891
## x-y       10 -3.0   -3.0 -3.500000 4.594683 2.779837        2.9652
## (x+y)/2   10  8.8    9.5  9.250000 2.463060 3.057821        2.2239
##           mean ad (*)    sd(w)  min max
## stat (x)     2.882623 2.083519  3.0  15
## beach (y)    3.634611 4.372276  6.0  15
## x-y          3.759942 2.848838 -8.0   8
## (x+y)/2      2.631960 3.210393  4.5  11
## 
## $cor
##              cor      wcor
## (x,y) 0.06955301 0.4824492

Grafikus lehetőséges páros t-próbára. A PairedData csomag az előkészített d.paired adattáblára a grafikus megjelenítést is lehetővé tesz. Rajzolhatunk kétdimenziós pontdiagramot, valamint dobozdiagramot a párosított mintaelemek megjelenítésével is.

library(gridExtra)
library(PairedData)
p1 <- plot(d.paired) + theme_bw()                         # kétdimenziós pontdiagram
p2 <- plot(d.paired, type="profile") + theme_bw()         # dobozdiagram és a páros mintaelemek
grid.arrange(p1, p2, ncol = 2)                            # ábrák megjelenítése

A hatás mértékének meghatározása páros t-próbában. A páros t-próbához tartozó hatásméret kiszámítása a következő összefüggéssel történik.

\[d=\left|\frac{(\bar{X_1}-\bar{X_2})-d_0}{s_d}\right|\]

A hatásmérték kiszámítása az lsr csomag cohensD() függvényével és kézzel is könnyen kiszámolható:

library(lsr)
cohensD(x = d$stat, y = d$beach, method = "paired")
## [1] 0.6529286
atlag     <- mean(d$stat - d$beach, na.rm = T)      # a különbségváltozó mintaátlaga
szoras    <- sd(d$stat - d$beach, na.rm = T)        # a különbségváltozó mintabeli szórása
atlag / szoras                                      # a Cohen-d kézi kiszámolása
## [1] -0.6529286

A statisztikai erő meghatározása a páros t-próbában.

A statisztikai erő meghatározásához a pwr csomag pwr.t.test() függvényét használjuk. A bemenő paraméterek:

  • n= - a mintaelemszám
  • d= - a hatás nagysága
  • sig.level= - az \(\alpha\) szignifikanciaszint
  • alternative= - az ellenhipotézis formája
  • type= - a t próba típusa
library(pwr)
pwr.t.test(n = 10, d = 0.653,  sig.level = 0.05, alternative = "two.sided", type = "paired")
## 
##      Paired t test power calculation 
## 
##               n = 10
##               d = 0.653
##       sig.level = 0.05
##           power = 0.4540401
##     alternative = two.sided
## 
## NOTE: n is number of *pairs*

Az output alapján azt mondhatjuk, hogy a próba statisztikai ereje 45,4%-os.

Mintaelemszám meghatározása páros t-próbához. Ha 90%-os statisztikai erőre van szükségünk, akkor ugyanilyen hatásnagyság kimutatásához (\(d=0,653\)), mekkora mintaelemszámra van szükség?

library(pwr)
pwr.t.test(power = 0.9, d = 0.653,  sig.level = 0.05, alternative = "two.sided", type = "paired")
## 
##      Paired t test power calculation 
## 
##               n = 26.63692
##               d = 0.653
##       sig.level = 0.05
##           power = 0.9
##     alternative = two.sided
## 
## NOTE: n is number of *pairs*

A fenti outputból kiolvasható, hogy 27 elemű mintára van szükségünk.

Alternatívák a páros t-próbára. Páros t-próbát a d.l hosszú adattábla segítségével is végrehajthatunk. A t.test() és az lsr csomag pairedSamplesTTest() függvénye is hosszú adattáblát vár, így a formula= és data= argumentumokat kell megadnunk. A lessR csomag ttest() függvényében a már korábban látott x= és y= argumentumok várják a két összetartozó mintát.

t.test(formula = seconds ~ group, data=d.l, paired = T)
## 
##  Paired t-test
## 
## data:  seconds by group
## t = -2.0647, df = 9, p-value = 0.06895
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -6.2868382  0.2868382
## sample estimates:
## mean of the differences 
##                      -3
library(lsr)
pairedSamplesTTest(formula = seconds ~ group, data=d.l, id="participant")
## 
##    Paired samples t-test 
## 
## Outcome variable:   seconds 
## Grouping variable:  group 
## ID variable:        participant 
## 
## Descriptive statistics: 
##              stat  beach difference
##    mean     7.300 10.300     -3.000
##    std dev. 3.401  3.335      4.595
## 
## Hypotheses: 
##    null:        population means equal for both measurements
##    alternative: different population means for each measurement
## 
## Test results: 
##    t-statistic:  -2.065 
##    degrees of freedom:  9 
##    p-value:  0.069 
## 
## Other information: 
##    two-sided 95% confidence interval:  [-6.287, 0.287] 
##    estimated effect size (Cohen's d):  0.653
library(lessR)
ttest(x = stat, y = beach, data = d, paired = T)
## 
## 
## ------ Description ------
## 
## Difference:  n.miss = 0,  n = 10,   mean = 3.00,  sd = 4.59
## 
## 
## ------ Normality Assumption ------
## 
## Null hypothesis is a normal distribution of Difference.
## Shapiro-Wilk normality test:  W = 0.85,  p-value = 0.058
## 
## 
## ------ Inference ------
## 
## t-cutoff: tcut =  2.262 
## Standard Error of Mean: SE =  1.45 
## 
## Hypothesized Value H0: mu = 0 
## Hypothesis Test of Mean:  t-value = 2.065,  df = 9,  p-value = 0.069
## 
## Margin of Error for 95% Confidence Level:  3.29
## 95% Confidence Interval for Mean:  -0.29 to 6.29
## 
## 
## ------ Effect Size ------
## 
## Distance of sample mean from hypothesized:  3.00
## Standardized Distance, Cohen's d:  0.65
## 
## 
## ------ Graphics Smoothing Parameter ------
## 
## Density bandwidth for 3.30
## --------------------------------------------------

3.6 Kétmintás t-próba

Azt teszteljük, hogy két független változó várható értékének különbsége (\(\mu_d=\mu_1-\mu_2\)) eltér-e egy adott értéktől (\(d_0\)). Feltételezzük a normális eloszlást és ismeretlen populációbeli szórások egyenlőségét.

Alkalmazási feltételek:

  • két véletlen független minta: \(X_1\) és \(X_2\)
  • \(X_1\) és \(X_2\) normális eloszlású a populációban
  • az ismeretlen populációbeli szórások egyenlőek: \(\sigma_1 = \sigma_2\)

Null- és ellenhipotézisek:

  • Nullhipotézis:
    • \(H_0: \mu_d=d_0\)
    • ha \(d_0=0\), akkor \(H_0: \mu_1-\mu_2=0\) vagy \(H_0: \mu_1=\mu_2\) formában is írható
  • Ellenhipotézis:
    • \(H_1: \mu_d \neq d_0\) (kétoldali ellenhipotézis) vagy
    • \(H_1: \mu_d < d_0\) (egyoldali, kisebb (bal oldali) ellenhipotézis) vagy
    • \(H_1: \mu_d > d_0\) (egyoldali, nagyobb (jobb oldali) ellenhipotézis)
    • ha \(d_0=0\), akkor a fenti ellenhipotézisek:
      • \(H_1: \mu_1\neq\mu_2\) (kétoldali ellenhipotézis) vagy
      • \(H_1: \mu_1<\mu_2\) (egyoldali, kisebb (bal oldali) ellenhipotézis) vagy
      • \(H_1: \mu_1>\mu_2\) (egyoldali, nagyobb (jobb oldali) ellenhipotézis)

Próbastatisztika:

\[s_p^2=\frac{(n_1 -1)s_1^2 + (n_2 -1)s_2^2}{n_1 + n_2 - 2}, T=\frac{(\bar{X_1}-\bar{X_2})-d_0}{\sqrt{\frac{s_p^2}{n_1} + \frac{s_p^2}{n_2}}} \sim t(n_1 + n_2 -2)\]

3.6.1 Példa: zaj hatása a rövidtávú memóriára

Huszonnégy ember részt vett egy kísérletben, amelyben annak megállapítását tűzték ki célul, hogy a háttérzaj (zene, ajtócsapódás, kávékészítés zaja stb.) hogyan befolyásolja a rövid távú memóriát (szavak visszahívását). A résztvevők fele (NOISE csoport) megpróbált memorizálni 2 perc alatt egy 20 szavas listát, miközben fülhallgatón keresztül az előre felvett zaj szólt. A többi résztvevő is viselt fülhallgatót (NO NOISE csoport), de ők nem hallottak zajt a szavak memorizálása közben. Közvetlenül ezután megállapították, hogy hány szóra emlékeztek vissza. Vizsgáljuk meg, hogy van-e eltérés a visszahívott szavak számában a két kondícióban, vagyis a zajnak van-e hatása a rövidtávú memóriára! Forrás: (Dancey and Reidy 2011, 212)

A két kondícióhoz (NOISE és NO NOISE) tartozó visszahívott szavak száma változók várható értékének egyezését vizsgáljuk kétmintás t-próbával:

  • \(H_0: \mu_1=\mu_2\)
  • \(H_1: \mu_1\neq\mu_2\) (kétoldali ellenhipotézis)

Adatok beolvasása. Végezzük el az adatok beolvasását a d adattáblába. Az adatok a két csoport azonos elemszáma miatt kényelmesen tárolhatók széles adattáblában, de a reshape2 csomag melt() függvényével átalakítjuk szükséges hosszú formátumúvá.

d <- read.table(file = textConnection("
NOISE NO.NOISE
5.00 15.00
10.00 9.00
6.00 16.00
6.00 15.00
7.00 16.00
3.00 18.00
6.00 17.00
9.00 13.00
5.00 11.00
10.00 12.00
11.00 13.00
9.00 11.00
"), header=T, sep="")
library(reshape2)
d <- melt(d, id.vars = NULL, variable.name = "group", value.name = "words") # szélesből hosszú átalakítás
str(d)                                                                      # az adattábla szerkezete
## 'data.frame':    24 obs. of  2 variables:
##  $ group: Factor w/ 2 levels "NOISE","NO.NOISE": 1 1 1 1 1 1 1 1 1 1 ...
##  $ words: num  5 10 6 6 7 3 6 9 5 10 ...
d                                                                           # a beolvasott adattábla
##       group words
## 1     NOISE     5
## 2     NOISE    10
## 3     NOISE     6
## 4     NOISE     6
## 5     NOISE     7
## 6     NOISE     3
## 7     NOISE     6
## 8     NOISE     9
## 9     NOISE     5
## 10    NOISE    10
## 11    NOISE    11
## 12    NOISE     9
## 13 NO.NOISE    15
## 14 NO.NOISE     9
## 15 NO.NOISE    16
## 16 NO.NOISE    15
## 17 NO.NOISE    16
## 18 NO.NOISE    18
## 19 NO.NOISE    17
## 20 NO.NOISE    13
## 21 NO.NOISE    11
## 22 NO.NOISE    12
## 23 NO.NOISE    13
## 24 NO.NOISE    11

A kétmintás t-próba végrehajtása. Kétmintás t-próbát a t.test() függvénnyel hajthatunk végre. A d hosszú adattábla két oszlopából készítünk formulát a formula= argumentum számára. A kétmintás t-próba végrehajtásához szükséges szóráshomogenitást a var.equal=T argumentum megadásával biztosítjuk.

t.test(formula = words ~ group, data = d, var.equal = T)
## 
##  Two Sample t-test
## 
## data:  words by group
## t = -6.1366, df = 22, p-value = 0.000003548
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -8.808169 -4.358498
## sample estimates:
##    mean in group NOISE mean in group NO.NOISE 
##                7.25000               13.83333

A kétmintás t-próba értékelése. A kétmintás t-próba eredménye alapján azt mondhatjuk, hogy a zajnak szignifikáns hatása van a rövidtávú memóriára, vagyis a visszahívott szavak száma szignifikánsan eltér a két kondícióban (\(t(22)=-6,1366\); \(p<0,001\)).

A kétmintás t-próba kézi számolása. A próba outputjában szereplő értékeket magunk is kiszámolhatjuk:

x.1      <- d$words[ d$group %in% "NOISE"]               # 1. adatminta
x.2      <- d$words[ d$group %in% "NO.NOISE"]            # 2. adatminta
atlag    <- mean(x.1, na.rm = T) - mean(x.2, na.rm = T)  # a mintaátlagok különbsége
szoras.1 <- sd(x.1, na.rm = T)                           # 1. adatminta szórása
szoras.2 <- sd(x.2, na.rm = T)                           # 2. adatminta szórása
n.1      <- sum(!is.na(x.1))                             # 1. minta elemszáma
n.2      <- sum(!is.na(x.2))                             # 2. minta elemszáma
s.p      <- sqrt(((n.1-1)*szoras.1^2+(n.2-1)*szoras.2^2)/(n.1 + n.2 - 2))  # pooled szórás   
SE       <- s.p*sqrt(1/n.1 + 1/n.2)                      # standard hiba a különbségre
d.0      <- 0                                            # hipotetikus várható érték
t        <- (atlag-d.0)/SE                               # próbastatisztika értéke
t                                                        # próbastatisztika értékének kiírása
## [1] -6.136632
2*(1-pt(q = abs(t), df = n.1 + n.2 - 2))                 # a p érték kétoldali próba esetén
## [1] 0.000003547597

Konfidenciaintervallum kézi számolása kétmintás t-próbához. A próba outputjában szereplő konfidenciaintervallum határait a DescTools csomag MeanDiffCI() függvényével is meghatározhatjuk, de a kézi kiszámolása sem túl bonyolult. A várható értékre vonatkozó \(\left(1-\alpha \right)\) megbízhatóságú konfidenciaintervallum:

\[\left] (\bar{X_1}-\bar{X_2})-t_{\alpha, df}\sqrt{\frac{s_p^2}{n_1} + \frac{s_p^2}{n_2}}, (\bar{X_1}-\bar{X_2})+t_{\alpha, df}\sqrt{\frac{s_p^2}{n_1} + \frac{s_p^2}{n_2}} \right[\]

A MeanDiffCI() függvény argumentumában meg kell adnunk a formula=words ~ group argumentumban két adatmintát, és az adattábla nevét a data= argumentumban, valamint opcionálisan a megbízhatósági szintet (conf.level=) és a hiányzó értékek eltávolítására használatos na.rm=T paramétert. A MeanDiffCI() függvény nem tételezi fel a populációbeli szórások egyezését, így a következő fejezetben ismertett Welch-féle d-próbához tartozó konfidenciaintervallumot szolgáltatja.

library(DescTools)
MeanDiffCI(formula = words ~ group, data = d)
##  meandiff    lwr.ci    upr.ci 
## -6.583333 -8.809498 -4.357169
# A 95%-os konfidenciaintervallumra a kézi kiszámolási mód
x.1      <- d$words[ d$group %in% "NOISE"]               # 1. adatminta
x.2      <- d$words[ d$group %in% "NO.NOISE"]            # 2. adatminta
atlag    <- mean(x.1, na.rm = T) - mean(x.2, na.rm = T)  # a mintaátlagok különbsége
szoras.1 <- sd(x.1, na.rm = T)                           # 1. adatminta szórása
szoras.2 <- sd(x.2, na.rm = T)                           # 2. adatminta szórása
n.1      <- sum(!is.na(x.1))                             # 1. minta elemszáma
n.2      <- sum(!is.na(x.2))                             # 2. minta elemszáma
s.p      <- sqrt(((n.1-1)*szoras.1^2+(n.2-1)*szoras.2^2)/(n.1 + n.2 - 2))  # pooled szórás   
SE       <- s.p*sqrt(1/n.1 + 1/n.2)                      # standard hiba a különbségre
alfa     <- 0.05                                         # alfa=1-0.95
t.alfa   <- qt(p = 1-alfa/2, df = n.1 + n.2 - 2)         # t_{alfa,df} kritikusérték
atlag + c(-t.alfa*SE, t.alfa*SE)                         # a 95%-os konf.intv. határai 
## [1] -8.808169 -4.358498

Alkalmazási feltételek ellenőrzése. A kétmintás t-próba feltételeinek ellenőrzése:

by(d$words, d$group, shapiro.test)   # normalitás ellenőrzése Shapiro-Wilk-próbával
## d$group: NOISE
## 
##  Shapiro-Wilk normality test
## 
## data:  dd[x, ]
## W = 0.93755, p-value = 0.467
## 
## -------------------------------------------------------- 
## d$group: NO.NOISE
## 
##  Shapiro-Wilk normality test
## 
## data:  dd[x, ]
## W = 0.96299, p-value = 0.8255
var.test(words ~ group, data = d)    # F-próba a varianciák egyezőségére
## 
##  F test to compare two variances
## 
## data:  words by group
## F = 0.81574, num df = 11, denom df = 11, p-value = 0.7415
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##  0.2348324 2.8336250
## sample estimates:
## ratio of variances 
##          0.8157371

A két kondícióban a változók normalitását nem tudjuk megcáfolni (Shapiro-Wilk-próba: \(p=0,467\) és \(p=0,8255\)), valamint a populációbeli szórások egyezését vizsgáló F-próba (\(F(11,11)=0,8157; p=0,7415\)) is megerősít minket abban, hogy a kétmintás t-próba alkalmazási feltételei teljesülnek.

Leíró statisztikai mutatók kétmintás t-próbához. A kétmintás t-próbához kapcsolódó leíró statisztikai vizsgálatok:

library(psych)
describeBy(x = d$words, group = d$group)
## group: NOISE
##   vars  n mean   sd median trimmed  mad min max range skew kurtosis   se
## 1    1 12 7.25 2.49    6.5     7.3 2.97   3  11     8    0    -1.45 0.72
## -------------------------------------------------------- 
## group: NO.NOISE
##   vars  n  mean   sd median trimmed  mad min max range  skew kurtosis  se
## 1    1 12 13.83 2.76     14    13.9 2.97   9  18     9 -0.15    -1.36 0.8
library(DescTools)
Desc(words ~ group, data=d)
## ------------------------------------------------------------------------- 
## words ~ group
## 
## Summary: 
## n pairs: 24, valid: 24 (100.0%), missings: 0 (0.0%), groups: 2
## 
##                                 
##               NOISE     NO.NOISE
## mean      7.2500000   13.8333333
## median    6.5000000   14.0000000
## sd        2.4908925    2.7579087
## IQR       3.5000000    4.2500000
## n                12           12
## np      50.0000000%  50.0000000%
## NAs               0            0
## 0s                0            0
## 
## Kruskal-Wallis rank sum test:
##   Kruskal-Wallis chi-squared = 15.075, df = 1, p-value = 0.0001033
library(pastecs)
print(by(d$words, d$group, stat.desc, norm = T), digits = 2)
## d$group: NOISE
##      nbr.val     nbr.null       nbr.na          min          max 
##      12.0000       0.0000       0.0000       3.0000      11.0000 
##        range          sum       median         mean      SE.mean 
##       8.0000      87.0000       6.5000       7.2500       0.7191 
## CI.mean.0.95          var      std.dev     coef.var     skewness 
##       1.5826       6.2045       2.4909       0.3436      -0.0020 
##     skew.2SE     kurtosis     kurt.2SE   normtest.W   normtest.p 
##      -0.0016      -1.4506      -0.5886       0.9376       0.4670 
## -------------------------------------------------------- 
## d$group: NO.NOISE
##      nbr.val     nbr.null       nbr.na          min          max 
##        12.00         0.00         0.00         9.00        18.00 
##        range          sum       median         mean      SE.mean 
##         9.00       166.00        14.00        13.83         0.80 
## CI.mean.0.95          var      std.dev     coef.var     skewness 
##         1.75         7.61         2.76         0.20        -0.15 
##     skew.2SE     kurtosis     kurt.2SE   normtest.W   normtest.p 
##        -0.12        -1.36        -0.55         0.96         0.83

Grafikus vizsgálatok kétmintás t-próbához.

library(ggplot2)
library(gridExtra)
p1 <- ggplot(data=d, aes(x=group, y=words, color=group)) +                   # átlagok és konfidenciaintervallumok
  stat_summary(fun.y=mean, geom="point", size=4, shape=21, fill="white") +
  stat_summary(fun.data=mean_cl_normal, geom="errorbar", size=1, width=0.1) + 
  theme_bw() + coord_cartesian(ylim=c(4, 18))
p2 <- ggplot(data=d, aes(x=group, y=words, color=group)) +                   # dobozdiagramok
  geom_boxplot() + theme_bw() + coord_cartesian(ylim=c(4, 18))
p3 <- ggplot(data=d, aes(x=words)) +                                         # hisztogram
  geom_histogram(binwidth = 2, col="#00ADEE", fill="#C7EBFC", size=1) + theme_bw() + facet_wrap(~group, nrow=2) 
p4 <- ggplot(data = d, aes(x=words)) +                                       # simított hisztogram
  geom_density(aes(fill=group, colour=group), size=1, alpha=0.5) + theme_bw()
grid.arrange(p1, p2, p3, p4, ncol=2)                                         # ábrák megjelenítése

A hatás nagyságának meghatározása kétmintás t-próbában. Kétmintás t-próba esetén a hatás nagysága (effect size):

\[d=\left|\frac{(\bar{X_1}-\bar{X_2})-d_0}{s_p}\right|\]

library(lsr)
cohensD(formula = words ~ group, data=d, method = "pooled")
## [1] 2.50527
x.1      <- d$words[ d$group %in% "NOISE"]               # 1. adatminta
x.2      <- d$words[ d$group %in% "NO.NOISE"]            # 2. adatminta
atlag    <- mean(x.1, na.rm = T) - mean(x.2, na.rm = T)  # a mintaátlagok különbsége
szoras.1 <- sd(x.1, na.rm = T)                           # 1. adatminta szórása
szoras.2 <- sd(x.2, na.rm = T)                           # 2. adatminta szórása
n.1      <- sum(!is.na(x.1))                             # 1. minta elemszáma
n.2      <- sum(!is.na(x.2))                             # 2. minta elemszáma
s.p      <- sqrt(((n.1-1)*szoras.1^2+(n.2-1)*szoras.2^2)/(n.1 + n.2 - 2))  # pooled szórás   
atlag / s.p                                              # Cohen-d kiszámítása
## [1] -2.50527
library(powerAnalysis)
ES.t.two(m1 = mean(x.1, na.rm = T), m2 = mean(x.2, na.rm = T), sd1 = szoras.1, sd2 = szoras.2, n1 = n.1, n2 = n.2)
## 
##      effect size (Cohen's d) of independent two-sample t test 
## 
##               d = 2.50527
##     alternative = two.sided
## 
## NOTE: The alternative hypothesis is m1 != m2
## small effect size:  d = 0.2
## medium effect size: d = 0.5
## large effect size:  d = 0.8

A Cohen-d értéke 2,5, ami azt mutatja, hogy a hatás nagy mértékű.

Az erő meghatározása kétmintás t-próbában A statisztikai erő meghatározásához a powerAnalysis csomag power.t() függvényét használjuk. A bemenő paraméterek:

  • es= - a hatás nagysága
  • n= - a összmintaelemszám
  • type= - az elemszámok különbözősége
  • ratio= - az elemszámok aránya a két csoportban
  • sig.level= - az \(\alpha\) szignifikanciaszint
  • alternative= - az ellenhipotézis formája

A pwr csomag pwr.t.test() függvényével is elvégezzük a számolást.

library(powerAnalysis)
power.t(es = 2.5, n=12, sig.level=0.05, type="two", alternative = "two.sided")
## 
##      Two-sample (equal size) t test power calculation 
## 
##              es = 2.5
##               n = 12
##           power = 0.9999478
##       sig.level = 0.05
##     alternative = two.sided
## 
## NOTE: n is number in *each* group
library(pwr)
pwr.t.test(d = 2.5, n = 12, sig.level = 0.05, type = "two.sample", alternative = "two.sided")
## 
##      Two-sample t test power calculation 
## 
##               n = 12
##               d = 2.5
##       sig.level = 0.05
##           power = 0.9999478
##     alternative = two.sided
## 
## NOTE: n is number in *each* group

Az output alapján azt mondhatjuk, hogy a próba statisztikai ereje 99,99%-os.

Mintaelemszám meghatározása a kétmintás t-próbában. Ha 95%-os statisztikai erő elegendő a próba végrehajtása során, akkor ugyanilyen hatásnagyság kimutatásához (\(d=2,5\)), mekkora mintaelemszámra van szükség?

library(powerAnalysis)
power.t(es = 2.5, power = 0.95, sig.level=0.05, type="two", alternative="two.sided")
## 
##      Two-sample (equal size) t test power calculation 
## 
##              es = 2.5
##               n = 5.343538
##           power = 0.95
##       sig.level = 0.05
##     alternative = two.sided
## 
## NOTE: n is number in *each* group
library(pwr)
pwr.t.test(d = 2.5, power = 0.95, sig.level = 0.05, type = "two.sample", alternative = "two.sided")
## 
##      Two-sample t test power calculation 
## 
##               n = 5.343548
##               d = 2.5
##       sig.level = 0.05
##           power = 0.95
##     alternative = two.sided
## 
## NOTE: n is number in *each* group

Látható, hogy a 95%-os statisztikai erő eléréséhez (kerekítve) 5 elemű mintára van szükség.

Alternatívák a kétmintás t-próbára. A kétmintás t-próbát az lsr csomag pairedSamplesTTest() függvényével, valamint a lessR csomag ttest() függvényével is végrehajthatunk. Ezek outputja más próbák végrehajtását is tartalmazhatja.

library(lsr)
independentSamplesTTest(words ~ group, data = d, var.equal = T)
## 
##    Student's independent samples t-test 
## 
## Outcome variable:   words 
## Grouping variable:  group 
## 
## Descriptive statistics: 
##             NOISE NO.NOISE
##    mean     7.250   13.833
##    std dev. 2.491    2.758
## 
## Hypotheses: 
##    null:        population means equal for both groups
##    alternative: different population means in each group
## 
## Test results: 
##    t-statistic:  -6.137 
##    degrees of freedom:  22 
##    p-value:  <.001 
## 
## Other information: 
##    two-sided 95% confidence interval:  [-8.808, -4.358] 
##    estimated effect size (Cohen's d):  2.505
library(lessR)
ttest(words ~ group, data = d)
## 
## Compare words across group levels NO.NOISE and NOISE 
## ------------------------------------------------------------
## 
## 
## ------ Description ------
## 
## words for group NO.NOISE:  n.miss = 0,  n = 12,  mean = 13.83,  sd = 2.76
## words for group NOISE:  n.miss = 0,  n = 12,  mean = 7.25,  sd = 2.49
## 
## Within-group Standard Deviation:   2.63 
## 
## 
## ------ Assumptions ------
## 
## Note: These hypothesis tests can perform poorly, and the 
##       t-test is typically robust to violations of assumptions. 
##       Use as heuristic guides instead of interpreting literally. 
## 
## Null hypothesis, for each group, is a normal distribution of words.
## Group NO.NOISE  Shapiro-Wilk normality test:  W = 0.963,  p-value = 0.825
## Group NOISE  Shapiro-Wilk normality test:  W = 0.938,  p-value = 0.467
## 
## Null hypothesis is equal variances of words, i.e., homogeneous.
## Variance Ratio test:  F = 7.61/6.20 = 1.23,  df = 11;11,  p-value = 0.741
## Levene's test, Brown-Forsythe:  t = 0.445,  df = 22,  p-value = 0.660
## 
## 
## ------ Inference ------
## 
## --- Assume equal population variances of words for each group 
## 
## t-cutoff: tcut =  2.074 
## Standard Error of Mean Difference: SE =  1.07 
## 
## Hypothesis Test of 0 Mean Diff:  t = 6.137,  df = 22,  p-value = 0.000
## 
## Margin of Error for 95% Confidence Level:  2.22
## 95% Confidence Interval for Mean Difference:  4.36 to 8.81
## 
## 
## --- Do not assume equal population variances of words for each group 
## 
## t-cutoff: tcut =  2.075 
## Standard Error of Mean Difference: SE =  1.07 
## 
## Hypothesis Test of 0 Mean Diff:  t = 6.137,  df = 21.776, p-value = 0.000
## 
## Margin of Error for 95% Confidence Level:  2.23
## 95% Confidence Interval for Mean Difference:  4.36 to 8.81
## 
## 
## ------ Effect Size ------
## 
## --- Assume equal population variances of words for each group 
## 
## Sample Mean Difference of words:  6.58
## Standardized Mean Difference of words, Cohen's d:  2.51
## 
## 95% Confidence Interval for smd:  1.40 to 3.58
## 
## 
## ------ Practical Importance ------
## 
## Minimum Mean Difference of practical importance: mmd
## Minimum Standardized Mean Difference of practical importance: msmd
## Neither value specified, so no analysis
## 
## 
## ------ Graphics Smoothing Parameter ------
## 
## Density bandwidth for group NO.NOISE: 1.91
## Density bandwidth for group NOISE: 1.73
## --------------------------------------------------

## 
## [smd CI with Ken Kelley's ci.smd function from Kelley and Lai's MBESS package]

3.7 Welch-féle d-próba

Azt teszteljük, hogy két független változó várható értékének különbsége (\(\mu_d=\mu_1-\mu_2\)) eltér-e egy adott értéktől (\(d_0\)). Továbbra is feltételezzük a normális eloszlást.

Alkalmazási feltételek:

  • két véletlen független minta: \(X_1\) és \(X_2\)
  • \(X_1\) és \(X_2\) normális eloszlású a populációban

Null- és ellenhipotézisek:

  • Nullhipotézis:
    • \(H_0: \mu_d=d_0\)
    • ha \(d_0=0\), akkor \(H_0: \mu_1-\mu_2=0\) vagy \(H_0: \mu_1=\mu_2\) formában is írható
  • Ellenhipotézis:
    • \(H_1: \mu_d \neq d_0\) (kétoldali ellenhipotézis) vagy
    • \(H_1: \mu_d < d_0\) (egyoldali, kisebb (bal oldali) ellenhipotézis) vagy
    • \(H_1: \mu_d > d_0\) (egyoldali, nagyobb (jobb oldali) ellenhipotézis)
    • ha \(d_0=0\), akkor a fenti ellenhipotézisek:
      • \(H_1: \mu_1\neq\mu_2\) (kétoldali ellenhipotézis) vagy
      • \(H_1: \mu_1<\mu_2\) (egyoldali, kisebb (bal oldali) ellenhipotézis) vagy
      • \(H_1: \mu_1>\mu_2\) (egyoldali, nagyobb (jobb oldali) ellenhipotézis)

Próbastatisztika:

\[T=\frac{(\bar{X_1}-\bar{X_2})-d_0}{\sqrt{\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}}} \sim t(w), w=\frac{(s_1^2/n_1 + s_1^2/n_1)^2}{(s_1^2/n_1)^2/(n_1-1) + (s_2^2/n_2)^2/(n_2-1)}\]

3.7.1 Példa egyoldali (bal kisebb) ellenhipotézissel: teniszkönyök kialakulása

Amatőr sportolók körében a teniszkönyök kialakulásában a nem megfelelő sporteszközök használata is jelentős szerepet kaphat. 45 önként jelentkező segítségével a könyökre nehezedő erőt mérték a tenyeres ütések során, kétféle teniszütő esetében. A szokásosnál nagyobb ütőt használók körében a mintaátlag 25,2, a minta szórása 8,6 és a mintaelemszám 33. Hagyományos ütőt használók körében ezek az értékek rendre: 33,9, 17,4 és 12. Vizsgáljuk meg azt a hipotézist, hogy a nagyobb ütőt használók körében kisebb a könyökre nehezedő erő!
Forrás: (Ott and Longnecker 2008)

Feltételezzük a populációban a két ütő esetében mért erő normális eloszlását. A mintabeli szórások megadott értékei alapján arról is meggyőződhetünk, hogy a populációbeli szórások nem azonosak. A fentiek alapján a Welch-féle d-próba egyoldali (bal, kisebb) változatát hajtjuk végre a következő null és ellenhipotézissel:

  • \(H_0: \mu_1=\mu_2\)
  • \(H_1: \mu_1<\mu_2\)

A Welch-féle d-próba végrehajtása egyoldali (bal oldali, kisebb) ellenhipotézissel. A példában összesítő adatok szerepelnek, így a PASWR2 csomag tsum.test() függvényét használjuk. Mindkét minta esetén megadjuk a mintaátlagokat (mean.x= és mean.y=), mintabeli szórásokat (sd.x= és sd.y) és mintaelemszámokat(n.x= és n.y=). A populációbeli szórások eltérése miatt a var.equal=F argumentumot is megadjuk, valamint bal oldali ellenhipotézis miatt a alternative="less" paramétert is szerepeltetjük.

library(PASWR2)
PASWR2::tsum.test(mean.x = 25.2, s.x = 8.6, n.x = 33, mean.y = 33.9, s.y = 17.4, n.y = 12, 
                  var.equal = F, alternative = "less")
## 
##  Welch Two Sample t-test
## 
## data:  User input summarized values for x and y
## t = -1.6599, df = 13.006, p-value = 0.06042
## alternative hypothesis: true difference in means is less than 0
## 95 percent confidence interval:
##       -Inf 0.5816739
## sample estimates:
## mean of x mean of y 
##      25.2      33.9

Az egyoldali (bal) Welch-féle d-próba eredményének értékelése. A egyoldali Welch-féle d-próba eredménye alapján azt mondhatjuk, hogy nincs elegendő bizonyítékunk arra, hogy a nagy méretű ütők kevésbé terhelik a könyököt (\(t(13,01)=-1,66, p=0,06\)).

A Welch-féle d-próba kézi számolása. A próba outputjában szereplő értékeket magunk is kiszámolhatjuk:

atlag    <- 25.2 - 33.9                                  # a mintaátlagok különbsége
szoras.1 <- 8.6                                          # 1. adatminta szórása
szoras.2 <- 17.4                                         # 2. adatminta szórása
n.1      <- 33                                           # 1. minta elemszáma
n.2      <- 12                                           # 2. minta elemszáma
SE       <- sqrt(szoras.1^2/n.1 + szoras.2^2/n.2)        # standard hiba a különbségre
d.0      <- 0                                            # hipotetikus várható érték
t        <- (atlag-d.0)/SE                               # próbastatisztika értéke
t                                                        # próbastatisztika értékének kiírása
## [1] -1.659894
df       <- (szoras.1^2/n.1+szoras.2^2/n.2)^2/           # df
                (((szoras.1^2/n.1)^2/(n.1-1))+((szoras.2^2/n.2)^2/(n.2-1))) 
pt(q = t, df = df)                                       # a p érték bal oldali próba esetén
## [1] 0.06042046

Konfidenciaintervallum kézi számolása kétmintás t-próbához. A próba outputjában szereplő konfidenciaintervallum határait kézi számolással is meghatározzuk. A várható értékre vonatkozó \(\left(1-\alpha \right)\) megbízhatóságú konfidenciaintervallum:

\[\left] (\bar{X_1}-\bar{X_2})-t_{\alpha, df}\sqrt{\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}}, (\bar{X_1}-\bar{X_2})+t_{\alpha, df}\sqrt{\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}} \right[\]

# A 95%-os konfidenciaintervallumra a kézi kiszámolási mód
atlag    <- 25.2 - 33.9                                  # mintaátlagok különbsége
szoras.1 <- 8.6                                          # 1. adatminta szórása
szoras.2 <- 17.4                                         # 2. adatminta szórása
n.1      <- 33                                           # 1. minta elemszáma
n.2      <- 12                                           # 2. minta elemszáma
SE       <- sqrt(szoras.1^2/n.1 + szoras.2^2/n.2)        # standard hiba a különbségre
alfa     <- 0.05                                         # alfa=1-0.95
df      <- (szoras.1^2/n.1+szoras.2^2/n.2)^2/
                     (((szoras.1^2/n.1)^2/(n.1-1))+((szoras.2^2/n.2)^2/(n.2-1))) # df
t.alfa   <- qt(p = 1-alfa, df = df)                      # t_{alfa,df} kritikusérték
atlag + c(-Inf, t.alfa*SE)                               # a 95%-os konf.intv. határai 
## [1]      -Inf 0.5816739

A Welch-féle d-próba feltételeinek ellenőrzése. Minta hiányában nem tudjuk a normalitási feltételt ellenőrizni. Most a szórások eltérésére vonatkozó feltételezésünket ellenőrizzük F-próba segítségével.

# F-próba kézi végrehajtása
s.x.2  <- 8.6^2
s.y.2  <- 17.4^2
n.x    <- 33
n.y    <- 12
(F.stat <- s.x.2/s.y.2)
## [1] 0.2442859
2 * (pf(F.stat, df1 = n.x - 1, df2 = n.y - 1))
## [1] 0.001730069

Az F-próba eredményéből kiolvasható, hogy a populációbeli szórások eltérnek (\(p=0,0017\)).

A hatás nagyságának meghatározása Welch-féle d-próbában. A Welch-féle d-próba esetén a hatás nagysága (effect size):

\[d=\left|\frac{(\bar{X_1}-\bar{X_2})-d_0}{\sqrt{(s_1^2+s_2^2)/2}}\right|\]

atlag    <- 25.2 - 33.9                                  # mintaátlagok különbsége
szoras.1 <- 8.6                                          # 1. adatminta szórása
szoras.2 <- 17.4                                         # 2. adatminta szórása
s        <- sqrt((szoras.1^2 + szoras.2^2)/2)            # közös szórás 
atlag / s                                                # a Cohen-d értéke, előjelesen
## [1] -0.6339061

A Cohen-d értéke 0,63, ami azt mutatja, hogy a hatás közepes mértékű.

Az erő meghatározása Welch-féle d-próbában A statisztikai erő meghatározásához a powerAnalysis csomag power.t() függvényét használjuk. A bemenő paraméterek:

  • es= - a hatás nagysága
  • n= - a összmintaelemszám
  • type= - az elemszámok különbözősége
  • ratio= - az elemszámok aránya a két csoportban
  • sig.level= - az \(\alpha\) szignifikanciaszint
  • alternative= - az ellenhipotézis formája

A power.t() függvény a kétmintás t-próbánál használatos erő-számoló függvény, de visszatérési értéke nem sokban tér el a Welch-féle d-próbához tartozó erőtől

library(powerAnalysis)
power.t(es = -0.6339, n=45, sig.level=0.05, type="unequal", ratio=33/12, alternative="left")
## 
##      Two-sample (unequal size) t test power calculation 
## 
##              es = -0.6339
##           power = 0.5815612
##               n = 45
##              n1 = 33
##              n2 = 12
##           ratio = 2.75
##       sig.level = 0.05
##     alternative = left
## 
## NOTE: n is the total number of observations

Az output alapján azt mondhatjuk, hogy a próba statisztikai ereje 58%-os.

Mintaelemszám meghatározása Welch-féle d-próbában. Ha 80%-os statisztikai erőre van szükségünk a próba végrehajtása során, akkor ugyanilyen hatásnagyság kimutatásához (\(d=0.63\)), mekkora mintaelemszámra van szükség?

library(powerAnalysis)
power.t(es = -0.6339, power = 0.8, sig.level=0.05, type="unequal", ratio=33/12, alternative="left")
## 
##      Two-sample (unequal size) t test power calculation 
## 
##              es = -0.6339
##           power = 0.8
##               n = 80.06643
##              n1 = 58.71538
##              n2 = 21.35105
##           ratio = 2.75
##       sig.level = 0.05
##     alternative = left
## 
## NOTE: n is the total number of observations

Látható, hogy a 80%-os statisztikai erő eléréséhez (kerekítve) 80 elemű mintára van szükség, és ha meg akarjuk tartani az eredeti elemszámok arányát a két mintában, akkor 59 és 21 fős csoportokra van szükség.