<- 20230428 seed
Rで統計的仮説検定:バートレット検定
Rでデータサイエンス
バートレット検定
- 帰無仮説:正規分布に従う複数群(3群以上)の分散は等しい。
サンプル
# 3群の標準偏差が同一
set.seed(seed = seed)
<- rnorm(n = 20, mean = 0, sd = 5)
x <- rnorm(n = 40, mean = 10, sd = 5)
y <- rnorm(n = 60, mean = 20, sd = 5)
z bartlett.test(x = list(x, y, z))
# 帰無仮説は棄却されない。
Bartlett test of homogeneity of variances
data: list(x, y, z)
Bartlett's K-squared = 2.4174, df = 2, p-value = 0.2986
# 3群の標準偏差が異なる
set.seed(seed = seed)
<- rnorm(n = 20, mean = 0, sd = 5)
x <- rnorm(n = 40, mean = 10, sd = 5)
y <- rnorm(n = 60, mean = 20, sd = 10)
z bartlett.test(list(x, y, z))
# 帰無仮説は棄却される。
Bartlett test of homogeneity of variances
data: list(x, y, z)
Bartlett's K-squared = 34.791, df = 2, p-value = 0.00000002788
# 関数コード
methods("bartlett.test")
[1] bartlett.test.default* bartlett.test.formula*
see '?methods' for accessing help and source code
getS3method(f = "bartlett.test", class = "default")
function (x, g, ...)
{
LM <- FALSE
if (is.list(x)) {
if (length(x) < 2L)
stop("'x' must be a list with at least 2 elements")
DNAME <- deparse1(substitute(x))
if (all(sapply(x, function(obj) inherits(obj, "lm"))))
LM <- TRUE
else x <- lapply(x, function(x) x <- x[is.finite(x)])
k <- length(x)
}
else {
if (length(x) != length(g))
stop("'x' and 'g' must have the same length")
DNAME <- paste(deparse1(substitute(x)), "and", deparse1(substitute(g)))
OK <- complete.cases(x, g)
x <- x[OK]
g <- factor(g[OK])
k <- nlevels(g)
if (k < 2)
stop("all observations are in the same group")
x <- split(x, g)
}
if (LM) {
n <- sapply(x, function(obj) obj$df.resid)
v <- sapply(x, function(obj) sum(obj$residuals^2))/n
}
else {
n <- lengths(x) - 1L
if (any(n <= 0))
stop("there must be at least 2 observations in each group")
v <- sapply(x, var)
}
n.total <- sum(n)
v.total <- sum(n * v)/n.total
STATISTIC <- ((n.total * log(v.total) - sum(n * log(v)))/(1 +
(sum(1/n) - 1/n.total)/(3 * (k - 1))))
PARAMETER <- k - 1
PVAL <- pchisq(STATISTIC, PARAMETER, lower.tail = FALSE)
names(STATISTIC) <- "Bartlett's K-squared"
names(PARAMETER) <- "df"
RVAL <- list(statistic = STATISTIC, parameter = PARAMETER,
p.value = PVAL, data.name = DNAME, method = "Bartlett test of homogeneity of variances")
class(RVAL) <- "htest"
return(RVAL)
}
<bytecode: 0x000001d4899a7d88>
<environment: namespace:stats>
参考引用資料
最終更新
Sys.time()
[1] "2024-04-03 04:33:31 JST"
R、Quarto、Package
R.Version()$version.string
[1] "R version 4.3.3 (2024-02-29 ucrt)"
::quarto_version() quarto
[1] '1.4.542'
packageVersion(pkg = "tidyverse")
[1] '2.0.0'