Как запустить одностороннюю ANOVA в R

#r #statistics #anova

#r #Статистика #анова

Вопрос:

У меня есть набор данных, который выглядит следующим образом:

 > print(mydata)
                col1                 col2                col3
1               0.819               0.851               0.874
2               0.972               0.703               0.821
3               0.891               0.790               0.951
4               0.839               0.799               0.819
 

Я хотел бы знать , есть ли существенные различия между этими тремя группами col1 , col2 и col3 . Если уж на то пошло, я предполагаю, что лучший способ — это запустить anova тест.

Пожалуйста, найдите ниже скрипт, который я использовал для создания набора данных, для запуска теста и ошибки, отображаемой R:

 
> mydata <- data.frame(col1, col2, col3)
> accuracymetrics <- as.vector(mydata)
> anova(accuracymetrics)
 

Ошибка в UseMethod(«anova»): нет применимого метода для «anova»
применяется к объекту класса «data.frame»

Это первый раз, когда я провожу такой анализ в R, так что потерпите, если этот вопрос не интересен форуму. Любой вклад в решение этой ошибки приветствуется!

Комментарии:

1. Посмотрите на страницу справки для anova функции: «объект объект, содержащий результаты, возвращаемые функцией подгонки модели (например, lm или glm)». Он предназначен для вызова модели, а не фрейма данных. Это отражено в вашем сообщении об ошибке.

2. Что вы имеете в виду с significant differences . Обычно вы выполняете t-тест, чтобы увидеть, совпадают ли средние значения выборок (в предположении, что они получены из нормального распределения) или тест Колмогорова-Смирнова, чтобы увидеть, получены ли они из одного и того же распределения. Обычно Anova основана на регрессионной модели.

3. @LyzandeR Здесь мне нужно сравнить более двух групп, поэтому, согласно ncbi.nlm.nih.gov/pmc/articles/PMC3916511 Мне нужно использовать ANOVA.

4. Итак, это t-тест

Ответ №1:

если я вас правильно понял, три группы, о которых вы говорите, — это три столбца в ваших данных. Если это так, вам нужно сделать две вещи:

Во-первых, измените формат ваших данных из широкого в длинный, чтобы он выглядел следующим образом

 group | value
------------
grp1  | 0.819
grp1  | 0.972
 

Это можно легко сделать с tidyr помощью пакета

 library(tidyr)
longdata <- gather(mydata, group, value)
 

Во-вторых: вы должны использовать aov вместо anova :

 res.aov <- aov(value ~ group, data = longdata)
summary(res.aov)
 

Здесь вы можете найти еще больше деталей.
Надеюсь, это поможет.