Проверяем, как проходит тест на нормальность iris без изменений. Смотрим зависимость длины чашелистиков от вида ирисов
data(iris)
summary(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100
## 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300
## Median :5.800 Median :3.000 Median :4.350 Median :1.300
## Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199
## 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
## Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
## Species
## setosa :50
## versicolor:50
## virginica :50
##
##
##
fit <- lm(Sepal.Length ~ Species, data = iris) #создаём линейную модель
res <- resid(fit) #отбираем остатки
shapiro.test(res)
##
## Shapiro-Wilk normality test
##
## data: res
## W = 0.9879, p-value = 0.2189
library("nortest")
lillie.test(res)
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: res
## D = 0.07331, p-value = 0.04711
ad.test(res)
##
## Anderson-Darling normality test
##
## data: res
## A = 0.59794, p-value = 0.1188
p-value = 0.2189 > 0.05 следовательно, данные распределены нормально p-value = 0.04711 < 0.05 p-value = 0.1188 >0.05
В результате трёх тестов на нормальность, в двух p-значение больше 0.05, следовательно данные распределены нормально
Посмотрим также, гомогенны ли дисперсии
library("car")
## Warning: пакет 'car' был собран под R версии 4.2.3
## Загрузка требуемого пакета: carData
## Warning: пакет 'carData' был собран под R версии 4.2.3
leveneTest(Sepal.Length ~ Species, data = iris)
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 2 6.3527 0.002259 **
## 147
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Pr(>F) 0.002259 < 0.05 значит, дисперсии не гомогенны
Проведём попарные сравнения
oneway.test(Sepal.Length ~ Species, data = iris)
##
## One-way analysis of means (not assuming equal variances)
##
## data: Sepal.Length and Species
## F = 138.91, num df = 2.000, denom df = 92.211, p-value < 2.2e-16
pairwise.t.test(iris$Sepal.Length, iris$Species, pool.sd = F)
##
## Pairwise comparisons using t tests with non-pooled SD
##
## data: iris$Sepal.Length and iris$Species
##
## setosa versicolor
## versicolor < 2e-16 -
## virginica < 2e-16 1.9e-07
##
## P value adjustment method: holm
Получается, все три вида ирисов отличаются по длине лепестков, так как при попарном сравнении p < 0.05
Сделаем выборку iris меньше. Выберем случайные наблюдения
#N/2 = 75
iris75 <- iris[sample(1:nrow(iris), 75, replace=FALSE),]
summary(iris75)
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## Min. :4.400 Min. :2.000 Min. :1.200 Min. :0.100
## 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.350
## Median :5.800 Median :3.000 Median :4.500 Median :1.400
## Mean :5.796 Mean :3.008 Mean :3.833 Mean :1.223
## 3rd Qu.:6.300 3rd Qu.:3.350 3rd Qu.:5.000 3rd Qu.:1.800
## Max. :7.700 Max. :3.800 Max. :6.900 Max. :2.500
## Species
## setosa :23
## versicolor:29
## virginica :23
##
##
##
#проверим на нормальность
fit75 <- lm(Sepal.Length ~ Species, data = iris75) #создаём линейную модель
res75 <- resid(fit75) #отбираем остатки
shapiro.test(res75)
##
## Shapiro-Wilk normality test
##
## data: res75
## W = 0.97034, p-value = 0.07544
library("nortest")
lillie.test(res75)
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: res75
## D = 0.1103, p-value = 0.0245
ad.test(res75)
##
## Anderson-Darling normality test
##
## data: res75
## A = 0.80192, p-value = 0.03616
#Оценим гомогенность дисперсий
library("car")
leveneTest(Sepal.Length ~ Species, data = iris75)
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 2 3.1304 0.0497 *
## 72
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#0.02883 < 0.05 дисперсии негомогенны
oneway.test(Sepal.Length ~ Species, data = iris75)
##
## One-way analysis of means (not assuming equal variances)
##
## data: Sepal.Length and Species
## F = 75.698, num df = 2.000, denom df = 43.597, p-value = 6.588e-15
pairwise.t.test(iris75$Sepal.Length, iris75$Species, pool.sd = F)
##
## Pairwise comparisons using t tests with non-pooled SD
##
## data: iris75$Sepal.Length and iris75$Species
##
## setosa versicolor
## versicolor 7.7e-12 -
## virginica 9.5e-11 0.063
##
## P value adjustment method: holm
#все виды ирисов отличаются между собой по длине чашелистиков
p-value = 0.1403 > 0.05 p-value = 0.02939 < 0.05 p-value = 0.08542 > 0.05 Замечаем, что нормальное рапределение сохраняется
Уменьшаем выборку N/4
#150/4 = 37.5 - округлим в большую сторону = 38
iris38 <- iris[sample(1:nrow(iris), 38, replace=FALSE),]
summary(iris38)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## Min. :4.40 Min. :2.300 Min. :1.200 Min. :0.200 setosa :12
## 1st Qu.:5.25 1st Qu.:2.800 1st Qu.:1.550 1st Qu.:0.400 versicolor:13
## Median :5.80 Median :3.050 Median :4.400 Median :1.400 virginica :13
## Mean :6.00 Mean :3.153 Mean :3.916 Mean :1.292
## 3rd Qu.:6.65 3rd Qu.:3.400 3rd Qu.:5.375 3rd Qu.:1.900
## Max. :7.90 Max. :4.400 Max. :6.600 Max. :2.500
#проверим на нормальность
fit38 <- lm(Sepal.Length ~ Species, data = iris38) #создаём линейную модель
res38 <- resid(fit38) #отбираем остатки
shapiro.test(res38)
##
## Shapiro-Wilk normality test
##
## data: res38
## W = 0.97632, p-value = 0.5876
library("nortest")
lillie.test(res38)
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: res38
## D = 0.088737, p-value = 0.6327
ad.test(res38)
##
## Anderson-Darling normality test
##
## data: res38
## A = 0.24922, p-value = 0.7297
library("car")
leveneTest(Sepal.Length ~ Species, data = iris38)
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 2 2.375 0.1078
## 35
p-value = 0.3308 >0.05 p-value = 0.3463 >0.05 p-value = 0.3512 >0.05 Данные распределены нормально, несмотря на уменьшение выборки до 38 объектов
Pr(>F) = 0.1852 >0.05 Дисперсии гомогенны - отличается от оригинальноо датасета
anova(fit38)
## Analysis of Variance Table
##
## Response: Sepal.Length
## Df Sum Sq Mean Sq F value Pr(>F)
## Species 2 17.158 8.5788 26.661 9.227e-08 ***
## Residuals 35 11.262 0.3218
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
pairwise.t.test(iris38$Sepal.Length, iris38$Species)
##
## Pairwise comparisons using t tests with pooled SD
##
## data: iris38$Sepal.Length and iris38$Species
##
## setosa versicolor
## versicolor 0.0013 -
## virginica 4.7e-08 0.0013
##
## P value adjustment method: holm
Ирисы отличаются по длине чашелистиков
Продолжаем уменьшать выборку
#N/8
#150/8 = 18.75 округляем до 19
iris19 <- iris[sample(1:nrow(iris), 19, replace=FALSE),]
summary(iris19)
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## Min. :4.400 Min. :2.300 Min. :1.200 Min. :0.2000
## 1st Qu.:4.800 1st Qu.:3.050 1st Qu.:1.450 1st Qu.:0.2000
## Median :5.100 Median :3.200 Median :1.700 Median :0.4000
## Mean :5.458 Mean :3.247 Mean :2.768 Mean :0.8579
## 3rd Qu.:6.100 3rd Qu.:3.450 3rd Qu.:4.500 3rd Qu.:1.4500
## Max. :6.900 Max. :4.200 Max. :6.000 Max. :2.5000
## Species
## setosa :12
## versicolor: 3
## virginica : 4
##
##
##
#проверим на нормальность
fit19 <- lm(Sepal.Length ~ Species, data = iris19) #создаём линейную модель
res19 <- resid(fit19) #отбираем остатки
shapiro.test(res19)
##
## Shapiro-Wilk normality test
##
## data: res19
## W = 0.98339, p-value = 0.9743
library("nortest")
lillie.test(res19)
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: res19
## D = 0.097967, p-value = 0.902
ad.test(res19)
##
## Anderson-Darling normality test
##
## data: res19
## A = 0.1581, p-value = 0.941
library("car")
leveneTest(Sepal.Length ~ Species, data = iris19)
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 2 0.4107 0.67
## 16
p-value = 0.5372 > 0.05 p-value = 0.3017 > 0.05 p-value = 0.393 > 0.05 Данные распределены нормально Pr(>F) = 0.2019 > 0.05 дисперсии гомогенны
anova(fit19)
## Analysis of Variance Table
##
## Response: Sepal.Length
## Df Sum Sq Mean Sq F value Pr(>F)
## Species 2 8.0696 4.0348 15.993 0.0001528 ***
## Residuals 16 4.0367 0.2523
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
pairwise.t.test(iris19$Sepal.Length, iris19$Species)
##
## Pairwise comparisons using t tests with pooled SD
##
## data: iris19$Sepal.Length and iris19$Species
##
## setosa versicolor
## versicolor 0.00598 -
## virginica 0.00031 0.37513
##
## P value adjustment method: holm
Виды ирисов отличаются по длине чашелистиков
Уменьшаем выборку N/16
#150/16 = 9.375 округляем до 9
iris9 <- iris[sample(1:nrow(iris), 9, replace=FALSE),]
summary(iris9)
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## Min. :4.700 Min. :2.300 Min. :1.300 Min. :0.2000
## 1st Qu.:5.000 1st Qu.:2.600 1st Qu.:1.400 1st Qu.:0.2000
## Median :5.700 Median :2.800 Median :3.500 Median :1.0000
## Mean :5.633 Mean :3.022 Mean :3.267 Mean :0.8667
## 3rd Qu.:6.100 3rd Qu.:3.200 3rd Qu.:4.700 3rd Qu.:1.3000
## Max. :6.400 Max. :4.200 Max. :5.600 Max. :2.1000
## Species
## setosa :4
## versicolor:3
## virginica :2
##
##
##
#проверим на нормальность
fit9 <- lm(Sepal.Length ~ Species, data = iris9) #создаём линейную модель
res9 <- resid(fit9) #отбираем остатки
shapiro.test(res9)
##
## Shapiro-Wilk normality test
##
## data: res9
## W = 0.9593, p-value = 0.791
library("nortest")
lillie.test(res9)
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: res9
## D = 0.12333, p-value = 0.9581
ad.test(res9)
##
## Anderson-Darling normality test
##
## data: res9
## A = 0.17654, p-value = 0.8898
library("car")
leveneTest(Sepal.Length ~ Species, data = iris9)
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 2 0.0909 0.9143
## 6
p-value = 0.7788 > 0.05 p-value = 0.8378 > 0.05 p-value = 0.8404 > 0.05 Данные распределены нормально Pr(>F) = 0.328 > 0.05 дисперсии гомогенны
anova(fit9)
## Analysis of Variance Table
##
## Response: Sepal.Length
## Df Sum Sq Mean Sq F value Pr(>F)
## Species 2 2.72083 1.36042 14.094 0.005406 **
## Residuals 6 0.57917 0.09653
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
pairwise.t.test(iris9$Sepal.Length, iris9$Species)
##
## Pairwise comparisons using t tests with pooled SD
##
## data: iris9$Sepal.Length and iris9$Species
##
## setosa versicolor
## versicolor 0.012 -
## virginica 0.012 0.474
##
## P value adjustment method: holm
I.setosa и I.versicolor достоверно не отличаются по длине чашелистиков между собой, I.versicolor I.virginica достоверно не отличаются по длине чашелистиков между собой, I.setosa и I.virginica достоверно отличаются
Уменьшаем выборку N/32
#150/32 = 4.6875 округляем до 5
iris5 <- iris[sample(1:nrow(iris), 5, replace=FALSE),]
summary(iris5)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## Min. :4.50 Min. :2.3 Min. :1.30 Min. :0.30 setosa :2
## 1st Qu.:5.70 1st Qu.:2.8 1st Qu.:1.50 1st Qu.:0.40 versicolor:3
## Median :6.10 Median :2.9 Median :4.60 Median :1.20 virginica :0
## Mean :5.92 Mean :3.1 Mean :3.36 Mean :0.94
## 3rd Qu.:6.60 3rd Qu.:3.1 3rd Qu.:4.70 3rd Qu.:1.30
## Max. :6.70 Max. :4.4 Max. :4.70 Max. :1.50
#проверим на нормальность
fit5 <- lm(Sepal.Length ~ Species, data = iris5) #создаём линейную модель
res5 <- resid(fit5) #отбираем остатки
shapiro.test(res5)
##
## Shapiro-Wilk normality test
##
## data: res5
## W = 0.95837, p-value = 0.7966
library("nortest")
lillie.test(res5)
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: res5
## D = 0.20912, p-value = 0.6698
library("car")
leveneTest(Sepal.Length ~ Species, data = iris5)
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 1 4.1143 0.1356
## 3
p-value = 0.8325 > 0.05 p-value = 0.9196 > 0.05 Данные распределены нормально Pr(>F) =< 2.2e-16 < 0.05 дисперсии негомогенны
oneway.test(Sepal.Length ~ Species, data = iris5)
##
## One-way analysis of means (not assuming equal variances)
##
## data: Sepal.Length and Species
## F = 4.7352, num df = 1.000, denom df = 1.195, p-value = 0.2406
pairwise.t.test(iris5$Sepal.Length, iris5$Species, pool.sd = F)
##
## Pairwise comparisons using t tests with non-pooled SD
##
## data: iris5$Sepal.Length and iris5$Species
##
## setosa
## versicolor 0.24
##
## P value adjustment method: holm
Вывод: нормальность распредления данных при уменьшении выборки на N/2, N/4, N/8, N/16, N/32 не изменялась, изменялась дисперсия от негомогенной к гомогеннной и снова к негомогенной. ТАкже при уменьшении выборок не всегда можно было провести достоверные различия между видами ирисов по длине чашелистика