Raport 6 - Bootstrap

Bootstrap w estymacji punktowej i przedziałowej na przykładzie badania średniej.

Analiza została wykonana na pliku studenci_warszawa.RData. Dane dotyczą 500 studentów pochodzących z i studiujących w Warszawie.

library(psych)

tabela<- knitr::kable(head(studenci), caption="Studenci - dane")
kable_classic(tabela)
Studenci - dane
samodzielnie rok dochod plec rodzenstwo
0 5 76 0 1
1 3 149 0 0
1 2 122 0 1
1 3 135 0 0
0 1 112 1 1
1 5 145 1 0
hist(studenci$dochod)

Zadanie 1. Estymacja błędu standardowego średniej próbkowej metodą bootstrap.

Podstawowe statystyki opisowe dla Dochodów Rodzin studenta

opis=describe(studenci$dochod)

opis<- knitr::kable(opis, caption="statystyki opisowe dla zmiennej Dochód rodziny studenta")
kable_classic(opis)
statystyki opisowe dla zmiennej Dochód rodziny studenta
vars n mean sd median trimmed mad min max range skew kurtosis se
X1 1 500 115.354 35.61187 114 115.23 37.065 13 216 203 0.0030899 -0.0889096 1.592611

Estymacja błędu standardowego dla pełnej próby

Błąd standardowy

## [1] 1.592611

Procentowy Błąd standardowy

## [1] 0.01380629

Błąd standardowy równy 0.01380629 (1,38%) będzie punktem odniesienia w dalszych estymacjach metodą bootstrap.

dolna krawędź przedziału ufności

#przedziałowo klasycznie
mean(dochod)-1.96*se   #dolna krawędź
## [1] 112.2325

górna krawędź przedziału ufności

## [1] 118.4755

Estymacja błędu standardowego dla próbek bootstrapowych

nobs=50

poniżej Średnia, odch. standardowe, SE i SEP

B=999
mean.dochod=rep(0,B)
nobs=50 #liczba próbek bootstrapowych - zwiększaj ich liczbę: 50, 250, 500, 1000, 10000
## [1] 118.38
## [1] 35.09514
## [1] 4.963203
## [1] 0.01345338
przedziałowo bootstrapowo 95% ufności
dolny gorny
108.6521 128.1079
przedziałowo Efron 97.5% ufności
dolny gorny
2.5% 63.35 186.925

nobs=15

poniżej Średnia, odch. standardowe, SE i SEP

attach(studenci)
B=999
mean.dochod=rep(0,B)
nobs=15 #liczba próbek bootstrapowych - zwiększaj ich liczbę: 50, 250, 500, 1000, 10000
## [1] 115.5333
## [1] 23.90716
## [1] 6.172803
## [1] 0.01378486
przedziałowo bootstrapowo 95% ufności
dolny gorny
103.4346 127.632
przedziałowo Efron
dolny gorny
2.5% 77.7 158.9

nobs=30

poniżej Średnia, odch. standardowe, SE i SEP

attach(studenci)
B=999
mean.dochod=rep(0,B)
nobs=30 #liczba próbek bootstrapowych - zwiększaj ich liczbę: 50, 250, 500, 1000, 10000
## [1] 114.7
## [1] 24.23612
## [1] 4.42489
## [1] 0.01388501
przedziałowo bootstrapowo 95% ufności
dolny gorny
106.0272 123.3728
przedziałowo Efron
dolny gorny
2.5% 79.725 163.925

nobs=100

poniżej Średnia, odch. standardowe, SE i SEP

attach(studenci)
B=999
mean.dochod=rep(0,B)
nobs=100 #liczba próbek bootstrapowych - zwiększaj ich liczbę: 50, 250, 500, 1000, 10000
## [1] 113.75
## [1] 32.87177
## [1] 3.287177
## [1] 0.01400098
przedziałowo bootstrapowo 95% ufności
dolny gorny
107.3071 120.1929
przedziałowo Efron
dolny gorny
2.5% 56.95 171.05

Tabela - porównanie

Estymacja błędu standardowego
liczebość.próbki średnia.próbkowa odch.std SE SEP
Pełny zakres 115.3540 35.61187 1.59261 0.01381
N=15 115.5333 23.90716 6.17280 0.01378
N=30 114.7000 24.23612 4.42489 0.01389
N=50 118.3800 35.09514 4.96320 0.01345
N=100 113.7500 32.87177 3.28718 0.01400

Wnioski

Na podstawie powyżej tabeli można wysnuć wniosek, że wraz ze zwiększeniem liczebności próbek N, zwiększa się błąd standardowy procentowy i (SEP). Dlatego też ta metoda jest bardzo korzystna, ponieważ małe próby dają niewielkie procentowe błędy standardowe.

Dodatkowe porównanie Bootrstrap model vs model liniowy z zastosowaniem funkcji bootstraps()

Model KMNK

summary(lm(dochod~., data=studenci))
## 
## Call:
## lm(formula = dochod ~ ., data = studenci)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -113.861  -14.766    0.138   13.797  111.368 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  101.5597     4.5076  22.531  < 2e-16 ***
## samodzielnie  20.3905     3.0926   6.593 1.11e-10 ***
## rok            1.6368     1.0990   1.489    0.137    
## plec          -1.8537     3.0738  -0.603    0.547    
## rodzenstwo    -0.2009     3.0577  -0.066    0.948    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 34.06 on 495 degrees of freedom
## Multiple R-squared:  0.09244,    Adjusted R-squared:  0.0851 
## F-statistic:  12.6 on 4 and 495 DF,  p-value: 8.962e-10
library(sjPlot)
library(tidymodels)

Wiemy, że tylko zmienna samodzielnie jest istotna statystycznie w modelu szacującym dochody rodzin studentów. Poniżej zatem zostanie oszacowny model: dochod=const + beta*samodzielnie + u

summary(lm(dochod~samodzielnie, data=studenci))
## 
## Call:
## lm(formula = dochod ~ samodzielnie, data = studenci)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -113.416  -13.305    0.695   13.584  110.695 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   105.305      2.103  50.065  < 2e-16 ***
## samodzielnie   21.111      3.049   6.924 1.36e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 34.05 on 498 degrees of freedom
## Multiple R-squared:  0.08783,    Adjusted R-squared:  0.08599 
## F-statistic: 47.95 on 1 and 498 DF,  p-value: 1.356e-11

Oszacowania modelu bootstrap dla 500 próbek

N dla każdej próbki wynosi tyle samo co pierwotne dane, tzn. 500 obserwacji

set.seed(123)
boot_dane<- bootstraps(studenci, times=500)
boot_dane
## # Bootstrap sampling 
## # A tibble: 500 × 2
##    splits            id          
##    <list>            <chr>       
##  1 <split [500/185]> Bootstrap001
##  2 <split [500/185]> Bootstrap002
##  3 <split [500/187]> Bootstrap003
##  4 <split [500/177]> Bootstrap004
##  5 <split [500/199]> Bootstrap005
##  6 <split [500/180]> Bootstrap006
##  7 <split [500/180]> Bootstrap007
##  8 <split [500/190]> Bootstrap008
##  9 <split [500/193]> Bootstrap009
## 10 <split [500/184]> Bootstrap010
## # ℹ 490 more rows
boot_dane$splits[[1]]
## <Analysis/Assess/Total>
## <500/185/500>
boot_models<-boot_dane%>%
  mutate(model = map(splits, ~lm(dochod~0+samodzielnie, data=.)),
         coefs=map(model, tidy))
boot_models
## # Bootstrap sampling 
## # A tibble: 500 × 4
##    splits            id           model  coefs           
##    <list>            <chr>        <list> <list>          
##  1 <split [500/185]> Bootstrap001 <lm>   <tibble [2 × 5]>
##  2 <split [500/185]> Bootstrap002 <lm>   <tibble [2 × 5]>
##  3 <split [500/187]> Bootstrap003 <lm>   <tibble [2 × 5]>
##  4 <split [500/177]> Bootstrap004 <lm>   <tibble [2 × 5]>
##  5 <split [500/199]> Bootstrap005 <lm>   <tibble [2 × 5]>
##  6 <split [500/180]> Bootstrap006 <lm>   <tibble [2 × 5]>
##  7 <split [500/180]> Bootstrap007 <lm>   <tibble [2 × 5]>
##  8 <split [500/190]> Bootstrap008 <lm>   <tibble [2 × 5]>
##  9 <split [500/193]> Bootstrap009 <lm>   <tibble [2 × 5]>
## 10 <split [500/184]> Bootstrap010 <lm>   <tibble [2 × 5]>
## # ℹ 490 more rows

bootsraps( ) : times - The number of bootstrap samples.

boot_coefs <- boot_models %>%
  unnest(coefs)%>%
  select(term,estimate)
boot_coefs
## # A tibble: 1,000 × 2
##    term          estimate
##    <chr>            <dbl>
##  1 samodzielnie0     107.
##  2 samodzielnie1     127.
##  3 samodzielnie0     102.
##  4 samodzielnie1     124.
##  5 samodzielnie0     104.
##  6 samodzielnie1     127.
##  7 samodzielnie0     106.
##  8 samodzielnie1     127.
##  9 samodzielnie0     105.
## 10 samodzielnie1     128.
## # ℹ 990 more rows
boot_coefs%>%
  ggplot(aes(x=estimate))+
  geom_histogram()+
  facet_wrap(~term, scales="free")

Przedziały ufności

Poniżej tabela z przedziałami ufności w modelu dochody~samodzielnie.

boot_meds<-boot_coefs%>%
  group_by(term)%>%
  summarise(
    mediana_est=median(estimate),
    quintile=quantile(estimate,0.5),
    conf.low_2.5=quantile(estimate, 0.025),
    conf.high_97.5=quantile(estimate,0.975),
    conf.25=quantile(estimate,0.25),
    conf.75=quantile(estimate,0.75)
  )
 knitr::kable(boot_meds)%>%
 kable_classic()
term mediana_est quintile conf.low_2.5 conf.high_97.5 conf.25 conf.75
samodzielnie0 105.3178 105.3178 101.4066 109.1886 103.8528 106.5426
samodzielnie1 126.5098 126.5098 122.0641 131.1057 124.7712 127.9365

Histogram dla parametrów przy zmiennej samodzielne zamieszkanie

Na wykresie poniżej poza wykresem gęstości dla paramaterów zostały również zaznaczone przedziały ufności (zielone i niebieskie obszary) oraz mediana (linia pionowa).

Zewnętrzne pola jasno zielone oznaczają przedziały ufności 2,5% i 97,5%. Obszar zaznaczony na niebieski kolor to przedziały 25%-75%.

boot_coefs%>%
  ggplot(aes(x=estimate))+
  geom_rect(data=boot_meds, alpha=0.3, fill="green",
            aes(x=mediana_est, xmin=conf.low_2.5, xmax=conf.high_97.5, ymin=0, ymax=Inf))+
  geom_rect(data=boot_meds, alpha=0.4, fill="blue", aes(x=mediana_est, xmin=conf.25, xmax=conf.75,ymin=0, ymax=Inf))+
  geom_density()+
  geom_vline(data=boot_meds, aes(xintercept=mediana_est))+
  facet_wrap(~term, scales = "free")

Na podsawie wykresów powyżej można stwierdzić, że 50% badanych studentów, którzy mieszkają z rodzicami (0) ich rodziny nie zarabiają więcej niż 107 jednostek i nie mniej niż 104j. Natomiast na wykresie po prawej widzimy, że w grupie, która mieszka samodzielnie (1), 50% badanych studentów zadeklarowało, że dochód w ich rodzinienie mieści się w przedziale 125-128j.

Co więcej 95% studentów mieszkających samodzielnie, w ich rodzinach, dochód nigdy nie był mniejszy niż 121 jednostek. Potiwerdza, to intuicyjne przekonanie, że tylko zamorzniejsze rodziny mogą sobie pozwolić na to aby, ich dziecko będące na studiach mieszkało samodzielnie, gdyż zazwyczaj większość studentów jest jeszcze wspieranych przez rodziców.

Bootstrap p-value - średnia vs mediana (1000 próbek)

Porównanie średnią i mediane dla p-value z regresji bootstrapowej w stosunku do p-value z modelu liniowego. W celu sprawdzenia czy mediana sprwadza się lepiej od średniej.

Liczna próbek = 1000 N=500 (jak pierwotne dane)

boot_models<- bootstraps(studenci, times=1000)%>%
  mutate(model=map(splits, ~lm(dochod~0+samodzielnie, data=.)),
          coefs=map(model, tidy))
boot_coefs<-boot_models%>%
  unnest(coefs) %>%
  select(term, p.value)
m<-lm(dochod~samodzielnie, data=studenci)
boot_coefs%>%
  group_by(term)%>%
  summarise(
    mean_boot_pvalue = mean(p.value),
    mediana_boot_pvalue= median(p.value)
  )%>%
  left_join(tidy(m)%>% select(term, p.value))
## # A tibble: 2 × 4
##   term          mean_boot_pvalue mediana_boot_pvalue   p.value
##   <chr>                    <dbl>               <dbl>     <dbl>
## 1 samodzielnie0        1.20e-177           1.70e-196 NA       
## 2 samodzielnie1        2.39e-192           1.56e-221  1.36e-11

Nie dostrzegamy znacznych różnic między medianą z p-value, a śrendią z p-value oszacowanym metodą bootstrap, ponieważ wartości są bardzo małe i bliskie zeru.

Zadanie 2. Estymacja błędu standardowego średniej próbkowej metodą bootstrap dla różnych wielkości próby.

attach(studenci)
mean.boot=function(dochod,idx) {
ans=mean(dochod[idx])
ans
}

DOCHOD.mean.boot = boot(dochod,statistic=mean.boot, R=999)
class(DOCHOD.mean.boot)
## [1] "boot"
names(DOCHOD.mean.boot)
##  [1] "t0"        "t"         "R"         "data"      "seed"      "statistic"
##  [7] "sim"       "call"      "stype"     "strata"    "weights"
DOCHOD.mean.boot
## 
## ORDINARY NONPARAMETRIC BOOTSTRAP
## 
## 
## Call:
## boot(data = dochod, statistic = mean.boot, R = 999)
## 
## 
## Bootstrap Statistics :
##     original      bias    std. error
## t1*  115.354 -0.03110911    1.563535
plot(DOCHOD.mean.boot)

Nieparametryczne przedziały ufności Bootstrap

boot.ci(DOCHOD.mean.boot,conf=0.95,type=c("norm","perc"))
## BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
## Based on 999 bootstrap replicates
## 
## CALL : 
## boot.ci(boot.out = DOCHOD.mean.boot, conf = 0.95, type = c("norm", 
##     "perc"))
## 
## Intervals : 
## Level      Normal             Percentile     
## 95%   (112.3, 118.4 )   (112.3, 118.3 )  
## Calculations and Intervals on Original Scale

Testy t studenta

Wyżej do oszacowań dochódów rodziny studenta wykorzystano zmienną istotna - SAMODZIELNIE.

Jednak aby, zbadać inne relacje między Dochodami rodzin, a pozostałymy zmiennymi zostaną przeprowadzone testy (t-studenta, Chi2 oraz ANOVA)

Zatem teraz, w pirewszej kolejności chcemy zbadać czy dochody rodziny studentów istotnie różnią się w zależności od płci studenta?

Poniżej wyniki testu t-studenta wraz z wynikami testu bootstrapowego (Bootstrap Welch Two Sample t-test).

library(MKinfer) 
library(tidyverse)
attach(studenci)
studenci2<- studenci %>%
  filter(plec %in% c(0,1))

  boot.t.test(dochod~plec, R=999, studenci2)
## 
##  Bootstrap Welch Two Sample t-test
## 
## data:  dochod by plec
## number of bootstrap samples:  999
## bootstrap p-value = 0.2142 
## bootstrap difference of means (SE) = 4.232713 (3.17716) 
## 95 percent bootstrap percentile confidence interval:
##  -1.8698 10.1688
## 
## Results without bootstrap:
## t = 1.2427, df = 497.97, p-value = 0.2146
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -2.298722 10.210722
## sample estimates:
## mean in group 0 mean in group 1 
##         117.332         113.376
  t.test(dochod~plec, studenci2)
## 
##  Welch Two Sample t-test
## 
## data:  dochod by plec
## t = 1.2427, df = 497.97, p-value = 0.2146
## alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
## 95 percent confidence interval:
##  -2.298722 10.210722
## sample estimates:
## mean in group 0 mean in group 1 
##         117.332         113.376

Wnioski

Otrzymano, że: - bootstrap: p-value = 0.2102 - Results without bootstrap: p-value = 0.2146

Na podstawie powyższego można stwierdzić, że p-value dla bootrstapa i bez
w obu przypadkach Testu t-studenta brak podstaw do odrzucenia H0, ponieważ p-value jest większe od alfa=0.05. Oznacza to, ze różnice między średnimi dochodami rodzin studentów w przypadku kiedy studentem była kobiet i mężczyzn są statystycznie nie istotne. Metoda boodstrap jest dobrze dobrana, gdyż wynik p-value jest bardzo zbliżony do p-value z testu bez bootstrapa (N jest wystarczają dużą prbóbką).

Test proporcji

Test proporcji dla zmiennych jakościowych - sprawdzenie, czy wyniki z włączonym bootstrapem różnią się od wyników pojedynczego testu chi2.

Testy zostaną przeprowadzone dla kilku par zmiennych.

1) samodzielnie (Tak/Nie) ~ płec (K/M)

Czy samodzielne zamieszaknie różni się istotnie w zależności od płci studenta?

  • Tak różni się istotnie. Przyjmując poziom istotnośći alfa=0.05, na podstawie testu chi2 swierdzamy, że należy odrzucić H0, na rzecz Hipotezy alternatywnej, ponieważ p-value=0.01562 (bez bootstrapa) i p-value = 0.01499 (test z boostrapem) co jest mniejszą wartością od alfa. Oznacza to, że występują istotne różnicę między statusem zamieszkania studenta (samodzielnie lub nie), a płcią studenta.

-Metoda boodstrap jest dobrze dobrana (N jest wystarczają dużą prbóbką) ponieważ test dał bardzo bliski wynik jak bez.

# Przykład 2. Test Chi2 dla dwóch zmiennych jakościowych

attach(studenci)
# Czy status studenta (YES, NO) różni się istotnie wg płci (Male, Female)?
tabelka<-table(samodzielnie,plec)
chisq.test(tabelka,simulate.p.value = TRUE, B = 2000)
## 
##  Pearson's Chi-squared test with simulated p-value (based on 2000
##  replicates)
## 
## data:  tabelka
## X-squared = 6.2865, df = NA, p-value = 0.01699
chisq.test(tabelka) # różnice???
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  tabelka
## X-squared = 5.8455, df = 1, p-value = 0.01562

2) rok (1-5) ~ samodzielnie (Tak/Nie)

Czy samodzielne zamieszaknie różni się istotnie w zależności od roku studiów studenta?

# Czy status studenta (YES, NO) różni się istotnie wg płci (Male, Female)?
tabelka2<-table(rok,samodzielnie)
chisq.test(tabelka2,simulate.p.value = TRUE, B = 2000)
## 
##  Pearson's Chi-squared test with simulated p-value (based on 2000
##  replicates)
## 
## data:  tabelka2
## X-squared = 11.12, df = NA, p-value = 0.02799
chisq.test(tabelka2)
## 
##  Pearson's Chi-squared test
## 
## data:  tabelka2
## X-squared = 11.12, df = 4, p-value = 0.02524
  • Tak różni się istotnie. p-value< alfa 0.05. Należy odrzucić H0, na rzecz H1.
  • Jest to także dodatkowe potwierdzenie, że metoda boodstrap jest dobrze dobrana (N jest wystarczają dużą prbóbką) ponieważ test z bootstrapem dał bardzo bliski wynik jak bez niego.

3) rodzeństwo (tak/nie) ~ samodzielnie mieszka (Tak/Nie)

Czy samodzielne zamieszaknie różni się istotnie w zależności od tego czy student posiadał rodzeństwo?

  • Poniższy test wskazuje, że brak istotnych statystycznie różnic. P-value>0.05, co daje brak podstaw do odrzucenia H0.
  • To również dodatkowe potwierdzenie, że metoda boodstrap jest dobrze dobrana (N jest wystarczają dużą prbóbką).
## 
##  Pearson's Chi-squared test with simulated p-value (based on 2000
##  replicates)
## 
## data:  tabelka3
## X-squared = 0.47717, df = NA, p-value = 0.5347
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  tabelka3
## X-squared = 0.36145, df = 1, p-value = 0.5477

Testy ANOVA

test Anova: czy średni poziom dochodów różni się istotnie w zależności od samodzielnego zamieszkania, płci, roku studiów i posiadanego rodzeństwa?

attach(studenci)
model1 <- lm(dochod ~ samodzielnie+rok+plec+rodzenstwo, data=studenci)
anova(model1)
## Analysis of Variance Table
## 
## Response: dochod
##               Df Sum Sq Mean Sq F value   Pr(>F)    
## samodzielnie   1  55579   55579 47.7867 1.48e-11 ***
## rok            4   4482    1120  0.9634   0.4272    
## plec           1    523     523  0.4501   0.5026    
## rodzenstwo     1     22      22  0.0192   0.8899    
## Residuals    492 572228    1163                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Wykazano istotność statystyczną tylko dla zmiennej samodzielnie - p-value<alfa=0.05 s # ANOVA z włączonym bootstrapem

Poniżej oszacowania parametrów dla modelu zapisanego:

dochod~samodzielnie+rok+plec+rodzenstwo

library(lmboot)
anova_boot<-ANOVA.boot(dochod~samodzielnie+rok+plec+rodzenstwo,data=studenci,B=999)
anova_boot$`p-values`
## [1] 0.0000000 0.4264264 0.5145145 0.8968969

Wnioski

Równiez test ANOVA z bootstrapem wykazał, że przeciętne dochody rodzin istontnie różnią się w zależności czy student mieszkał sam lub nie. Dodatkowo, różnice w oszacowanych parametrach przy zmiennych objaśniających są nieznaczne. Zatem resampling okazał się być dobrze dostosowany i przyniósł spodziewane rezultaty.

ANOVA 1-czynnikowa

library(ggstatsplot)
ggbetweenstats(data=studenci,
  y=dochod,
  x=samodzielnie,
  nboot=999,
  title = "ANOVA z bootstrap - dochody rodzin~samodzielne mieszkanie")

ggbetweenstats(data=studenci,
  y=dochod,
  x=samodzielnie,
  title = "ANOVA bez bootstrap - dochody rodzin~samodzielne mieszkanie")

ggbetweenstats(data=studenci,
  y=dochod,
  x=plec,
  nboot=999,
  title = "ANOVA z bootstrap - dochody rodzin względem płci")

ggbetweenstats(data=studenci,
  y=dochod,
  x=plec,
  title = "ANOVA bez bootstrap - dochody względem płci")

ggbetweenstats(data=studenci,
  y=dochod,
  x=rok,
  nboot=999,
  title = "ANOVA z bootstrap - dochody rodzin względem roku studiów")

ggbetweenstats(data=studenci,
  y=dochod,
  x=rodzenstwo,
  nboot=999,
  title = "ANOVA z bootstrap - dochody rodzin względem posiadanego rodzeństwa")

Wnioski

Na podstawie powyższych oszacowań ANOVY jendoczynnikowej wykazano, że różnicę pomiędzy średnimi dochodami rodzin, a samodzielnym zamieszkaniem studenta są statystycznie istotne. P-vaule = 1.44e-11 < 0.05 zatem należy odrzucić hipoteze zerową, na rzecz hipotezy alternatywnej.

Pozostałe różnice dla przeciętnych dochodów rodzin, a oddzielnie płci, roku studiów i posiadania rodzeńtwa wykazywały brak istotności statystycznej, p-value>alfa=0.05, co świadczy o braku podstaw do hipotezy zerowej.