Меня смущает следующее, и я не смог найти ответ в другом месте.
Я пытаюсь изучить R, выполняя некоторую статистику, и, в качестве упражнения, я пытаюсь перепроверить результаты встроенных функций R, также делая их «вручную», как это было в R. Однако , для теста Крускала-Уоллиса я продолжаю получать разные результаты, и я не могу понять, почему.
Например, я смотрю на следующие данные, полученные в упражнении
activity <- c(2, 4, 3, 2, 3, 3, 4, 0, 4, 3, 4, 0, 0, 1, 3, 1, 2, 0, 3, 1, 0, 3, 4, 0, 1, 2, 2, 2, 3, 2)
group <- c(rep("A", 11), rep("B", 10), rep("C", 9))
group <- factor(group)
data.raw <- data.frame(activity, group)
И я хочу проанализировать деятельность по группам. Сначала я запускаю тест Крускала-Уоллиса, используя встроенную функцию R
kruskal.test(activity ~ group, data = data.raw)
Который возвращает .
Чтобы перепроверить, я пытаюсь сделать то же самое «вручную» в R со следующим (без сомнения, беспомощным) кодом
rank <- rank(activity)
data.rank <- data.frame(rank, group)
rank.sum <- aggregate(rank ~ group, data = data.rank, sum)
x <- rank.sum[1,2]^2 / 11 + rank.sum[2,2]^2 / 10 + rank.sum[3,2]^2 / 9
H <- (12 / (length(activity) * (length(activity) + 1))) * x - 3 * (length(activity) + 1)
H
Что должно отражать следующую формулу:
Где - общее количество наблюдений, g - количество групп, n i - количество наблюдений в i- й группе, а R i - сумма рангов i- й группы.
И теперь я получаю , что, в дополнение к моему замешательству, также является ответом на данное упражнение. Я пробовал это для пары различных наборов данных, и я стремлюсь получить немного более высокое значение для H, используя встроенную функцию.
Я пытался найти, чтобы понять, что я делаю неправильно или не понимаю, но безрезультатно. Может ли кто-нибудь помочь мне понять, почему встроенная kruskal.test
функция возвращает значение, отличное от того, которое я получаю, говоря об этом?
источник
Hmisc
пакета R ,spearman2
которая использует средние ранги для связей иF
тест для получения Крускала-Уоллиса. Я думаю, что это точнее, чем некоторые методы.