我有一个数据帧(df),它由一组独立变量(V,W,X,...)作为列组成,每一行都是一个不同的样本。最后一行显示因变量(AH)。
R <- lapply (data, fisher.test, y=data$AH)
R
当然,我的实际数据帧具有更多因变量(大约60)。另外,我的变量中缺少一些数据。我在lapply
函数代码中尝试了不同的参数,例如na.rm = TRUE
和!is.na
。
我也尝试过na.omit
。代码如下:
R <- lapply (df, fisher.test, na.omit(df), y=df$AH)
但是会出现以下错误:
FUN(X [[i]],...)中的错误:无法分配大小为134217728 Tb的内存块。
这是我的数据集的一个子集(当然,只是其中的一部分):
V W X Y Z AA AB AC AD AE AF AG AH
1 NA NA NA NA NA NA NA NA NA NA NA NA 2
2 2 2 2 2 NA 2 2 1 2 2 2 2 2
3 2 2 2 2 2 2 2 1 2 NA NA 2 2
4 1 1 2 NA 2 NA 2 2 1 2 2 2 2
5 1 1 2 2 2 NA 2 1 2 NA 1 NA 2
6 2 2 1 2 2 1 2 2 2 2 2 NA 1
7 1 1 2 2 2 2 2 1 1 2 2 1 2
8 1 1 1 1 2 1 1 1 1 2 1 1 2
9 NA NA NA NA NA NA NA NA NA NA NA NA 1
10 2 2 2 2 2 2 1 2 2 2 2 2 1
11 NA NA NA NA NA NA NA NA NA NA 1 2 1
12 2 2 2 2 2 2 2 1 2 2 2 2 2
13 2 NA 2 2 2 NA 2 NA 1 2 2 NA 2
14 NA NA NA NA NA NA NA NA NA NA NA NA 1
15 2 2 2 2 2 2 2 2 2 2 2 2 2
16 1 1 1 2 2 1 1 1 1 2 1 2 2
17 1 1 1 2 2 1 2 1 1 2 1 1 2
18 1 1 2 2 2 NA 1 1 NA 2 1 2 2
19 2 NA 2 2 2 2 2 2 2 2 2 2 1
20 NA NA 2 2 2 1 1 1 2 2 2 2 1
21 2 2 2 2 2 2 2 2 2 2 2 2 2
22 1 2 2 2 2 2 2 2 2 2 2 2 1
23 2 2 2 2 2 2 2 2 2 2 2 2 2
24 2 2 2 2 2 2 2 2 2 2 1 2 2
25 2 2 2 2 2 NA 2 1 2 2 1 1 2
26 2 2 2 2 2 2 2 2 2 2 2 2 2
27 2 2 2 2 2 2 2 2 2 2 2 2 2
28 NA NA NA NA NA NA NA NA NA NA NA NA 2
[ reached getOption("max.print") -- omitted 31 rows ]
如何在Fisher精确测试中删除这些NA?
预先感谢
答案 0 :(得分:0)
您还没有提供能够再现您在帖子中提到的错误的数据,因此很难确切知道示例中的错误。
fisher.test
函数会自动忽略数据中的缺失,并且不会产生不正确的p值(您也不会在示例中指出错误之处以及从什么意义上说是错误的)。看到这里
> fisher.test(c(NA, 1, 1, 1, 1, 2, 2, 2, 2), c(1, 1, 1, 1, 1, 2, 2, 2, 2))
Fisher's Exact Test for Count Data
data: c(NA, 1, 1, 1, 1, 2, 2, 2, 2) and c(1, 1, 1, 1, 1, 2, 2, 2, 2)
p-value = 0.02857
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
1.339059 Inf
sample estimates:
odds ratio
Inf
除去第一对观测值的分析相同,得到的结果与包含缺失的结果相同。
> fisher.test(c(1, 1, 1, 1, 2, 2, 2, 2), c(1, 1, 1, 1, 2, 2, 2, 2))
Fisher's Exact Test for Count Data
data: c(1, 1, 1, 1, 2, 2, 2, 2) and c(1, 1, 1, 1, 2, 2, 2, 2)
p-value = 0.02857
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
1.339059 Inf
sample estimates:
odds ratio
Inf
但是,您可能对此行有疑问
lapply (df, fisher.test, na.omit(df), y=df$AH)
因为na.omit(df)
将作为 third 参数传递给工作区fisher.test
。初次调用就足够了,尽管如果您对每个自变量没有两个类别的话可能会遇到问题。