Головна |
v1
v2
Завдання точності (критерію розрізнення значень) і величини, на яку будуть відрізнятися від початку рівні елементи:
tochnost: = 0.00000001 delta: = 0.0000001
Визначення величини вибірок:
Ранжування вибірок:
З'ясовуємо число унікальних значень:
unz1: = et 1
efor i I 0 .. (n1-1)
e ? predzn v1_sorti if i = 0
e ? otherwise
e ? ? tekzn v1_sorti
e ? ? razn ?tekzn - predzn ?
e ? ? if razn> tochnost
e ? ? ?t (t + 1)
e ? ? ?predzn tekzn
e ?t
unz1 = 44
unz2: = et 1
efor i I 0 .. (n2-1)
e ? predzn v2_sorti if i = 0
e ? otherwise
e ? ? tekzn v2_sorti
e ? ? razn ?tekzn - predzn ?
e ? ? if razn> tochnost
e ? ? ?t (t + 1)
e ? ? ?predzn tekzn
e ?t
unz2 = 15
Створюємо нові матриці - перший стовпець - унікальне значення, другий - число повторень, третій - номер вибірки:
Matr1unz1-1,2: = 0 Matr2unz2-1,2: = 0
Matr1: = ? k 0
? povtor 1
? for i 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 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 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 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 I 0 .. (nu-1)
? ? tekzn Ui, 0
? ? tekn1 Ui, 1
? ? tekn2 Ui, 2
? ?if (tekn1 = 1) U (tekn2 = 0)
? ? ? Tablk, 0 tekzn
? ? ? Tablk, 1 1
? ? ? k k + 1
? ? if (tekn1 = 0) U (tekn2 = 1)
? ? ? Tablk, 0 tekzn
? ? ? Tablk, 1 2
? ? ? k k + 1
? ?for j I 0 .. (tekn1-1) if (tekn1> 1) U (tekn2 = 0)
? ? ? povtzn tekzn + (delta ? j)
? ? ? Tablk, 0 povtzn
? ? ? Tablk, 1 1
? ? ? k k + 1
? ?for j I 0 .. (tekn2-1) if (tekn1 = 0) U (tekn2> 1)
? ? ? povtzn tekzn + (delta ? j)
? ? Tablk, 0 povtzn
? ? Tablk, 1 2
? ? k k + 1
? if (tekn1> 0) U (tekn2> 0)
? ? f12 tekn1 + tekn2
? ? f1 tekn1
? ? f2 tekn2
? ? povtnum 0
? ? while (f1> 0) U (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 I 0 .. (f2-1) if f1 = 0
? ? ? povtzn tekzn + (delta ? povtnum)
? ? ? povtnum povtnum + 1
? ? ? Tablk, 0 povtzn
? ? ? Tablk, 1 2
? ? ? k k + 1
? ? for j I 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 I 0 .. (nUnik-1)
? ? nvib Uniki, 1
? ? if nvib = 1
? ? ? vect1k Uniki, 0
? ? ? k k + 1
?vect1
vector2: = ? k 0
?for i I 0 .. (nUnik-1)
? ? nvib Uniki, 1
? ? if nvib = 2
? ? ? vect2k Uniki, 0
? ? ? k k + 1
?vect2
Визначення числа інверсій:
u1: = ?r 0
?for i I 0 .. (n1-1)
? ? tekx vector1i
? ? for j I 0 .. (n2-1)
? ? r r + 1 if tekx
?r
u2: = ?r 0
?for i I 0 .. (n2-1)
? ? teky vector2i
? ? for j I 0 .. (n1-1)
? ? r r + 1 if teky
?r
u1 = 1158 u2 = 1945 sumu: = u1 + u2 sumu = 3103 mn: = n1 ? n2 mn = 3103
Необхідна умова правильності розрахунків: сума інверсій повинна бути дорівнює добутку розмірів вибірок.
Визначення оцінки числа інверсій за меншим значенням:
u: = ?u1 if u1 ?u2 otherwise Визначення оцінок математичного очікування та дисперсії U-статистики: mu: = mn / 2 Du: = mn ? (n1 + n2 + 1) / 12 Виконання тесту: завдання рівня значущості: t: = qnorm [(1-a), 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." Критерій Уилкоксона-Манна-Уїтні є аналогом критерію Стьюдента для перевірки близькості оцінок математичних очікувань двох вибірок, закон розподілу хоча б однієї з яких відрізняється від нормального. Параметри геосистем як випадкові величини | Закони розподілу випадкових величин | Перевірка вибірки на відповідність нормальному розподілу за допомогою експрес-методу | Побудова гістограми частотного розподілу | критерії згоди | критерій Колмогорова | Побудова суміщеної гістограми розподілів двох вибірок | критерій Стьюдента | критерієм Стьюдента | критерій Фішера |