Может кто-нибудь, пожалуйста, помогите мне заполнить следующую функцию в R:
#data is a single vector of decimal values
normally.distributed <- function(data) {
if(data is normal)
return(TRUE)
else
return(NO)
}
Может кто-нибудь, пожалуйста, помогите мне заполнить следующую функцию в R:
#data is a single vector of decimal values
normally.distributed <- function(data) {
if(data is normal)
return(TRUE)
else
return(NO)
}
Тесты нормальности не делают то, что большинство думают, что они делают. Тест Шапиро, Андерсон Дарлинг и другие - гипотезы нулевой гипотезы ПРОТИВ предположения о нормальности. Они не должны использоваться, чтобы определить, следует ли использовать обычные статистические процедуры теории. Фактически они практически не имеют ценности для аналитика данных. В каких условиях мы заинтересованы в отказе от нулевой гипотезы о том, что данные обычно распределяются? Я никогда не сталкивался с ситуацией, когда нормальный тест - это правильная вещь. Когда размер выборки мал, даже большие отклонения от нормальности не обнаруживаются, и когда размер выборки велик, даже наименьшее отклонение от нормальности приведет к отклоненному нулю.
Например:
> 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)
Здесь мы используем t-распределение с 200 степенями свободы. Qq-график показывает, что распределение ближе к нормальному, чем любое распределение, которое вы, вероятно, увидите в реальном мире, но тест отвергает нормальность с очень высокой степенью уверенности.
Значит ли значительный тест против нормальности означает, что в этом случае мы не должны использовать статистику нормальной теории? (другой намек: ответ нет:))
Я также очень рекомендую SnowsPenultimateNormalityTest
в пакете TeachingDemos
. документация функции гораздо полезнее для вас, чем сам тест. Перед использованием теста внимательно прочитайте его.
SnowsPenultimateNormalityTest
имеет свои достоинства, но вы также можете посмотреть qqnorm
.
X <- rlnorm(100)
qqnorm(X)
qqnorm(rnorm(100))
Рассмотрим использование функции shapiro.test
, которая выполняет тест Шапиро-Уилкса на предмет нормальности. Я был доволен этим.
Библиотека (DNE)
х < -rnorm (1000,0,1)
is.norm(х, 10,0.05)
Тест Anderson-Darling также полезен.
library(nortest)
ad.test(data)
когда вы выполняете тест, у вас всегда есть вероятность отклонить нулевую гипотезу, когда она истинна.
Смотрите следующий код 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)