使用 R 编程进行假设检验的 II 类错误
在本文中,我们将看到什么是假设检验中的误差,假设检验中出现的不同类型的误差,以及如何计算它们。假设是我们在数据模型制定过程中假设为真的各种假设的总和。用 R 编程很容易计算假设中的 II 类错误。
什么是假设检验中的误差?
在假设检验中,误差是对特定假设的批准或拒绝的估计。假设检验中主要有两种类型的错误:
- I 型错误(也称为 alpha 错误) :当我们拒绝 Null 假设但 Null 假设是正确的时,会发生 I 型错误。这种情况也称为误报。
- II类错误(也称为beta错误) :当原假设不正确/备择假设正确时,我们未能消除原假设,就会发生第二类错误。这种情况也称为假阴性。
Note:
P(X) is the probability of the event X happening.
Ho = NULL Hypothesis
Ha = Alternative Hypothesis
- 第一类错误的数学定义: P(拒绝 H o的概率 / H o为真的概率)= P(拒绝 H o | H o为真)
- II类错误的数学定义: P(未能去除H o的概率/H o为假的概率)= P(接受H o | H o假)
示例:陪审团/法院
在此示例中,我们正在考虑陪审团/法院对案件的决定。陪审团可以决定的两个决定是定罪者有罪和无罪。因此,假设下陈述的两个假设。对于每一个决定,真相可能是,罪犯是真的有罪,而罪犯实际上是无罪的。因此有两种类型的错误。
- H o = 无罪
- H a = 有罪
在上面的例子中,
- I 型错误将是:监狱中的无辜
- 第二类错误将是:有罪释放
如何计算R 编程中的 II 类错误?
可以使用以下公式计算 II 类误差。但在本文中,我们将使用 R 编程来计算II 类错误。
P(Probability of failing to remove Ho / Probability of Ho being false ) = P(Accept Ho | Ho False)
计算 R 中 II 类错误的代码:
R
# A small function to calculate
# the type II error in R
typeII.test <- function(mu0, TRUEmu, sigma, n,
alpha, iterations = 10000){
pvals <- rep(NA, iterations)
for(i in 1 : iterations){
temporary.sample <- rnorm(n = n, mean = TRUEmu,
sd = sigma)
temporary.mean <- sd(temporary.sample)
temporary.sd <- sd(temporary.sample)
pvals[i] <- 1 - pt((temporary.mean - mu0)/(temporary.sd / sqrt(n)),
df = n - 1)
}
return(mean(pvals >= alpha))
}
R
# Calculating the type II error
# on a dummy Set
# sample size
n = 10
# standard deviation
sigma = 3
# significance level
alpha = 0.03
# hypothetical lower bound
mu0 = 4
# assumed actual mean
TRUEmu = 10
# applying the function
typeII.test(mu0, TRUEmu, sigma, n,
alpha, iterations = 10000)
R
# Calculating the type II error
# on a dummy Set
# sample size
n = 10
# standard deviation
sigma = 5
# significance level
alpha = 0.03
# hypothetical lower bound
mu0 = 4
# assumed actual mean
TRUEmu = 10
# applying the function
typeII.test(mu0, TRUEmu, sigma, n,
alpha, iterations = 10000)
首先,复制上面的函数并在R studio中运行它。然后这样做。
电阻
# Calculating the type II error
# on a dummy Set
# sample size
n = 10
# standard deviation
sigma = 3
# significance level
alpha = 0.03
# hypothetical lower bound
mu0 = 4
# assumed actual mean
TRUEmu = 10
# applying the function
typeII.test(mu0, TRUEmu, sigma, n,
alpha, iterations = 10000)
输出:
[1] 3e-04
在虚拟集上放置不同的值:
电阻
# Calculating the type II error
# on a dummy Set
# sample size
n = 10
# standard deviation
sigma = 5
# significance level
alpha = 0.03
# hypothetical lower bound
mu0 = 4
# assumed actual mean
TRUEmu = 10
# applying the function
typeII.test(mu0, TRUEmu, sigma, n,
alpha, iterations = 10000)
输出:
[1] 0.0599