Подтвердить что ты не робот

Увидеть, нормально ли распределены данные в R

Может кто-нибудь, пожалуйста, помогите мне заполнить следующую функцию в R:

#data is a single vector of decimal values
normally.distributed <- function(data) {
if(data is normal)
return(TRUE)
else
return(NO)
}
4b9b3361

Ответ 1

Тесты нормальности не делают то, что большинство думают, что они делают. Тест Шапиро, Андерсон Дарлинг и другие - гипотезы нулевой гипотезы ПРОТИВ предположения о нормальности. Они не должны использоваться, чтобы определить, следует ли использовать обычные статистические процедуры теории. Фактически они практически не имеют ценности для аналитика данных. В каких условиях мы заинтересованы в отказе от нулевой гипотезы о том, что данные обычно распределяются? Я никогда не сталкивался с ситуацией, когда нормальный тест - это правильная вещь. Когда размер выборки мал, даже большие отклонения от нормальности не обнаруживаются, и когда размер выборки велик, даже наименьшее отклонение от нормальности приведет к отклоненному нулю.

Например:

> set.seed(100)
> x <- rbinom(15,5,.6)
> shapiro.test(x)

    Shapiro-Wilk normality test

data:  x 
W = 0.8816, p-value = 0.0502

> x <- rlnorm(20,0,.4)
> shapiro.test(x)

    Shapiro-Wilk normality test

data:  x 
W = 0.9405, p-value = 0.2453

Итак, в обоих случаях (биномиальный и логарифмический вариации) p-значение составляет > 0,05, что приводит к отказу от null (что данные нормальны). Означает ли это, что мы должны сделать вывод, что данные нормальные? (подсказка: ответ - нет). Отказ отклонить - это не то же самое, что принимать. Это проверка гипотезы 101.

Но как насчет больших размеров выборки? Возьмем случай, когда распределение очень почти нормальное.

> library(nortest)
> x <- rt(500000,200)
> ad.test(x)

    Anderson-Darling normality test

data:  x 
A = 1.1003, p-value = 0.006975

> qqnorm(x)

enter image description hereenter image description here

Здесь мы используем t-распределение с 200 степенями свободы. Qq-график показывает, что распределение ближе к нормальному, чем любое распределение, которое вы, вероятно, увидите в реальном мире, но тест отвергает нормальность с очень высокой степенью уверенности.

Значит ли значительный тест против нормальности означает, что в этом случае мы не должны использовать статистику нормальной теории? (другой намек: ответ нет:))

Ответ 2

Я также очень рекомендую SnowsPenultimateNormalityTest в пакете TeachingDemos. документация функции гораздо полезнее для вас, чем сам тест. Перед использованием теста внимательно прочитайте его.

Ответ 3

SnowsPenultimateNormalityTest имеет свои достоинства, но вы также можете посмотреть qqnorm.

X <- rlnorm(100)
qqnorm(X)
qqnorm(rnorm(100))

Ответ 4

Рассмотрим использование функции shapiro.test, которая выполняет тест Шапиро-Уилкса на предмет нормальности. Я был доволен этим.

Ответ 5

Библиотека (DNE)

х < -rnorm (1000,0,1)

is.norm(х, 10,0.05)

Ответ 6

Тест Anderson-Darling также полезен.

library(nortest)
ad.test(data)

Ответ 7

когда вы выполняете тест, у вас всегда есть вероятность отклонить нулевую гипотезу, когда она истинна.

Смотрите следующий код R:

p=function(n){
  x=rnorm(n,0,1)
  s=shapiro.test(x)
  s$p.value
}

rep1=replicate(1000,p(5))
rep2=replicate(1000,p(100))
plot(density(rep1))
lines(density(rep2),col="blue")
abline(v=0.05,lty=3)

График показывает, что если у вас есть размер выборки маленький или большой в 5% случаев, когда у вас есть шанс отклонить нулевую гипотезу, когда она истинна (ошибка типа I)