Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие по АОЭИ Третьяков Кулеш.doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
748.54 Кб
Скачать

Рангово-сумарный критерий Уилкоксона-Манна-Уитни

Сравниваются две группы данных (выборки) из генеральных совокупностей X и Y длиной m и n (m  n). Если значение xi меньше yj, то xi образует инверсию с yj. Подсчитывается суммарное число инверсий для всех X и Y – U1 и U2. За оценку числа инверсий U* принимается меньшее из значений U1 и U2. Распределение U-статистики является симметричным с МО mu и дисперсией Du:

mu = (mn)/2, Du = mn(m+n+1)/12.

При m8 и n 8 функция распределения нормированной величины статистики U может быть с достаточной точностью аппроксимирована стандартным нормальным распределением. Доверительный интервал для статистики U при уровне значимости 2 имеет вид:

mu – t1-u  U < mu + t1-u,

где t1- - квантиль стандартного нормального распределения, т.е. значение x, вероятность непревышения которого равна 1-. U-критерий – один из наиболее строгих непараметрических критериев, так как статистика U – очень сложная функция от среднего значения, эксцесса и асимметрии. U-критерий наиболее чувствителен к различию выборок по характеристикам положения (например, моды или среднего арифметического, т.е. оценки математического ожидания), но весьма слабо реагирует на разницу дисперсий.

Однако критерий Уилкоксона-Манна-Уитни требует, чтобы все элементы обоих выборок имели уникальные значения, т.е. в обоих наборах данных не должно быть совпадающих значений. Но в реальности это часто встречающийся случай. Для возможности применения данного делаем все значения уникальными путем изменения равных значений на крайне малую величину. Если есть равные данному значению элементы в обеих выборках (группах данных), то изменение значений, т.е. фактически их ранжирование производится при помощи генератора случайных чисел. В приводимом ниже примере реализован именно такой способ. Разумеется, такой подход вносит небольшой элемент случайности. Можно пойти и другим путем: ставить принадлежащие разным выборкам элементы с равными значениями поочередно.

Проверка однородности двух групп данных по критерию Уилкоксона-Манна-Уитни

v1

v2

Задание точности (критерия различимости значений) и величины, на которую будут различаться исходно равные элементы:

tochnost:=0.00000001 delta:=0.0000001

Определение величины выборок:

Ранжирование выборок:

Выясняем число уникальных значений:

unz1: = t  1

for i  0..(n1-1)

  predzn  v1_sorti if i = 0

  otherwise

   tekzn  v1_sorti

   razn  tekzn – predzn 

   if razn > tochnost

   t  (t + 1)

   predzn  tekzn

 t

unz1=44

unz2: = t  1

for i  0..(n2-1)

  predzn  v2_sorti if i = 0

  otherwise

   tekzn  v2_sorti

   razn  tekzn – predzn 

   if razn > tochnost

   t  (t + 1)

   predzn  tekzn

 t

unz2=15

Создаем новые матрицы - первый столбец - уникальное значение, второй - число повторений, третий - номер выборки:

Matr1unz1-1,2:=0 Matr2unz2-1,2:=0

Matr1:=  k  0

 povtor  1

 for i  1..(n1-1)

  predzn  v1_sort(i-1)

  tekzn  v1_sorti

  razn  tekzn – predzn 

  if razn > tochnost

   k  (k + 1)

   Tablk-1,0  predzn

   Tablk-1,1  povtor

   Tablk-1,2  1

   if i = (n1 – 1)

    Tablk,0  tekzn

    Tablk,1  1

    Tablk,2  1

   povtor  1

 otherwise

   povtor  povtor + 1

   if i = (n1 – 1)

    Tablk,0  tekzn

    Tablk,1  povtor

    Tablk,2  1

Tabl

Matr2:= k  0

 povtor  1

 for i  1..(n2-1)

  predzn  v2_sort(i-1)

  tekzn  v2_sorti

  razn  tekzn – predzn 

  if razn > tochnost

   k  (k + 1)

   Tablk-1,0  predzn

   Tablk-1,1  povtor

   Tablk-1,2  2

   if i = (n2 – 1)

    Tablk,0  tekzn

    Tablk,1  1

    Tablk,2  2

   povtor  1

 otherwise

   povtor  povtor + 1

   if i = (n2 – 1)

    Tablk,0  tekzn

    Tablk,1  povtor

    Tablk,2  2

Tabl

Соединение обеих матриц:

Matr:=stack(Matr1,Matr2)

Сортировка полученной матрицы по возрастанию значений:

M:=csort(Matr,0)

Определение количества рядов в матрице:

nm:=rows(M) nm=59

Определение числа уникальных значений:

unzm:= t  1

for i  0..(nm-1)

  predzn  Mi,0 if i=0

  otherwise

   tekzn  Mi,0

   razn  tekzn – predzn 

   if razn > tochnost

    t  (t+1)

    predzn  tekzn

t

unzm = 47

Поскольку значения в обеих выборках могут повторяться, создаем новую матрицу, в которой записываем число повторов для обеих выборок (оно может быть и нулевым). Создание объединенной матрицы U: первый столбец - уникальное значение, второй - число его повторов в первой выборке, третий - число его повторов во второй выборке.

U unzm-1,2 :=0

U:=  zapsled  “false”

 k  0

 for i  0..(nm-2)

  if zapsled = “false”

   teknvib  Mi,2

   slednvib  Mi+1,2

   if slednvib = teknvib

    Tablk,0  Mi,0

    if teknvib = 1

     Tablk,1  Mi,1

     Tablk,2  0

    if teknvib = 2

     Tablk,1  0

     Tablk,2  Mi,1

    k  k + 1

   if slednvib  teknvib

    tekzn  Mi,0

    sledzn  Mi+1,0

    razn  tekzn – sledzn

    if razn > tochnost

    Tablk,0  Mi,0

    if teknvib = 1

      Tablk,1  Mi,1

      Tablk,2  0

    if teknvib = 2

      Tablk,1  0

      Tablk,2  Mi,1

    k  k + 1

    if razn  tochnost

    Tablk,0  Mi,0

    if teknvib = 1

      Tablk,1  Mi,1

      Tablk,2  Mi+1,1

    if teknvib = 2

      Tablk,1  Mi+1,1

      Tablk,2  Mi,1

    k  k + 1

    zapsled  “true”

  zapsled  “false” otherwise

poslnvib  Mnm-1,2

predposlnvib  Mnm-2,2

if poslnvib = predposlnvib

  Tablk,0  Mnm-1,0

  if poslnvib = 1

   Tablk,1  Mnm-1,1

   Tablk,2  0

  if poslnvib = 2

   Tablk,1  0

   Tablk,2  Mnm-1,1

if poslnvib  predposlnvib

  poslzn  Mnm-1,0

  predposlzn  Mnm-2,0

  razn  poslzn-predposlzn

  if razn > tochnost

   Tablk,0  Mnm-1,0

   if poslnvib = 1

    Tablk,1  Mnm-1,1

    Tablk,2  0

   if poslnvib = 2

    Tablk,1  0

    Tablk,2  Mnm-1,1

Tabl

Проверка числа рядов матрицы (уникальных значений):

nu:=rows(U) nu=47

"Уникализация" повторяющихся значений.

Создание матрицы Unik: первый столбец - уникальное значение, второй - номер выборки.

nobsh:=n1+n2 nobsh=136 Uniknobsh,1:=0

Unik:=k 0

for i  0..(nu-1)

  tekzn  Ui,0

  tekn1  Ui,1

  tekn2  Ui,2

 if (tekn1=1)  (tekn2=0)

   Tablk,0  tekzn

   Tablk,1  1

   k  k+1

  if (tekn1=0)  (tekn2=1)

   Tablk,0  tekzn

   Tablk,1  2

   k  k+1

 for j  0..(tekn1-1) if (tekn1>1)  (tekn2=0)

   povtzn  tekzn + (deltaj)

   Tablk,0  povtzn

   Tablk,1  1

   k  k+1

 for j  0..(tekn2-1) if (tekn1=0)  (tekn2>1)

   povtzn  tekzn + (deltaj)

  Tablk,0  povtzn

  Tablk,1  2

  k  k+1

 if (tekn1>0)  (tekn2>0)

  f12  tekn1 + tekn2

  f1  tekn1

  f2  tekn2

  povtnum  0

  while (f1>0)  (f2>0)

   sluch  rnd(1)

   povtzn  tekzn + (deltapovtnum)

   povtnum  povtnum + 1

   if sluch0.5

    f1  f1-1

    Tablk,0  povtzn

    Tablk,1  1

    k  k+1

   otherwise

    f2  f2-1

    Tablk,0  povtzn

    Tablk,1  2

    k  k+1

  for j  0..(f2-1) if f1=0

   povtzn  tekzn + (deltapovtnum)

   povtnum  povtnum + 1

   Tablk,0  povtzn

   Tablk,1  2

   k  k+1

  for j  0..(f1-1) if f2=0

   povtzn  tekzn + (deltapovtnum)

   povtnum  povtnum + 1

   Tablk,0  povtzn

   Tablk,1  1

   k  k+1

Tabl

Проверка количества уникальных значений:

nUnik:=rows(Unik) nUnik=136

«Раскидывание» значений, принадлежащих к разным выборкам, по разным векторам.

vector1n1-1:=0 vector2n1-2:=0

vector1:= k 0

for i  0..(nUnik-1)

  nvib  Uniki,1

  if nvib=1

   vect1k  Uniki,0

   k  k+1

vect1

vector2:= k 0

for i  0..(nUnik-1)

  nvib  Uniki,1

  if nvib=2

   vect2k  Uniki,0

   k  k+1

vect2

Определение числа инверсий:

u1:=r  0

for i  0..(n1-1)

  tekx  vector1i

  for j  0..(n2-1)

  r  r + 1 if tekx< vector2j

r

u2:=r  0

for i  0..(n2-1)

  teky  vector2i

  for j  0..(n1-1)

  r  r + 1 if teky< vector1j

r

u1=1158 u2=1945 sumu:=u1+u2 sumu=3103 mn:=n1n2 mn=3103

Необходимое условие правильности расчётов: сумма инверсий должна быть равна произведению размеров выборок.

Определение оценки числа инверсий по меньшему значению:

u:=u1 if u1<u2

u2 otherwise

Определение оценок математического ожидания и дисперсии

U-статистики:

mu:=mn/2 Du:=mn(n1+n2+1)/12

Выполнение теста:

задание уровня значимости:

t:=qnorm[(1- ),0,1]

lev_gran:= mu-(tsigma)

prav_gran:=mu+(tsigma)

lev_gran=1241.9 u=1158 prav_gran=1861.1

test_answer:= ”odnorod ne oproverg.” if (lev_gran≤u) ^ (prav_gran>u)

”odnorod oproverg.” otherwise

test_answer=”odnorod oproverg.”

Критерий Уилкоксона-Манна-Уитни является аналогом критерия Стьюдента для проверки близости оценок математических ожиданий двух выборок, закон распределения хотя бы одной из которых отличается от нормального.