R 只需更改名称即可获得不同的aov结果

R 只需更改名称即可获得不同的aov结果,r,R,我正在使用以下数据集执行一个预测aov: 我正在读取包含以下代码的文件: Teste22 <- read.table(file.choose(), header = TRUE, dec = ".") 请注意,出现了一些错误,因为我的blocks Rep的Df是1,但我的文件有4个块。 现在,只需将处理块的变量名更改为Bloco,结果就会正确: Bloco <- as.factor(Teste

我正在使用以下数据集执行一个预测aov:

我正在读取包含以下代码的文件:

Teste22 <- read.table(file.choose(),
                       header = TRUE,
                       dec = ".")
请注意,出现了一些错误,因为我的blocks Rep的Df是1,但我的文件有4个块。 现在,只需将处理块的变量名更改为Bloco,结果就会正确:

Bloco <- as.factor(Teste22[,3])
saida<-aov(Teste22[,4]~Bloco+A+B+A*B, data = Teste22)
summary(saida)
为什么会发生这种情况??我真的搞不懂为什么只有名字改变了那么多我的结果aov首先在Teste22中查找公式中传递的变量,并在找到它们时使用它们。如果它们不在数据集中,则在全局环境中查找。因此,在您的示例中,在第一个模型中,Rep变量取自Teste22数据集,而不是您创建的因子变量,因为Teste22中有一个同名变量; 它是一个整数变量。第二个模型Bloco是从 作为因子变量创建的全局环境

所以有几件事可以收拾; 创建因子变量时,最好将其分配回数据集,而不是在工作区中创建一组变量,最好按名称而不是索引引用变量,因为这样可以使代码更清晰,减少使用错误变量的可能性,并在函数调用中使用data=in(如果可用)

以你为例,

# you may wish to use `factor` to explicitely set the reference level
# which may be useful for further analysis
Teste22$Amb.SubP_f <- as.factor(Teste22$Amb.SubP.)
Teste22$Gen.Parc_f <- as.factor(Teste22$Gen.Parc.)
Teste22$Rep_f <- as.factor(Teste22$Rep)

# Note A* B expands to A + B + A:B: -- see ?`formula`
saida <- aov(Variavel1 ~ Rep_f + Amb.SubP_f* Gen.Parc_f, data=Teste22)
summary(saida)

rep是一个函数名,可能会导致问题。您还应该包括ClassRep的输出这是一个问题,因为来自第一个模型的Rep使用的是来自数据的Rep,而不是您创建的因子。。。因此,这两种模式并不相同。。。。因此,将新变量分配给您的数据集Teste22$Rep@user20650,请将这些注释作为答案发布。。。您可能想给出一个最能说明问题的示例practices@user20650你说得对!我刚刚从aov函数中删除了所有data=Teste22并解决了我的问题!以aswer的身份发布,这样我就可以投票了!
Bloco <- as.factor(Teste22[,3])
saida<-aov(Teste22[,4]~Bloco+A+B+A*B, data = Teste22)
summary(saida)
            Df Sum Sq Mean Sq F value   Pr(>F)    
Bloco        3  16.33    5.44   1.508    0.253    
A            2 226.08  113.04  31.304 4.43e-06 ***
B            1   1.50    1.50   0.415    0.529    
A:B          2 243.25  121.62  33.681 2.84e-06 ***
Residuals   15  54.17    3.61 
# you may wish to use `factor` to explicitely set the reference level
# which may be useful for further analysis
Teste22$Amb.SubP_f <- as.factor(Teste22$Amb.SubP.)
Teste22$Gen.Parc_f <- as.factor(Teste22$Gen.Parc.)
Teste22$Rep_f <- as.factor(Teste22$Rep)

# Note A* B expands to A + B + A:B: -- see ?`formula`
saida <- aov(Variavel1 ~ Rep_f + Amb.SubP_f* Gen.Parc_f, data=Teste22)
summary(saida)