当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R chisq.test 计数数据的皮尔逊卡方检验


R语言 chisq.test 位于 stats 包(package)。

说明

chisq.test 执行卡方列联表测试和goodness-of-fit 测试。

用法

chisq.test(x, y = NULL, correct = TRUE,
           p = rep(1/length(x), length(x)), rescale.p = FALSE,
           simulate.p.value = FALSE, B = 2000)

参数

x

数值向量或矩阵。 xy 也可以都是因子。

y

数值向量;如果 x 是矩阵,则忽略。如果x是一个因子,那么y应该是相同长度的因子。

correct

指示在计算 2 x 2 表的检验统计量时是否应用连续性校正的逻辑:从所有 差异中减去一半;然而,修正不会大于差异本身。如果 simulate.p.value = TRUE 则不进行更正。

p

x 长度相同的概率向量。如果 p 的任何条目为负数,则会给出错误。

rescale.p

逻辑标量;如果为 TRUE,则将 p 重新调整(如有必要)以使其总和为 1。如果 rescale.p 为 FALSE,并且 p 的总和不为 1,则会给出错误。

simulate.p.value

指示是否通过蒙特卡罗模拟计算 p 值的逻辑。

B

一个整数,指定蒙特卡罗测试中使用的重复次数。

细节

如果 x 是具有一行或一列的矩阵,或者如果 x 是向量并且未给出 y,则执行 goodness-of-fit 测试(x 被视为一维列联表)。 x 的条目必须是非负整数。在这种情况下,测试的假设是总体概率是否等于 p 中的概率,或者如果未给出 p 则全部相等。

如果x是一个至少有两行和两列的矩阵,则将其视为二维列联表:x的条目必须是非负整数。否则,xy必须是相同长度的向量或因子;删除缺失值的情况,将对象强制为因子,并根据这些因子计算列联表。然后对原假设进行皮尔逊卡方检验,即二维列联表中单元格计数的联合分布是行和列边际的乘积。

如果 simulate.p.valueFALSE ,则 p 值是根据检验统计量的渐近卡方分布计算的;连续性校正仅在 2×2 情况下使用(如果 correctTRUE ,则为默认值)。否则,将使用 B 重复项计算蒙特卡罗检验(Hope,1968)的 p 值。默认 B = 2000 意味着最小 p 值约为 0.0005 ( )。

在列联表情况下,模拟是通过从具有给定边际的所有列联表的集合中随机抽样来完成的,并且仅当边际严格为正时才有效。从未使用连续性校正,并且在不使用连续性校正的情况下引用统计数据。请注意,这不是卡方检验假设的通常抽样情况,而是费舍尔精确检验的假设情况。

在 goodness-of-fit 情况下,模拟是通过从指定的离散分布中随机采样来完成的p,每个样本的大小n = sum(x)。这个模拟是在R并且可能会很慢。

"htest" 的列表包含以下组件:

statistic

卡方检验统计量的值。

parameter

检验统计量的近似卡方分布的自由度,NA(如果 p 值是通过蒙特卡洛模拟计算的)。

p.value

检验的 p 值。

method

指示所执行测试类型的字符串,以及是否使用蒙特卡罗模拟或连续性校正。

data.name

给出数据名称的字符串。

observed

观察到的计数。

expected

原假设下的预期计数。

residuals

皮尔逊残差,(observed - expected) / sqrt(expected)

stdres

标准化残差 (observed - expected) / sqrt(V) ,其中 V 是残差单元方差(Agresti, 2007,第 2.4.5 节针对 x 是矩阵的情况,否则 n * p * (1 - p) )。

例子


## From Agresti(2007) p.39
M <- as.table(rbind(c(762, 327, 468), c(484, 239, 477)))
dimnames(M) <- list(gender = c("F", "M"),
                    party = c("Democrat","Independent", "Republican"))
(Xsq <- chisq.test(M))  # Prints test summary
Xsq$observed   # observed counts (same as M)
Xsq$expected   # expected counts under the null
Xsq$residuals  # Pearson residuals
Xsq$stdres     # standardized residuals


## Effect of simulating p-values
x <- matrix(c(12, 5, 7, 7), ncol = 2)
chisq.test(x)$p.value           # 0.4233
chisq.test(x, simulate.p.value = TRUE, B = 10000)$p.value
                                # around 0.29!

## Testing for population probabilities
## Case A. Tabulated data
x <- c(A = 20, B = 15, C = 25)
chisq.test(x)
chisq.test(as.table(x))             # the same
x <- c(89,37,30,28,2)
p <- c(40,20,20,15,5)
try(
chisq.test(x, p = p)                # gives an error
)
chisq.test(x, p = p, rescale.p = TRUE)
                                # works
p <- c(0.40,0.20,0.20,0.19,0.01)
                                # Expected count in category 5
                                # is 1.86 < 5 ==> chi square approx.
chisq.test(x, p = p)            #               maybe doubtful, but is ok!
chisq.test(x, p = p, simulate.p.value = TRUE)

## Case B. Raw data
x <- trunc(5 * runif(100))
chisq.test(table(x))            # NOT 'chisq.test(x)'!

来源

蒙特卡罗模拟的代码是 Patefield (1981) 的 Fortran 算法的 C 语言翻译。

参考

Hope, A. C. A. (1968). A simplified Monte Carlo significance test procedure. Journal of the Royal Statistical Society Series B, 30, 582-598. doi:10.1111/j.2517-6161.1968.tb00759.x.

Patefield, W. M. (1981). Algorithm AS 159: An efficient method of generating r x c tables with given row and column totals. Applied Statistics, 30, 91-97. doi:10.2307/2346669.

Agresti, A. (2007). An Introduction to Categorical Data Analysis, 2nd ed. New York: John Wiley & Sons. Page 38.

也可以看看

对于 goodness-of-fit 测试,特别是连续分布,ks.test

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Pearson's Chi-squared Test for Count Data。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。