2015-05-01 51 views
1

我试图至R运行良好尺寸数据集,使用McNemar检验,以确定是否有在由成对样品的一种方法对另一检测到的物体的比例的差异。我注意到,测试工作正常,当我有McNemar检验中的R - 稀疏数据

test1 
    y n 
y 34 2 
n 12 16 

一个2x2的表,但如果我尝试和运行更多的东西一样:

34 0 
12 0 

它的错误告诉我,“” x”和'y'必须具有相同数量的等级(最低2)'。

我要澄清,我已经尝试使用我的范围内的数据集,其中,而不是如上述出现的,它否定了最后一栏,给我的表函数转换范围内的数据,以2×2矩阵。

test1 
    y 
y 34 
n 12 

我还运用因子对象的选择,这给了我同样的错误运行mcnemar.test,所以我假设它做类似的事情。我想知道是否有强制表函数生成第二列的方法,尽管它们不属于这两个类别中的任何一个,或者是否有办法让测试忽略这些缺失的数据?

回答

1

也许有更好的方法来做到这一点,但你可以通过确保列表因子具有相同的levels属性并指定完全2个不同的级别来迫使R构造一个稀疏的应变表。

# Example data 
x1 <- c(rep("y", 34), rep("n", 12)) 
x2 <- rep("n", 46) 

# Set levels explicitly 
x1 <- factor(x1, levels = c("y", "n")) 
x2 <- factor(x2, levels = c("y", "n")) 

table(x1, x2) 
# x2 
# x1 y n 
# y 0 34 
# n 0 12 

mcnemar.test(table(x1, x2)) 
# 
# McNemar's Chi-squared test with continuity correction 
# 
# data: table(x1, x2) 
# McNemar's chi-squared = 32.0294, df = 1, p-value = 1.519e-08 
+0

谢谢!使它有点缓慢,但伎俩! – drea