#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)
Здесь вы можете найти еще больше деталей.
Надеюсь, это поможет.