n <- c(50,30,40) # tamaños de los grupos
ng <- length(n)  # número de grupos
N <- sum(n)
## matrices del ANOVA
I <- diag(N)     # matriz identidad
hacerJ <- function (d) matrix(1/d, d, d)
J <- hacerJ(N)
## matriz diagonal por bloques
D <- as.matrix(Matrix::bdiag(lapply(n, hacerJ)))
W <- I-D # variabilidad dentro de grupos
B <- D-J # variabilidad entre grupos
# generación de las muestras bajo H0
mu <- runif(1, -15, 15); sigma <- runif(1, 1, 10)
x <- rnorm(N, mu, sigma)
SCE <- t(x) %*% W %*% x
SCF <- t(x) %*% B %*% x
c(SCE, SCF)
g <- factor(rep(1:ng, n))
sal <- aov(x ~ g)
summary(sal)
chi <- replicate(1000, {
    x <- rnorm(N, mu, sigma)
    SCE <- t(x) %*% W %*% x
    SCF <- t(x) %*% B %*% x
    N*log(1+SCF/SCE)}) # estadístico R.V.
## ajuste del estadístico a una chi-cuadrado
c(mean(chi), sd(chi))
ks.test(chi, pchisq, ng-1)