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 |
数值向量或矩阵。 |
y |
数值向量;如果 |
correct |
指示在计算 2 x 2 表的检验统计量时是否应用连续性校正的逻辑:从所有 |
p |
与 |
rescale.p |
逻辑标量;如果为 TRUE,则将 |
simulate.p.value |
指示是否通过蒙特卡罗模拟计算 p 值的逻辑。 |
B |
一个整数,指定蒙特卡罗测试中使用的重复次数。 |
细节
如果 x
是具有一行或一列的矩阵,或者如果 x
是向量并且未给出 y
,则执行 goodness-of-fit 测试(x
被视为一维列联表)。 x
的条目必须是非负整数。在这种情况下,测试的假设是总体概率是否等于 p
中的概率,或者如果未给出 p
则全部相等。
如果x
是一个至少有两行和两列的矩阵,则将其视为二维列联表:x
的条目必须是非负整数。否则,x
和y
必须是相同长度的向量或因子;删除缺失值的情况,将对象强制为因子,并根据这些因子计算列联表。然后对原假设进行皮尔逊卡方检验,即二维列联表中单元格计数的联合分布是行和列边际的乘积。
如果 simulate.p.value
是 FALSE
,则 p 值是根据检验统计量的渐近卡方分布计算的;连续性校正仅在 2×2 情况下使用(如果 correct
是 TRUE
,则为默认值)。否则,将使用 B
重复项计算蒙特卡罗检验(Hope,1968)的 p 值。默认 B = 2000
意味着最小 p 值约为 0.0005 ( )。
在列联表情况下,模拟是通过从具有给定边际的所有列联表的集合中随机抽样来完成的,并且仅当边际严格为正时才有效。从未使用连续性校正,并且在不使用连续性校正的情况下引用统计数据。请注意,这不是卡方检验假设的通常抽样情况,而是费舍尔精确检验的假设情况。
在 goodness-of-fit 情况下,模拟是通过从指定的离散分布中随机采样来完成的p
,每个样本的大小n = sum(x)
。这个模拟是在R并且可能会很慢。
值
类"htest"
的列表包含以下组件:
statistic |
卡方检验统计量的值。 |
parameter |
检验统计量的近似卡方分布的自由度, |
p.value |
检验的 p 值。 |
method |
指示所执行测试类型的字符串,以及是否使用蒙特卡罗模拟或连续性校正。 |
data.name |
给出数据名称的字符串。 |
observed |
观察到的计数。 |
expected |
原假设下的预期计数。 |
residuals |
皮尔逊残差, |
stdres |
标准化残差 |
例子
## 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 checkMFClasses 检查传递给模型框架的变量类型的函数
- R constrOptim 线性约束优化
- R cancor 典型相关性
- R confint 模型参数的置信区间
- R contrast (可能稀疏)对比矩阵
- R cor 相关性、方差和协方差(矩阵)
- R cor.test 配对样本之间的关联/相关性测试
- R cutree 将树切割成数据组
- R cpgram 绘制累积周期图
- R complete.cases 查找完整案例
- R contrasts 获取和设置对比矩阵
- R convolve 通过 FFT 进行序列卷积
- R cov.wt 加权协方差矩阵
- R cophenetic 层次聚类的共表距离
- R coef 提取模型系数
- R cmdscale 经典(公制)多维标度
- R case+variable.names 拟合模型的案例和变量名称
- R stlmethods STL 对象的方法
- R medpolish 矩阵的中值波兰(稳健双向分解)
- R naprint 调整缺失值
- R summary.nls 总结非线性最小二乘模型拟合
- R summary.manova 多元方差分析的汇总方法
- R formula 模型公式
- R nls.control 控制 nls 中的迭代
- R aggregate 计算数据子集的汇总统计
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Pearson's Chi-squared Test for Count Data。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。