R中卡方的置信区间

Sat*_*ish 1 statistics r

如何计算R中卡方的置信区间。是否有类似chisq.test()的函数,

mys*_*ous 5

卡方检验没有置信区间(您只是在检查第一个类别变量和第二个类别变量是否独立),但是您可以像这样对比例差异进行置信区间。

假设您有一些数据,其中第一组的30%报告成功,而第二组的70%报告成功:

row1 <- c(70,30)
row2 <- c(30,70)
my.table <- rbind(row1,row2)
Run Code Online (Sandbox Code Playgroud)

现在,列联表中有数据:

> my.table
     [,1] [,2]
row1   70   30
row2   30   70
Run Code Online (Sandbox Code Playgroud)

您可以继续chisq.test使用,显然这两个比例明显不同,因此分类变量必须是独立的:

> chisq.test(my.table)

    Pearson's Chi-squared test with Yates' continuity correction

data:  my.table
X-squared = 30.42, df = 1, p-value = 3.479e-08
Run Code Online (Sandbox Code Playgroud)

如果您prop.test确定自己有95%的信心,则比例之间的差异在26.29%和53.70%之间,这是有道理的,因为观察到的两个比例之间的实际差异为70%-30%= 40%:

> prop.test(x=c(70,30),n=c(100,100))

    2-sample test for equality of proportions with continuity correction

data:  c(70, 30) out of c(100, 100)
X-squared = 30.42, df = 1, p-value = 3.479e-08
alternative hypothesis: two.sided
95 percent confidence interval:
 0.2629798 0.5370202
sample estimates:
prop 1 prop 2 
   0.7    0.3 
Run Code Online (Sandbox Code Playgroud)


Mau*_*ers 5

@mysteRious'很好的答案的补充:如果你有一个2x2列联矩阵,你可以使用fisher.test而不是prop.test测试比例的差异而不是比率的差异。在 Fisher 精确检验中,原假设对应于优势比 (OR) = 1。

使用@mysteRious'样本数据

ft <- fisher.test(my.table)
ft
#
#   Fisher's Exact Test for Count Data
#
#data:  my.table
#p-value = 2.31e-08
#alternative hypothesis: true odds ratio is not equal to 1
#95 percent confidence interval:
#  2.851947 10.440153
#sample estimates:
#odds ratio
#  5.392849
Run Code Online (Sandbox Code Playgroud)

OR 的置信区间如下所示fit$conf.int

ft$conf.int
#[1]  2.851947 10.440153
#attr(,"conf.level")
#[1] 0.95
Run Code Online (Sandbox Code Playgroud)

为了确认,我们手动计算 OR

OR <- Reduce("/", my.table[, 1] / my.table[, 2])
OR
#[1] 5.444444
Run Code Online (Sandbox Code Playgroud)