Почему STATS_CROSSTAB CHISQ_SIG не возвращает правильное значение p в Oracle SQL? - PullRequest
0 голосов
/ 29 марта 2019

У меня есть следующая таблицаслучайное число, сгенерированное для каждого прогона, я не могу повторять каждую строку «Count» раз.

Ниже приведен код, который я использовал для создания этой таблицы.

select flag,random_group, count(random_group) as freq
from
     (select case when rand_num >= 0 and rand_num<=0.053 then 1
                  when rand_num > 0.053 and rand_num <= 0.097 then 2
                  when rand_num > 0.097 and rand_num <= 0.142 then 3
                  when rand_num > 0.142 and rand_num <= 0.189 then 4
                  when rand_num > 0.189 and rand_num <= 0.234 then 5 end random_group, flag
       from
            (SELECT dbms_random.value(0,1) AS rand_num, 
                    rownum as at_row_num, 'CTR' as flag
             FROM abc 
             WHERE rownum <= 1000)
 union all
       select case when rand_num >= 0 and rand_num<=0.053 then 1
                   when rand_num > 0.053 and rand_num <= 0.097 then 2
                   when rand_num > 0.097 and rand_num <= 0.142 then 3
                   when rand_num > 0.142 and rand_num <= 0.189 then 4
                   when rand_num > 0.189 and rand_num <= 0.234 then 5 end random_group, flag
        from
            (SELECT dbms_random.value(0,1) AS rand_num, 
                    rownum as at_row_num, 'TRT' as flag
             FROM def 
             WHERE rownum <= 1000)
      )
group by flag, random_group
order by flag,random_group;

Как это исправить, чтобы получить правильное значение p?

1 Ответ

1 голос
/ 29 марта 2019

stats_crosstab() вычисляет значения на основе подробных строк, а не итоговых строк.

Другими словами, где у вас есть:

FLAG    RANDOM_GROUP    count
CTR          1            53

Функция ожидает 53 строки с комбинацией CTR / 1, а не одна строка с числом 53.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...