Как я могу получить значения F статистики для ANOVA в R? - PullRequest
1 голос
/ 03 июля 2019

В настоящее время я использую несколько алгоритмов для решения многоцелевой линейной математической модели (Operation Research).Я использовал три алгоритма: Метод ограничения (CM), Генетический алгоритм без сортировки II (NSGA-II) и Эволюционный алгоритм 2 Парентса силы (SPEA2).Я установил показатель производительности по номеру решения в границе Парето (No_solutions) и собрал данные из шести экземпляров (I1, .., I6).

Мои данные приведены в следующей таблице:

   Instance Algorithm No_solutions

 1 I1       C-M                 48
 2 I2       C-M                 46
 3 I3       C-M                 51
 4 I4       C-M                 50
 5 I5       C-M                 51
 6 I6       C-M                 49
 7 I1       NSGA-II            300
 8 I2       NSGA-II            300
 9 I3       NSGA-II            300
10 I4       NSGA-II            300
11 I5       NSGA-II            300
12 I6       NSGA-II            300
13 I1       SPEA2              150
14 I2       SPEA3              150
15 I3       SPEA4              150
16 I4       SPEA5              150
17 I5       SPEA6              150
18 I6       SPEA7              150

Я запустил ANOVA в R, используя aov().Мой код следующий:

performance_1 <- read_excel("C:/Users/Alonso/Desktop/metaheuristic_comparation/performance.xlsx")
View(performance_1)
attach(performance_1)
names(performance_1)
str(performance_1)

Factor_algorithm <- factor(Algorithm)
Factor_instance <- factor(Instance)
Respuesta <- performance_1$No_solutions

Modelo <-lm(Respuesta ~ (Factor_algorithm+Factor_instance)^2)
ANOVA <-aov(Modelo)
summary(ANOVA)

Вывод:

 Modelo <-lm(Respuesta ~ (Factor_algorithm+Factor_instance)^2)
 ANOVA <-aov(Modelo)
 summary(ANOVA)
                                 Df Sum Sq Mean Sq
Factor_algorithm                  7 191169   27310
Factor_instance                   5      9       2
Factor_algorithm:Factor_instance  5      9       2

Я прочитал документацию по методу aov (), и я почти уверен, что F-статистика должнабыть показано.Есть идеи?Я почти уверен, что смогу получить больше информации, используя этот метод

Ответы [ 2 ]

7 голосов
/ 03 июля 2019

. Внимательно посмотрите документацию для функции aov. В нем говорится, что значения F и p отображаются только в том случае, если в вашей модели есть ненулевые остаточные степени свободы

В вашем случае у вас есть 18 точек данных, ваши предикторы используют до 17 (7 + 5 + 5) степеней свободы, и 1 требуется для самой модели, что приводит вас к 18. Это оставляет вам 0 остаточных степени свободы и, следовательно, значение F не отображается. Решение состоит в том, чтобы собрать больше данных или упростить вашу модель

0 голосов
/ 03 июля 2019

Есть ли ошибка в ваших данных?Указано 8 алгоритмов, по сравнению с 3 в тексте вашего вопроса.Если вы измените все SPEA# на SPEA2 и отбросите взаимодействие, вы можете получить F-значения, но это все еще не бессмысленная модель, учитывающая данные и различия внутри / между группами.Algorithm тривиально значимо, а Instance тривиально нет.

pp <- read.table(text="
   Instance Algorithm No_solutions
 1 I1       C-M                 48
 2 I2       C-M                 46
 3 I3       C-M                 51
 4 I4       C-M                 50
 5 I5       C-M                 51
 6 I6       C-M                 49
 7 I1       NSGA-II            300
 8 I2       NSGA-II            300
 9 I3       NSGA-II            300
10 I4       NSGA-II            300
11 I5       NSGA-II            300
12 I6       NSGA-II            300
13 I1       SPEA2              150
14 I2       SPEA2              150
15 I3       SPEA2              150
16 I4       SPEA2              150
17 I5       SPEA2              150
18 I6       SPEA2              150")

anova(aov(No_solutions ~ Instance+Algorithm, data=pp))
# Analysis of Variance Table
# 
# Response: No_solutions
#           Df Sum Sq Mean Sq F value Pr(>F)    
# Instance   5      6       1       1 0.4651    
# Algorithm  2 191169   95585   76129 <2e-16 ***
# Residuals 10     13       1                   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...