Медиана не рассчитывается правильно с функцией применения в R - PullRequest
0 голосов
/ 26 июня 2018

У меня есть генетические данные для SNP, которые были разделены на 5 квантилей. Я хочу найти медиану этих квантилей для каждого SNP (т.е. для каждого человека).

Я использовал эту команду для создания столбца для медианных значений:

data$median<-apply(data[,2:181],1, median, na.rm=TRUE)

Тогда я хотел посчитать, сколько случаев и контролей у меня есть для каждого из моих фенотипов, но похоже, что он неправильно вычисляет медиану. Моя команда выглядит следующим образом:

table(data$anyMI, data$median)

Вывод показывает:

        1   1.5     2   2.5     3   3.5     4   4.5     5
  0  2044    62  7470   221 11163   248  8389    74  1659
  1   102     3   357    11   557    21   404     2    85

Я не уверен, почему я получаю половинные значения, когда они должны быть только 1-5, целые числа. Что здесь не так и почему он показывает половинные значения?

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Согласно стандартному определению, медиана

  1. из нечетного числа наблюдений - это среднее значение

    median(1:5)
    #[1] 3
    
  2. четного числа наблюдений - это среднее арифметическое двух средних двух чисел

    median(1:4)
    #[1] 2.5
    

Смотри, например, определение статистической медианы на Wolfram MathWorld .


На более математическом (возможно, интересном) примечании:

Другое определение медианы N наблюдений дается через

enter image description here

, где медиана x определяется как y , которая минимизирует сумму расстояний L2 до всех наблюдений.

Мы можем убедиться, что это действительно дает нам ту же медиану, что и median:

x <- c(1, 1:4)
x[which.min(sapply(x, function(y) sum(x - y)^2))]
#[1] 2

median(x)
#[1] 2

Интересным в альтернативном определении является то, что оно допускает расширение одномерной медианы до геометрической медианы набора точек в пространстве более высокого измерения. Подумайте: что такое медиана трех точек в 3-м евклидовом пространстве?

0 голосов
/ 26 июня 2018

По определению медиана - это значение, например, половина вашего образца выше, а другая половина ниже. Как сказал phiver, если у вас четное число значений, скажем, что верхняя граница вашей первой половины будет x, а нижняя часть второй половины будет y, любое значение между x и y могут быть срединными.

По умолчанию R будет указывать, что median = (x+y)/2 в этом случае.

Если вы хотите получить значение из набора данных, вы можете использовать нечетное число наблюдений (например, удалить одно) или округлить результат.

...