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)
我需要比较几个独立样本的方差。我没有将数据存储在向量中。我只知道每个样本的均值、标准差和样本数。有谁知道一种方法来测试方差是否与 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)