Каков наиболее эффективный способ выполнить t.test из аккуратных данных в r? - PullRequest
0 голосов
/ 05 сентября 2018

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

Вот некоторые примеры данных, похожих на мой неисследованный формат:

library(tidyverse)

data <- data.frame("subject_id" = 1:10, "age" = 21:30, "weight" = 150:159, "height" = 65:74,
                   "x_c1_avg" = c(1:9, NA), "y_c1_avg" = runif(10),"z_c1_avg" = c(9:1, NA),
                   "x_c2e1_avg" = c(1:9, NA), "y_c2e1_avg" = runif(10), "z_c2e1_avg" = runif(10),
                   "x_c2e2_avg" = runif(10), "y_c2e2_avg" = runif(10), "z_c2e2_avg" = runif(10))

glimpse(data)

Тиббл содержит демографическую информацию, а затем три показателя, собранные в разных условиях, при этом некоторые показатели выполняются двумя экспертами (например, x_c1_avg - это среднее значение для показателя x, собранного в условии 1 (определенное положение ноги), а y_c2e1_avg - это значение среднее значение для меры y, полученное экспертом 1 при условии 2.

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

data2 <- data %>%
  gather(key = "condition", value = "value", -c(subject_id:height)) %>%
  separate(condition, into = c("measure", "condition"), sep = "_", extra = "drop") %>%
  separate(condition, into = c("condition", "examiner"), sep = 2, fill = "right")

Мой второй вопрос: каков наиболее эффективный способ выполнить парное t.test для этих данных или есть способ сделать это, не создавая новые векторы для каждой переменной? Существует 12 условий в Всего, но я буду проводить t-тесты только для шести сравнений. Я бы сравнил меру х на с1 с мерой х на с2 для каждого субъекта или меру у экзаменатора 1 в условии 2 с мерой у экзаменатора 2 в условии 2 и так далее. Мой текущий код:

x_c1 <- data2 %>%
  filter(measure == "x", condition == "c1") %>%
  select(value)
x_c2_e2 <- data2 %>%
  filter(measure == "x", condition == "c2", examiner == "e2") %>%
  select(value)

t.test(x_c1$value, x_c2_e2$value, paired = TRUE)

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

t.test(data$x_c1_avg, data$x_c2e2_avg, paired = TRUE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...