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