Две разные выборки с одинаковым результатом в тесте Шапиро Уилка

#r #random

#r #Случайный

Вопрос:

Две разные выборки, сгенерированные с rnorm помощью функции, дают одинаковый результат в тесте Шапиро-Уилка. Я был бы очень признателен за объяснение моей ошибки.

 > set.seed(18102003)
> x=rnorm(n=6,mean=1.29,sd=1.29*0.33)
> x
[1] 2.0989973 1.5440310 0.8401053 1.3630999 1.3274229 1.9812853
> shapiro.test(x)

        Shapiro-Wilk normality test

data:  x
W = 0.94929, p-value = 0.7345

> set.seed(18102003)
> x=rnorm(6,2.97,2.97*0.49)
> x
[1] 5.735642 3.838432 1.431988 3.219900 3.097934 5.333231
> shapiro.test(x)

        Shapiro-Wilk normality test

data:  x
W = 0.94929, p-value = 0.7345
  

Комментарии:

1. Если вы это сделаете z <- rnorm(n = 6); shapiro.test(z) , вы увидите те же значения, векторы x и z просто масштабированные версии одного и того же z . Вычислите scale(x) - scale(z) и убедитесь, что различия неотличимы от нуля.

2. @RuiBarradas, пожалуйста, отправьте ответ?

3. @BenBolker Готово, немного более подробно.

Ответ №1:

Результаты тестов точно такие же, потому что векторы являются копиями друг друга в масштабе, а тест Шапиро-Уилкса инвариантен к изменениям местоположения и масштаба. Это можно увидеть, если вычислить различия между масштабированными векторами.

Сначала снова сгенерируйте векторы, но присвоите им разные имена и новый вектор z .

 set.seed(18102003)
x <- rnorm(n = 6, mean = 1.29, sd = 1.29*0.33)
set.seed(18102003)
y <- rnorm(6, 2.97, 2.97*0.49)
set.seed(18102003)
z <- rnorm(n = 6)
  

Теперь посмотрите, что x и y являются копиями z

 all.equal(x, 1.29*0.33*z   1.29)
#[1] TRUE
all.equal(y, 2.97*0.49*z   2.97)
#[1] TRUE

scale(x) - scale(y)  # equal up to floating-point precision
scale(x) - scale(z)  # the same
  

Теперь запустите тесты и сравните статистику тестов с identical .

 identical(shapiro.test(z)$statistic, shapiro.test(x)$statistic)
#[1] TRUE
identical(shapiro.test(z)$statistic, shapiro.test(y)$statistic)
#[1] TRUE