G检验

来自决策链云智库
G Test.png
节点状态
Windows / Windows 10 Win10及以上可用
V1.0.2部署
G检验G Test.svg
节点开发者决策链算法研发部 (Dev.Team-DPS)
节点英文名G_Test
功能主类别数据分析
英文缩写GTest
功能亚类别频数表检验
节点类型数据挖掘
开发语言R
节点简介

G检验(G-test)是一个用于假设检验的统计方法,主要用来检验一组或多组观察到的频数分布是否与某个理论分布有显著性差异。它是基于似然比统计量的一种检验,适用于样本量较大的情况。

用途:用来检验观察到的数据分布与特定的理论分布之间是否存在显著差异。

参数:选择分类变量进行检验。

端口数量与逻辑控制(PC)
Input-入口4个
Output-出口3个
Loop-支持循环
If/Switch-支持逻辑判断
输入输出
可生成图片类型(推荐)
可生成数据表类型(推荐)
相关节点
上一节点McNemar检验
下一节点F检验



统计学中,G检验是一种日益普及的似然比maximum likelihood statistical significance检验,它们在过去推荐使用chi-squared test的情形中越来越多地被使用。[1]

公式

G的通用公式为: [math] G = 2\sum_{i} {O_{i} \cdot \ln\left(\frac{O_i}{E_i}\right)}, [/math]

其中 [math]O_i \geq 0[/math] 是某个单元格中的观测计数,[math]E_i > 0[/math] 是在null hypothesis下的预期计数,[math]\ln[/math] 表示natural logarithm,求和是针对所有非空单元格。此外,总观测计数应等于总预期计数:[math]\sum_i O_i = \sum_i E_i = N[/math]其中 [math]N[/math] 是观测总数。

推导

我们可以从对数似然比检验中推导出G检验的值,其中底层模型为多项式模型。

假设我们有一个样本 [math]x = (x_1, \ldots, x_m)[/math],其中每个 [math]x_i[/math] 是观测到的类型 [math]i[/math] 物体的次数。此外,让 [math]n = \sum_{i=1}^m x_i[/math] 是观测到的物体总数。如果我们假设底层模型是多项式的,那么测试统计量定义为[math]\ln \left( \frac{L(\tilde{\theta}|x)}{L(\hat{\theta}|x)} \right) = \ln \left( \frac{\prod_{i=1}^m \tilde{\theta}_i^{x_i}}{\prod_{i=1}^m \hat{\theta}_i^{x_i}} \right)[/math]其中 [math]\tilde{\theta}[/math] 是零假设,[math]\hat{\theta}[/math] 是给定数据的maximum likelihood estimate (MLE)。回想一下,对于多项式模型,给定一些数据的 [math]\hat{\theta}_i[/math] 的MLE定义为[math]\hat{\theta}_i = \frac{x_i}{n}[/math]此外,我们可以将每个零假设参数 [math]\tilde{\theta}_i[/math] 表示为[math]\tilde{\theta}_i = \frac{e_i}{n}[/math]因此,通过替换对数似然比中的 [math]\tilde{\theta}[/math] 和 [math]\hat{\theta}[/math] 的表示,方程简化为[math]\begin{align} \ln \left( \frac{L(\tilde{\theta}|x)}{L(\hat{\theta}|x)} \right) &= \ln \prod_{i=1}^m \left(\frac{e_i}{x_i}\right)^{x_i} \\ &= \sum_{i=1}^m x_i \ln\left(\frac{e_i}{x_i}\right) \\ \end{align}[/math]将变量 [math]e_i[/math] 重命名为 [math]E_i[/math],将 [math]x_i[/math] 重命名为 [math]O_i[/math]。最后,乘以一个因子 [math]-2[/math](用于使G检验公式与皮尔逊卡方检验公式渐近等价),得到以下形式

[math]\begin{aligned} G & =-2 \sum_{i=1}^{m} O_{i} \ln \left(\frac{E_{i}}{O_{i}}\right) \\ & =2 \sum_{i=1}^{m} O_{i} \ln \left(\frac{O_{i}}{E_{i}}\right)\end{aligned}[/math]

直观上,可以将 [math]~ O_i ~[/math] 视为连续的并趋近于零,在这种情况下,[math]~ O_i \ln O_i \to 0 ~,[/math] 并且具有零观测的项可以简单地被丢弃。然而,每个单元格中的预期计数必须严格大于零([math]~ E_i > 0 ~ \forall \, i ~[/math]),才能应用该方法。

分布和使用

假设观测频率是由随机抽样产生,来自具有给定预期频率的分布,那么G分布大致是chi-squared distribution,与相应卡方检验的自由度数量相同。

对于非常小的样本,multinomial test的适配度检验和Fisher's exact test的列联表检验,甚至贝叶斯假设选择,比G检验更可取。[2] McDonald建议如果总样本量小于1 000,始终使用精确检验(适配度的精确检验,Fisher's exact test)。

对于1 000这个样本量,并没有什么神奇之处,它只是一个漂亮的圆整数,处于精确检验、卡方检验和G–检验将给出几乎相同的p 值的范围内。电子表格、网页计算器和SAS在处理1 000个样本量的精确检验时应该没有任何问题。
— John H. McDonald[2]

自1981年版的Biometry以来,Robert R. SokalF. James Rohlf的统计学教科书就推荐使用G-检验。[3]

与其他指标的关系

与卡方检验的关系

通常使用的chi-squared test对分布的适配度检验和contingency table中的独立性检验实际上是基于G检验的log-likelihood ratio的近似。[4]

皮尔逊卡方检验统计量的通用公式为: [math] \chi^2 = \sum_{i} {\frac{\left(O_i - E_i\right)^2}{E_i}} ~.[/math]

通过对自然对数在1附近的二阶泰勒展开,可以获得G与卡方的近似值(请参阅下方的#Derivation (chi-squared))。 当观测计数[math]~ O_i ~[/math]接近期望计数[math]~ E_i ~[/math]时,我们有 [math] G \approx \chi^2 [/math]。然而,当这种差异较大时,[math]~ \chi^2 ~[/math]的近似开始崩溃。在这里,数据中的异常值的影响将更为显著,这解释了为什么在数据较少的情况下[math]~ \chi^2 ~[/math]检验会失败。

对于合理大小的样本,G-检验和卡方检验将导致相同的结论。然而,对于G-检验,其理论卡方分布的近似比皮尔逊卡方检验更好。[5] 在某些单元格中[math]~ O_i > 2 \cdot E_i ~[/math]的情况下,G-检验总是优于卡方检验。, August 2011 {{citation}}: Cite has empty unknown parameters: |cat2=, |cat-date2=, |cat3=, and |cat-date3= (help); Missing or empty |title= (help); Unknown parameter |cat-date= ignored (help); Unknown parameter |cat= ignored (help)[citation needed]

在检验拟合优度时,从巴哈杜尔(Bahadur)的角度来看,G-检验比卡方检验无限地更加高效,但从皮特曼(Pitman)或霍奇斯和莱曼(Hodges and Lehmann)的角度来看,这两种检验同样高效。[6][7]

卡方的推导(chi-squared)

考虑

[math] G = 2\sum_{i} {O_{i} \ln\left(\frac{O_i}{E_i}\right)} ~,[/math]

并设[math]O_i = E_i + \delta_i[/math],其中[math]\sum_i \delta_i = 0 ~,[/math] 以保持总计数不变。替换后我们发现,

[math] G = 2\sum_{i} {(E_i + \delta_i) \ln \left(1+\frac{\delta_i}{E_i}\right)} ~.[/math]

可以使用[math] \ln(1 + x) = x - \frac{1}{2}x^2 + \mathcal{O}(x^3) [/math]在[math]1+\frac{\delta_i}{E_i}[/math]附近进行泰勒展开。结果是

[math] G = 2\sum_{i} (E_i + \delta_i) \left(\frac{\delta_i}{E_i} - \frac{1}{2}\frac{\delta_i^2}{E_i^2} + \mathcal{O}\left(\delta_i^3\right) \right) ~,[/math] 分配项后我们发现,
[math] G = 2\sum_{i} \delta_i + \frac{1}{2}\frac{\delta_i^2}{E_i} + \mathcal{O}\left(\delta_i^3\right)~.[/math]

现在,使用事实[math]~ \sum_{i} \delta_i = 0 ~[/math]和[math]~ \delta_i = O_i - E_i ~,[/math]我们可以写出结果,

[math]~ G \approx \sum_{i} \frac{\left(O_i-E_i\right)^2}{E_i} ~.[/math]

与库尔巴克-莱布勒散度的关系

G-检验统计量与理论分布与实际分布之间的库尔巴克-莱布勒散度成正比:

[math]\begin{aligned} G & =2 \sum_{i} O_{i} \cdot \ln \left(\frac{O_{i}}{E_{i}}\right)=2 N \sum_{i} o_{i} \cdot \ln \left(\frac{o_{i}}{e_{i}}\right) \\ & =2 N D_{\mathrm{KL}}(o \| e)\end{aligned}[/math]

其中N是观测总数,[math]o_i[/math] 和 [math]e_i[/math] 分别是实际和理论频率。

与互信息的关系

对于列联表分析,G的值也可以用互信息来表示。

[math]N = \sum_{ij}{O_{ij}} \; [/math] , [math] \; \pi_{ij} = \frac{O_{ij}}{N} \;[/math] , [math]\; \pi_{i.} = \frac{\sum_j O_{ij}}{N} \; [/math], 和 [math]\; \pi_{. j} = \frac{\sum_i O_{ij}}{N} \;[/math]。

那么G可以用几种替代形式表达:

[math] G = 2 \cdot N \cdot \sum_{ij}{\pi_{ij} \left( \ln(\pi_{ij})-\ln(\pi_{i.})-\ln(\pi_{.j}) \right)} ,[/math]
[math] G = 2 \cdot N \cdot \left[ H(r) + H(c) - H(r,c) \right] , [/math]
[math] G = 2 \cdot N \cdot \operatorname{MI}(r,c) \, ,[/math]

其中离散随机变量[math]X \,[/math]的定义为

[math] H(X) = - {\sum_{x \in \text{Supp}(X)} p(x) \log p(x)} \, ,[/math]

并且

[math] \operatorname{MI}(r,c)= H(r) + H(c) - H(r,c) \, [/math]

是列联表的行向量r和列向量c之间的互信息

还可以展示, August 2011 {{citation}}: Cite has empty unknown parameters: |cat2=, |cat-date2=, |cat3=, and |cat-date3= (help); Missing or empty |title= (help); Unknown parameter |cat-date= ignored (help); Unknown parameter |cat= ignored (help)[citation needed],用于文本检索的逆文档频率加权通常是G的近似,适用于查询的行总和远小于语料库其余部分的行总和的情况。同样,应用于选择单个多项式分布而非更一般的每行一个多项式的贝叶斯推理的结果,与G统计量的结果非常相似。, August 2011 {{citation}}: Cite has empty unknown parameters: |cat2=, |cat-date2=, |cat3=, and |cat-date3= (help); Missing or empty |title= (help); Unknown parameter |cat-date= ignored (help); Unknown parameter |cat= ignored (help)[citation needed]

应用

节点使用指南

  • 用于确定模型拟合数据的好坏的统计方法
  • 用于检验分布的拟合优度、独立性检验以及同质性检验

方法选择

  • 无方法选择

参数配置

  • 统计变量1:选择一个离散型分类数值变量,如果不是continue类型需要转换。1和0的分类不可输入
  • 统计变量2:选择一个或多个离散型分类数值变量,如果不是continue类型需要转换。1和0的分类不可输入。如果选择多个,则每一个变量与变量1做一次G检验
  • 筛选阈值:选择需要的P值阈值,节点会自动将满足阈值的变量筛选出,数据集也会同步筛选出满足的变量。
  • 统计变量1和统计变量2要规避复用
  • 此算法兼容空值

注意事项

  • 两个统计变量的值必须不是0,1
  • 当样本量较大时,G检验比卡方检验更为准确
  • 当数据中有很小的期望频数时,使用G检验要小心,因为当期望频数特别低时(比如小于5),G检验的结果可能不太可靠


引用

  1. McDonald, J.H. (2014). "G–test of goodness-of-fit". Handbook of Biological Statistics (Third ed.). Baltimore, Maryland: Sparky House Publishing. pp. 53–58.
  2. 2.0 2.1 McDonald, John H. (2014). "Small numbers in chi-square and G–tests". Handbook of Biological Statistics (3rd ed.). Baltimore, MD: Sparky House Publishing. pp. 86–89.
  3. Sokal, R. R.; Rohlf, F. J. (1981). Biometry: The Principles and Practice of Statistics in Biological Research (Second ed.). New York: Freeman. ISBN 978-0-7167-2411-7.
  4. Hoey, J. (2012). "The Two-Way Likelihood Ratio (G) Test and Comparison to Two-Way Chi-Squared Test". arXiv:1206.4881 [stat.ME].
  5. Harremoës, P.; Tusnády, G. (2012). "Information divergence is more chi squared distributed than the chi squared statistic". Proceedings ISIT 2012. pp. 538–543. arXiv:1202.1125. Bibcode:2012arXiv1202.1125H.
  6. Quine, M. P.; Robinson, J. (1985). "Efficiencies of chi-square and likelihood ratio goodness-of-fit tests". Annals of Statistics. 13 (2): 727–742. doi:10.1214/aos/1176349550.
  7. Harremoës, P.; Vajda, I. (2008). "On the Bahadur-efficient testing of uniformity by means of the entropy". IEEE Transactions on Information Theory. 54: 321–331. CiteSeerX 10.1.1.226.8051. doi:10.1109/tit.2007.911155. S2CID 2258586.
  8. Dunning, Ted (1993)。"精确方法用于惊奇和巧合的统计 Error in Webarchive template: Empty url.", 计算语言学, 第19卷,第1期(1993年3月)。
  9. Rivas, Elena (2020年10月30日). "使用正面和负面进化信息的RNA结构预测". PLOS Computational Biology. 16 (10): e1008387. doi:10.1371/journal.pcbi.1008387. PMC 7657543. {{cite journal}}: Check date values in: |date= (help)

查找其他类别的节点,请参考以下列表