Критерий Шапиро-Уилка: выборки и статистическая значимость

В процессе написания статьи, посвященной сокращенному варианту SCL-90-R (SCL-9-NR), столкнулся с проверкой распределения на нормальность посредством критерия Шапиро-Уилка. Проверялось это дело на двух выборках - для Киева и Львова (по 200 человек в каждой). Пришлось прибегнуть к некоторым ухищрениям. Вот собственно о них кратенько в этой заметке.
Stacks Image 84131
Stacks Image 84135

Киев

Stacks Image 84133
Stacks Image 84137

Львов

Распределение значений SCL-9-NR в обоих исследованиях визуально напоминает нормальное. Графики квантилей показывают отклонение от нормальности для высоких значений индекса. При этом результаты теста Шапиро-Уилка указывают на то, что распределение статистически значимо отлично от нормального как для исследования в Киеве (W = 0,98; p < 0,01), так и для исследования во Львове (W = 0,97; p < 0,01). Вместе с тем, этот критерий очень чувствителен к размеру выборки – чем больше выборка, тем выше вероятность отклонения нулевой гипотезы.
Чтобы проверить влияние размера выборки на результаты теста в моем случае, я сформировал случайные выборки размером 100, 50 и 25 наблюдений 1000 раз для каждого из двух исследований на основании их собственных массивов. Для каждой выборки был использован критерий Шапиро-Уилка, что позволило определить количество случаев, в которых принимается нулевая гипотеза (n[p > 0,05]), и среднюю вероятность случайной ошибки для выборок различного размера (Xp). На основании этих показателей можно оценить соответствия распределений нормальному:

Размер выборки Киев Львов
n[p > 0,05] Xp n[p > 0,05] Xp
100 467 0.08 349 0.09
50 764 0.25 659 0.23
25 875 0.37 782 0.36

Как видно на выборке в 25 наблюдений нулевая гипотеза подтвердилась в 87,5% случаев для киевского исследования и 78,2% - для львовского. Средняя же вероятность получения распределения отличного от нормального вследствие случайности выросла практически до 40%, что существенно выше требуемых 5%.
С помощью R это делается очень просто. Например:
testShapiro <- c()
for (i in 1:1000) testShapiro[i] <- shapiro.test(sample(distresLvov$scl9nr-9, 100))[2]
testND <- sapply(testShapiro, function(x) x > 0.05)
sum(testND)
sum(unlist(testShapiro)) / 1000

Data science (3)
Europe (2)
Geopolitics (2)
Infographics (1)
R (26)
Russia (2)
SPSS (2)
Ukraine (2)
Акционализм (1)
Анализ данных (27)
Аномия (1)
Выборка (1)
Выступления (3)
Геополитика (12)
Гражданское общество (2)
Демократизация (1)
Европа (4)
Интернет ресурсы (1)
Инфографика (8)
Исследовательские дизайны (1)
Историческая социология (10)
История социологии (5)
Киберспорт (1)
Книги (7)
Массивы (3)
Методология социальных исследований (1)
Методология социологических исследований (2)
Научная жизнь (3)
Новости (6)
Обратная связь (1)
Персоналии (3)
Православные конфессии в Украине (1)
Президентская власть (1)
Психологический дистресс (18)
Психология (5)
Публицистика (2)
Революция (1)
Результаты исследований (28)
Религия (3)
Россия (2)
Согласование концептов (4)
Социальная гетерогенность (1)
Социальная работа (1)
Социологическая теория (6)
Социологические тесты (1)
Социологическое образование (5)
Теория конфликта (2)
Теория социального измерения (8)
Украина (9)
Учебные планы (2)
Философия (1)
Шкалирование (36)
Экономика (1)
Эмпирическая социология (46)

free counters
Яндекс.Метрика