Q-критерий Розенбаума

  • Автор темы Z00
  • Дата начала
Z
#1
Нужно реализовать Q-критерий Розенбаума на Delphi, Должно быть 2 группы испытуемых, 1 группе например читались лекции, а другим нет и программа должна за данным алгоритмом вывести на сколько данная лекция повлияла на группу людей.
В алгоритме разобрался, описать могу легко и быстро если кому-то будет нужно.
Проблема в написании самого алгоритма уже в делфе...
 
Z
#3
Описывайте алгоритм или хоть что-то, а товарищи с переводом в программный код помогут.
Алгоритм.
1. Проверка n1,n2>=11(минимум 11 испытуемых в каждой группе), n1 b n2 должны быть приблизительно равны друг другу. Где n- к-во людей в каждой группе. (Алгоритм создан для сравнения двух групп/выборок).
2.Упорядочить значения по убыванию. И считать выборку 1 ту, в которой значения предположительно выше.
3. Определяем максимальное значения в выборке 2.
4. подсчитать к-во значений в выборке 1, которые выше максимального значения в выборке 2. И получению величину обозначают как S1.
5. Определяем самое низкое в выборке 1.
6.Подсчитать к-во знач. в выборке 2, которые ниже мин. значения в выборке 1. Обозначают как S2.
7. Подчитывают эмпирическое значение Q. Q=S1+S2.
8. Определяют критические значения Q для наших n1 и n2 по таблице. http://ru.wikipedia.org/wiki/Критерий_Розенбаума
Если Qэмп = Q0.05 или выше,Н0 отвергается.
9. При n1,n2>26 сопоставить полученные эмп значения с Qкр1 и Qкр2(в 1 и 2 выборках, тоесть значения p с таблиц). Если Qэмп превышает или по крайней мере равняется Qкр1 или Qкр2, H0 отвергается.

По поводу Н0...
2 гипотезы:
Н0: Уровень признака в выборке 1 не превышает уровня признака в выборке 2.
Н1: Уровень признака в выборке 1 превышает уровня признака в выборке 2.
 

nayke

Well-known member
04.08.2010
310
0
#4
Что именно непонятно при реализации?
Выборка 2 массива, полученные из формы. Либо файл или БД на ваш вкус. работа с ними в интернете озвучена.

по пунктам:
1. оператор if then
2. как у вас написано сортировка массива, однако судя по логике скорее нахождение суммы в массиве
Код:
sum:=0;
for i:=1 to CountPeople do
sum=sum+Group[i];
3.определение максимального элемента в массиве
Код:
max:=Group[1];
for i:=2 to CountPeople do
if max<Group[i] then max:=Group[i];
4.Количество элементов в массиве больше определенного числа
Код:
count:=0;
for i:=1 to CountPeople do
if Chislo<Group[i] then count:=count+1;
5. определение минимума в массиве
Код:
min:=Group[1];
for i:=2 to CountPeople do
if min>Group[i] then min:=Group[i];
6. аналогично 4 только знак сравнения другой
остальное простейшие арифмитические операции + оператор if then.

если конкретизируете что вам непонятно.. может еще что подскажу.