我想进行理论上的卡方拟合度测试:
actual <- c(20,80)
expected <- c(10,90)
chisq.test(expected,actual)
样本量n = 100,α= 0.05,df = 1。这给出了3.84的临界chi值。用手,我可以将测试统计量计算为((20-10)^ 2)/ 10 +((80-90)^ 2)/ 90 = 100/9> 3.84
但是,上面的代码只是产生了
Pearson's Chi-squared test with Yates' continuity correction
data: expected and actual
X-squared = 0, df = 1, p-value = 1
我的错误在哪里?
答案 0 :(得分:0)
我认为你没有测试你打算测试的内容。作为?chisq.test
状态的帮助,Yates通过correct=
参数进行的连续性校正是:“一个逻辑,指示在计算 2乘2表的测试统计量时是否应用连续性校正强> “。
相反,请尝试:
chisq.test(x=actual,p=prop.table(expected))
# Chi-squared test for given probabilities
#
#data: actual
#X-squared = 11.1111, df = 1, p-value = 0.0008581
您可以使用optim
找到正确的值,这些值只会为您提供高于临界值的卡方统计量:
critchi <- function(par,actual=c(20,80),crit=3.84) {
res <- chisq.test(actual,p=prop.table(c(par,100-par)))
abs(crit - res$statistic)
}
optim(par = c(1), critchi, method="Brent", lower=1,upper=100)$par
#[1] 28.88106
您可以用29代替确认这种情况,作为28.88的四舍五入整数:
chisq.test(actual, p=prop.table(c(29,100-29)))
#X-squared = 3.9339, df = 1, p-value = 0.04732