R:prop.test 根据传递给它的矩阵或向量返回不同的值

Posted

技术标签:

【中文标题】R:prop.test 根据传递给它的矩阵或向量返回不同的值【英文标题】:R: prop.test returns different values based on whether matrix or vectors are passed to it 【发布时间】:2016-12-14 13:01:25 【问题描述】:

为什么 rprop.test 函数 (documentation here) 会根据我传递的是 matrix 还是向量返回不同的结果?

我在这里传递向量:

> prop.test(x = c(135, 47), n = c(1781, 1443))

    2-sample test for equality of proportions with
    continuity correction

data:  c(135, 47) out of c(1781, 1443)
X-squared = 27.161, df = 1, p-value = 1.872e-07
alternative hypothesis: two.sided
95 percent confidence interval:
 0.02727260 0.05918556
sample estimates:
    prop 1     prop 2 
0.07580011 0.03257103 

在这里我创建了一个matrix 并将其传入:

> table <- matrix(c(135, 47, 1781, 1443), ncol=2)
> prop.test(table)

    2-sample test for equality of proportions with
    continuity correction

data:  table
X-squared = 24.333, df = 1, p-value = 8.105e-07
alternative hypothesis: two.sided
95 percent confidence interval:
 0.02382527 0.05400606
sample estimates:
    prop 1     prop 2 
0.07045929 0.03154362 

为什么我会得到不同的结果?我希望两种方案都返回相同的结果。

【问题讨论】:

【参考方案1】:

xn 作为单独的向量输入时,它们分别被视为成功次数和试验总数。但是当您输入一个矩阵时,第一列被视为成功次数,第二列被视为失败次数。来自prop.test的帮助:

x    a vector of counts of successes, a one-dimensional table with two
     entries, or a two-dimensional table (or matrix) with 2 columns, giving
     the counts of successes and failures, respectively.

因此,要使用矩阵获得相同的结果,您需要将矩阵的第二列转换为失败次数(假设在您的示例中,x 是成功次数,n 是次数试验)。

x = c(135, 47)
n = c(1781, 1443)

prop.test(x, n)  # x = successes; n = total trials
  2-sample test for equality of proportions with continuity correction

data:  x out of n
X-squared = 27.161, df = 1, p-value = 1.872e-07
alternative hypothesis: two.sided
95 percent confidence interval:
 0.02727260 0.05918556
sample estimates:
    prop 1     prop 2 
0.07580011 0.03257103
prop.test(cbind(x, n - x)) # x = successes; convert n to number of failures
  2-sample test for equality of proportions with continuity correction

data:  cbind(x, n - x)
X-squared = 27.161, df = 1, p-value = 1.872e-07
alternative hypothesis: two.sided
95 percent confidence interval:
 0.02727260 0.05918556
sample estimates:
    prop 1     prop 2 
0.07580011 0.03257103

【讨论】:

感谢您对此的澄清。我的大脑错过了“失败次数”部分而不是“试验次数”。我期望输入是试验总数而不是(1 - 成功)。

以上是关于R:prop.test 根据传递给它的矩阵或向量返回不同的值的主要内容,如果未能解决你的问题,请参考以下文章

如何根据传递给它的数据重新绘制Google图表?

R:是不是可以使用 paste0 函数(或一些类似的函数)将存储在对象中的数据传递给新对象?

将数据传递给根 Vue 类组件

javascript 将数据传递给vue根实例

根据传递给存储过程的参数在两个游标之间切换

Chisq.test/prop.test 对不同长度的向量