您的R
代码认为您有一个用于卡方检验的 2x2 列联表,而您的“手动”版本将您的两个值视为与前两个值进行比较的预期值。您需要确定哪种设置是正确的,并且两次都一致地使用它。
这是您的R
版本:
> test <- matrix(c(4203, 4218, 786, 771), ncol=2)
> dimnames(test) <- list(group = c("control","exp"), click = c("n","y"))
> print(test)
click
group n y
control 4203 786
exp 4218 771
> print(Xsq <- chisq.test(test, correct=F))
Pearson's Chi-squared test
data: test
X-squared = 0.1712, df = 1, p-value = 0.679
这就是你“手工”做的方式:
groupcontrolexpproportionn420342180.844clicky7867710.156proportion0.500.50
请注意,我添加了行和列的比例。这些被视为对观察值落在每一行(列)中的概率的估计。在独立假设下每个单元格中的预期计数是行概率乘以列概率乘以总计数。对于您的数据,这给出了:
groupcontrolexpclickn4210.54210.5y778.5778.5
因此计算为:
(4203−4210.5)24210.5+(4218−4210.5)24210.5+(786−778.5)2778.5+(771−778.5)2778.5=0.1712,
这与R
给予的相同。
如果您将control
行计数作为预期计数,而不是其他条件的计数,则“手动”计算将具有以下内容:
(4218−4203)24203+(771−786)2786=0.3398
你也可以R
像这样运行这个版本:
> probs <- test[1,]/sum(test[1,])
> probs
n y
0.8424534 0.1575466
> chisq.test(test[2,], correct=F, p=probs)
Chi-squared test for given probabilities
data: test[2, ]
X-squared = 0.3398, df = 1, p-value = 0.5599
他们的关键是您指定p
具有预期概率的参数(R
将负责计算预期计数)。无论如何,你可以看到χ2值再次相同。