首页 > 解决方案 > Zelen 精确测试 - 尝试在函数 zelen.test() 中使用 ak 2x2

问题描述

我正在尝试使用zelen.testNSM3 包上的功能。我很难将数据读入函数。

您可以使用重新创建我的数据

data <- c(4, 2, 3, 3, 8, 3, 4, 7, 0, 7, 1, 1, 12, 13,
            74, 74, 77, 85, 31, 37, 11, 7, 18, 18, 96, 97, 48, 40)
events <- matrix(data, ncol = 2)

CRAN 上的文档指出,k 2 x 2 矩阵的数组zelen.test(z, example = F, r = 3)在哪里,示例设置为,因为它为我无法访问的示例返回 p 值,而 r 是用户希望在 p- 中返回的小数位数价值。zFALSE

我试过了:

zelen.test(events, r = 4)

我认为它可能需要研究编号和试验数据,所以我尝试了这个:

studies <- c(1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7)
data <- c(4, 2, 3, 3, 8, 3, 4, 7, 0, 7, 1, 1, 12, 13,
            74, 74, 77, 85, 31, 37, 11, 7, 18, 18, 96, 97, 48, 40)
events <- matrix(cbind(studies, events), ncol = 3)
zelen.test(events, r = 4)

但它继续返回并错误说明

对于我上面尝试的两种情况,“z[1, 1, ] 中的错误:维数不正确”。

任何帮助将不胜感激!

标签: r

解决方案


如果我们通过zelen.test在控制台上输入来检查源代码,如果是example = TRUE,它正在构造一个3D数组

...
   if (example) 
      z <- array(c(2, 1, 2, 5, 1, 5, 4, 1), dim = c(2, 2, 2))

...

输入z dim也在文档中指定?zelen.test

z - 作为 k 2x2 矩阵数组的数据。仅限小数据集!

所以,我们可能需要构建一个array维度为 3 的

library(NSM3)
z1 <- array(c(4, 2, 3, 3, 8, 3, 4, 7), c(2, 2, 2))
zelen.test(z1, r = 4)

# Zelen's test: 
# P = 1

或长度为 3 的第三维

z1 <- array( c(4, 2, 3, 3, 8, 3, 4, 7, 0, 7, 1, 1), c(2, 2, 3))
zelen.test(z1, r = 4)

# Zelen's test:
#P = 0.1238

推荐阅读