crocodilecat
在R的help中看到了用法不知道该怎么用?
R中是这么定义的:
chisq.test(x,y=Null, correct=TRUE, p=rep(1/length(x),length(x)), rescale.p=FALSE, simulate.p.value=FALSE, B=2000)
对于单边的卡方检验,如何用这个函数给出置信度为95%的置信区间?
alexru
> example('chisq.test')
chsq.t> ## Not really a good example
chsq.t> chisq.test(InsectSprays$count > 7, InsectSprays$spray)
Pearson's Chi-squared test
data: InsectSprays$count > 7 and InsectSprays$spray
X-squared = 60.9915, df = 5, p-value = 7.582e-12
chsq.t> # Prints test summary
chsq.t> chisq.test(InsectSprays$count > 7, InsectSprays$spray)$obs
InsectSprays$spray
InsectSprays$count > 7 A B C D E F
FALSE 1 1 12 11 12 0
TRUE 11 11 0 1 0 12
chsq.t> # Counts observed
chsq.t> chisq.test(InsectSprays$count > 7, InsectSprays$spray)$exp
InsectSprays$spray
InsectSprays$count > 7 A B C D E F
FALSE 6.166667 6.166667 6.166667 6.166667 6.166667 6.166667
TRUE 5.833333 5.833333 5.833333 5.833333 5.833333 5.833333
chsq.t> # Counts expected under the null
chsq.t>
chsq.t> ## Effect of simulating p-values
chsq.t> x <- matrix(c(12, 5, 7, 7), nc = 2)
chsq.t> chisq.test(x)$p.value # 0.4233
[1] 0.4233054
chsq.t> chisq.test(x, simulate.p.value = TRUE, B = 10000)$p.value
[1] 0.290071
chsq.t> # around 0.29!
chsq.t>
chsq.t> ## Testing for population probabilities
chsq.t> ## Case A. Tabulated data
chsq.t> x <- c(A = 20, B = 15, C = 25)
chsq.t> chisq.test(x)
Chi-squared test for given probabilities
data: x
X-squared = 2.5, df = 2, p-value = 0.2865
chsq.t> chisq.test(as.table(x)) # the same
Chi-squared test for given probabilities
data: as.table(x)
X-squared = 2.5, df = 2, p-value = 0.2865
chsq.t> x <- c(89,37,30,28,2)
chsq.t> p <- c(40,20,20,15,5)
chsq.t> try(
chsq.t+ chisq.test(x, p = p) # gives an error
chsq.t+ )
Error in chisq.test(x, p = p) : probabilities must sum to 1.
chsq.t> chisq.test(x, p = p, rescale.p = TRUE)
Chi-squared test for given probabilities
data: x
X-squared = 9.9901, df = 4, p-value = 0.04059
chsq.t> # works
chsq.t> p <- c(0.40,0.20,0.20,0.19,0.01)
chsq.t> # Expected count in category 5
chsq.t> # is 1.86 < 5 ==> chi square approx.
chsq.t> chisq.test(x, p = p) # maybe doubtful, but is ok!
Chi-squared test for given probabilities
data: x
X-squared = 5.7947, df = 4, p-value = 0.215
chsq.t> chisq.test(x, p = p,simulate.p.value = TRUE)
Chi-squared test for given probabilities with simulated p-value (based
on 2000 replicates)
data: x
X-squared = 5.7947, df = NA, p-value = 0.2124
chsq.t> ## Case B. Raw data
chsq.t> x <- trunc(5 * runif(100))
chsq.t> chisq.test(table(x)) # NOT 'chisq.test(x)'!
Chi-squared test for given probabilities
data: table(x)
X-squared = 4.5, df = 4, p-value = 0.3425
Warning message:
Chi-squared approximation may be incorrect in: chisq.test(x, p = p)
>