如何获得R中的ANOVA的F统计值?

时间:2019-07-03 05:02:55

标签: r statistics anova

我目前正在运行一些算法来解决多目标线性数学模型(运营研究)。我使用了三种算法:约束方法(C-M),非排序遗传算法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

我已经使用aov()在R中运行ANOVA。我的代码如下:

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 个答案:

答案 0 :(得分:7)

仔细查看aov函数的文档。它指出仅当模型中的剩余自由度非零时才显示F和p值

在您的情况下,您有18个数据点,预测变量使用了17(7 + 5 + 5)个自由度,并且模型本身需要1个自由度,这使您达到18个。这使您剩下0个残差自由度,因此不显示F值。解决方案是收集更多数据或简化模型

答案 1 :(得分:0)

您的数据是否有错误?指出了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