Как найти среднее и стандартное отклонение одной переменной для квантильных групп другой переменной - PullRequest
0 голосов
/ 18 декабря 2018

Я пытался найти ответ по другим вопросам, но из-за того, что другие вопросы были очень специфичными, или из-за запутанной формулировки, я не смог найти точную информацию, применимую к моей ситуации.Вот:

У меня есть, скажем, две переменные и 100 наблюдений по каждой:

V1 <- rnorm(100, 0, 1) 
V2 <- rpois(100, 4) 
data <- cbind(V1, V2)

Я хочу сгруппировать участников по тому, в какой квантиль они попадают по одной переменной, скажемV1, а затем вычислите среднее и стандартное отклонение V2 для каждой группы квантилей.

Ключевое примечание: я хочу создать группы на основе того, сколько стандартных отклонений они имеют от среднего значения V1.Таким образом, мои квантильные группы должны быть примерно: нижние 2%, 2-й р-тайл до 16-го, с 16-го по 50-й, с 50-го по 84-й, с 84-го по 98-й и верхние 2%.

1 Ответ

0 голосов
/ 18 декабря 2018

Вместо вычисления квантилей вы можете просто масштабировать данные в единицах и использовать целые числа в качестве точек отсечения для категорий.

Мы добавляем масштабированный столбец:

data <- data.frame(data, V3 = scale(V1))

Затем разбиваем данные на категории с точками разреза от -3 до 3:

data$cats <- cut(data$V3, -3:3, labels = letters[1:6])

Наконец, мы агрегируем, чтобы получитьсреднее и стандартное отклонение V2 для каждой группы.

aggregate(V2 ~ cats, function(x) c(mean = mean(x), st.dev = sd(x)), data = data)

#  cats  V2.mean V2.st.dev
#1    a 4.666667  2.081666
#2    b 4.352941  2.343640
#3    c 4.030303  1.828333
#4    d 3.838710  1.714580
#5    e 4.000000  3.082207
#6    f 5.000000  2.645751
...