Я сейчас пытаюсь запустить ANOVA на моем фрейме данных, который имеет следующий формат:
ethnicity sampleID batch gender gene1 gene2 gene3 ...
.. до пары тысяч генов, таблица заполнена значениями экспрессии генов.
Ниже приведен код, который я использую, чтобы попытаться запустить анову для каждого гена, чтобы найти различия между этническими группами:
# here, 'merge' is the dataframe as described above
# set ethnicity to categorical
merge$ethnicity <- factor(merge$ethnicity, levels=c("Chinese","Malay","Indian"))
# parametric anova for each gene
baseformula <- " ~ ethnicity"
for (i in 5:ncol(merge))
{
p <- anova(lm(colnames(merge)[i] ~ ethnicity, data=merge)) # variable lengths differ??
}
Когда я пытаюсь запустить этот код, я получаю следующую ошибку:
Ошибка в model.frame.default (формула = имена столбцов (объединить) [i] ~ этническая принадлежность,
: переменная длина отличается (найдено для «этнической принадлежности»)
Я проверил длину моего столбца этнической принадлежности, который совпадает с длиной моего столбца gene1. Я также пытался использовать команду na.omit()
для merge$ethnicity
, но она по-прежнему выдает ту же ошибку.
У кого-нибудь есть предложения по поводу проблемы?
Спасибо!
РЕДАКТИРОВАТЬ: Вот первые пять строк для моего кадра данных:
Вот первые пять строк и первые пять столбцов для моего кадра данных:
ethnicity sample.id Batch Gender X7896759
1 1 H60903 B6 1 6.19649
2 1 H61603 B2 1 6.74464
3 1 H61608 B7 2 6.20268
4 1 H62204 B4 1 6.71395
5 1 H62901 B7 2 6.59963
Используя код:
for (i in 5:ncol(merge))
{
print(colnames(merge)[i])
print(summary(aov(merge[,i] ~ merge$ethnicity)))
}
, кажется, дает мне следующую ошибку:
Ошибка в уровнях (x) [x]: только 0 могут быть смешаны с отрицательными индексами
Дополнительно: Предупреждающие сообщения: 1: В model.response (mf, "numeric"):
использование type = "numeric" с ответом фактора будет проигнорировано 2: In
Ops.factor (y, z $ residuals): ‘-’ не имеет значения для факторов