R 中的 2 比例假设检验
2 proportions hypothesis testing in R
我正在尝试做一个假设检验,看看一个比例是否与另一个比例有显着差异。 R 中是否有针对这种特定情况的函数?我应该如何获得 z-score、Zc、p hat 等?
非常感谢
如果对相关数据了解不多,很难准确地说出您想应用哪个测试。我发现“rstatix”在学习如何使用 R 进行许多常见统计测试方面变得非常流行。这是文档中的示例,其中描述了所有功能。虽然基本 R 中的所有内容都可用,但对于不熟悉它们的人来说,测试诊断可能有点时髦。
https://cran.r-project.org/web/packages/rstatix/rstatix.pdf
# Exact binomial test
# Data: 160 mice with cancer including 95 male and 65 female
# Q1: Does cancer affect more males than females?
binom_test(x = 95, n = 160)
tulip <- c(red = 81, yellow = 50, white = 27)
# Q1: Are the colors equally common?
chisq_test(tulip)
pairwise_chisq_gof_test(tulip)
如果您提供更多关于这些数据的信息,以及您感兴趣的测试,这将有助于我们给出更有针对性的建议。否则请查看 Rstatix!
据我所知,r 不会为您提供 2 比例 z 检验的 z 分数,它始终使用 X2 检验统计量。但是,这会为您提供相同的 p 值。
您可以执行常规卡方检验,也可以使用函数 prop.test。为此,您只需创建数据的频率 table,然后将其用作您的“x”。
这是一个例子:
col1 <- c("m", "f", "f", "f", "m", "m", "m", "f")
col2 <- c("p", "f", "p", "f", "f", "f", "p", "f")
array <- cbind(col1, col2)
freqtable <- table(array[,1], array[,2], dnn =c("Gender","Pass/Fail"))
test <- prop.test(freqtable)
print(test)
这是输出:
2-sample test for equality of proportions with continuity correction
data: freqtable
X-squared = 0, df = 1, p-value = 1
alternative hypothesis: two.sided
95 percent confidence interval:
-0.6481972 1.0000000
sample estimates:
prop 1 prop 2
0.75 0.50
这是一个函数,将服务于双尾假设的两个比例 z 检验
twopropztest <- function(p1,n1,p2,n2)
{
p <- (p1*n1 + p2*n2) / (n1+n2)
print(paste0("p :",p))
z <- (p1-p2) / sqrt((p*(1-p))*(1/n1+1/n2))
print(paste0("z score: ",z))
# p-value for two-tailed
print(paste0("p-value(two-tailed): ",(1-pnorm(z))*2))
}
如果您使用 prop.test
,您将需要更改 correct = FALSE
并对 X 平方分数求平方以获得 z 分数。就像maiebee说的,p值是一样的。 prop.test
的z分数和p.value我亲自验证过
我正在尝试做一个假设检验,看看一个比例是否与另一个比例有显着差异。 R 中是否有针对这种特定情况的函数?我应该如何获得 z-score、Zc、p hat 等?
非常感谢
如果对相关数据了解不多,很难准确地说出您想应用哪个测试。我发现“rstatix”在学习如何使用 R 进行许多常见统计测试方面变得非常流行。这是文档中的示例,其中描述了所有功能。虽然基本 R 中的所有内容都可用,但对于不熟悉它们的人来说,测试诊断可能有点时髦。
https://cran.r-project.org/web/packages/rstatix/rstatix.pdf
# Exact binomial test
# Data: 160 mice with cancer including 95 male and 65 female
# Q1: Does cancer affect more males than females?
binom_test(x = 95, n = 160)
tulip <- c(red = 81, yellow = 50, white = 27)
# Q1: Are the colors equally common?
chisq_test(tulip)
pairwise_chisq_gof_test(tulip)
如果您提供更多关于这些数据的信息,以及您感兴趣的测试,这将有助于我们给出更有针对性的建议。否则请查看 Rstatix!
据我所知,r 不会为您提供 2 比例 z 检验的 z 分数,它始终使用 X2 检验统计量。但是,这会为您提供相同的 p 值。
您可以执行常规卡方检验,也可以使用函数 prop.test。为此,您只需创建数据的频率 table,然后将其用作您的“x”。
这是一个例子:
col1 <- c("m", "f", "f", "f", "m", "m", "m", "f")
col2 <- c("p", "f", "p", "f", "f", "f", "p", "f")
array <- cbind(col1, col2)
freqtable <- table(array[,1], array[,2], dnn =c("Gender","Pass/Fail"))
test <- prop.test(freqtable)
print(test)
这是输出:
2-sample test for equality of proportions with continuity correction
data: freqtable
X-squared = 0, df = 1, p-value = 1
alternative hypothesis: two.sided
95 percent confidence interval:
-0.6481972 1.0000000
sample estimates:
prop 1 prop 2
0.75 0.50
这是一个函数,将服务于双尾假设的两个比例 z 检验
twopropztest <- function(p1,n1,p2,n2)
{
p <- (p1*n1 + p2*n2) / (n1+n2)
print(paste0("p :",p))
z <- (p1-p2) / sqrt((p*(1-p))*(1/n1+1/n2))
print(paste0("z score: ",z))
# p-value for two-tailed
print(paste0("p-value(two-tailed): ",(1-pnorm(z))*2))
}
如果您使用 prop.test
,您将需要更改 correct = FALSE
并对 X 平方分数求平方以获得 z 分数。就像maiebee说的,p值是一样的。 prop.test