Dificil de establecer en campo.
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.2.3
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
data = expand.grid(x = seq(6), y = seq(4))
data = sample_frac(data)
data$f1 = gl(4, 6, 24, paste0('V',1:4))
data$f2 = gl(3, 2, 24, paste0('R',1:3))
data$rep = gl(2, 1, 24, paste0('r',1:2))
data$name = paste0(data$f1, data$f2, data$rep)
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.2.3
ggplot(data)+
aes(x,y,label=name, fill=f2)+
geom_tile(color='white')+
geom_label(fill='white')+
labs(title = 'Completamente al azar')

library(dplyr)
set.seed(123)
xy = expand.grid(y = seq(4), x = seq(6))
f2 = gl(3, 8, 24, paste0('R',1:3))
lf1 = paste0('V',1:4)
f1 = c(sample(lf1),sample(lf1),
sample(lf1),sample(lf1),
sample(lf1),sample(lf1))
rep = rep(rep(paste0('r',1:2), each=4), 3)
data = data.frame(xy, f1, f2, rep)
data$name = with(data, paste0(f1, rep))
library(ggplot2)
ggplot(data)+
aes(x,y,label=name, fill=f1)+
geom_tile(color='white')+
geom_text()+
facet_wrap(~f2, scales = 'free')+
theme(axis.text = element_blank())

set.seed(123)
data$biom = rnorm(24, 8, 2)
Análisis descriptivo.
ggplot(data)+
aes(f2, biom)+
geom_boxplot()

ggplot(data)+
aes(f1, biom)+
geom_boxplot()

ggplot(data)+
aes(f2, biom, fill=f1)+
geom_boxplot()

- La mejor depende también de la interacción.
mod1 = aov(biom ~ f2 * f1 + Error(f2:rep), data)
## Warning in aov(biom ~ f2 * f1 + Error(f2:rep), data): Error() model is singular
summary(mod1)
##
## Error: f2:rep
## Df Sum Sq Mean Sq F value Pr(>F)
## f2 2 13.327 6.664 8.078 0.062 .
## Residuals 3 2.475 0.825
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Error: Within
## Df Sum Sq Mean Sq F value Pr(>F)
## f1 3 9.70 3.232 0.641 0.608
## f2:f1 6 13.67 2.278 0.451 0.827
## Residuals 9 45.42 5.046