ANOVA для выбора функции - PullRequest
0 голосов
/ 31 марта 2019

Я пытаюсь выполнить выбор функции с помощью ANOVA в R. В настоящее время у меня есть большая матрица (с именем expressionMarix ), где хранятся мои профили выражений, и коэффициент (с именем Labels). ) где представлены 4 вида заболеваний. expressionMatrix выглядит так:

           1007_s_at    1053_at     117_at    121_at   1255_g_at
GSM1304852  2.394537 0.10510845 -0.4597124 0.9333566 -0.23991384
GSM1304853  2.275184 0.06160802 -0.5231035 1.1318090  0.10112324
GSM1304854  2.161163 0.34217618 -0.4436059 0.9975700 -0.04087979
GSM1304855  1.964183 0.35939157 -0.6370277 1.0079778 -0.21851374
GSM1304856  2.132253 0.22356958 -0.3511470 0.9720455 -0.29917857

Где столбцы - гены, а строки - образцы.

Есть ли пакет, который позволяет мне выбирать соответствующие столбцы, используя ANOVA? Мой текущий код выглядит так:

modelAnova <- aov(expressionMatrix ~ Labels)
sumAnova <- summary(modelAnova)
pValList <- list()
i = 1
while(i < dim(Mstriat)[1]){
  print(i)
  pValList[i] <- sumAnova[[i]][["Pr(>F)"]][1]
  i <- i+1
}
keepers<-which(cValList<0.05)

Но цикл for действительно занимает много времени. Есть ли более эффективный метод?

1 Ответ

1 голос
/ 01 апреля 2019


, не имея выходов dput(expressionMarix) и dput(Labels), немного сложно дать идеальный ответ, однако я столкнулся с той же проблемой с другими моделями, и это очень помогло функции broom::tidy().Идея состоит в том, чтобы преобразовать модель в data.frame, а затем поднастроить только строки с требуемым p.value, то есть теперь столбец:

library(broom)
# this is going to put in a data.frame the output of the model
inline <- tidy(modelAnova)

# here you filter the p.value <= 0.05
inline[!is.na(inline$p.value <= 0.05),]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...