R比较没有单独值的方差

R compare variances without separate values

我需要比较几个独立样本的方差。我没有将数据存储在向量中。我只知道每个样本的均值、标准差和样本数。有谁知道一种方法来测试方差是否与 R 中的这三个统计量相等?

这是 Bartlett test 的一个实现,它不需要样本,只需要它们的大小和标准误差或方差。
参数是

  • n 样本量向量;
  • S 标准误差或方差向量;
  • se 一个逻辑值,如果 TRUE 参数 S 是标准误差,如果 FALSE 它们是方差。

下面使用数据集 iris.

进行了测试
Bartlett_test <- function(n, S, se = TRUE){
  dname <- deparse(substitute(S))
  N <- sum(n)
  k <- length(n)
  S2 <- if(se) S^2 else S
  S2p <- sum((n - 1)* S2)/(N - k)
  numer <- (N - k)*log(S2p) - sum((n - 1)*log(S2))
  denom <- 1 + (sum(1/(n - 1)) - 1/(N - k))/(3*(k - 1))
  statistic <- c(X2 = numer/denom)
  parameter <- k - 1
  p.value <- pchisq(statistic, df = parameter, lower.tail = FALSE)
  ht <- list(
    statistic = statistic,
    data.name = dname,
    parameter = parameter,
    p.value = p.value,
    method = "Bartlett test of homogeneity of variances",
    alternative = "there are at least two unequal variances"
  )
  class(ht) <- "htest"
  ht
}

n <- with(iris, tapply(Sepal.Length, Species, FUN = length))
s <- with(iris, tapply(Sepal.Length, Species, FUN = sd))
s2 <- with(iris, tapply(Sepal.Length, Species, FUN = var))
Bartlett_test(n, s)
Bartlett_test(n, s2, se = FALSE)