类 GTest
-
构造器概要
-
方法概要
修饰符和类型方法说明double
g
(double[] expected, long[] observed) double
gDataSetsComparison
(long[] observed1, long[] observed2) 计算独立性的G(对数似然比)两样本检验统计量,比较observed1
和observed2
中的频率计数。double
gTest
(double[] expected, long[] observed) boolean
gTest
(double[] expected, long[] observed, double alpha) 执行G检验(对数似然比检验)以评估观察计数是否符合由期望计数描述的频率分布的零假设,显著水平为alpha
。double
gTestDataSetsComparison
(long[] observed1, long[] observed2) boolean
gTestDataSetsComparison
(long[] observed1, long[] observed2, double alpha) 执行比较两个分组数据集的G检验(对数似然比检验)。double
gTestIntrinsic
(double[] expected, long[] observed) 返回内在(Hardy-Weinberg比例)p值,如McDonald, J.H. 2009年的第64-69页所述。double
rootLogLikelihoodRatio
(long k11, long k12, long k21, long k22) 计算2状态数据集的根对数似然比。
-
构造器详细资料
-
GTest
public GTest()空构造函数。这个构造函数并非绝对必要,但它可以防止在JDK 18及更高版本中出现虚假的javadoc警告。
- 从以下版本开始:
- 3.0
-
-
方法详细资料
-
g
计算observed
和expected
频率计数的拟合度的G统计量。此统计量可用于执行G检验(对数似然比检验),评估观察计数是否遵循期望分布的零假设。
前提条件:
- 期望计数必须全部为正数。
- 观察计数必须全部≥ 0。
- 观察和期望数组的长度必须相同,它们的共同长度必须至少为2。
如果不满足任何前提条件,则会抛出
MathIllegalArgumentException
。注意:此实现会根据需要重新调整
expected
数组,以确保期望计数和观察计数的总和相等。- 参数:
-
expected
- 期望频率计数数组 -
observed
- 观察频率计数数组 - 返回:
- G检验统计量
- 抛出:
-
MathIllegalArgumentException
- 如果observed
有负条目 -
MathIllegalArgumentException
- 如果expected
有不严格为正的条目 -
MathIllegalArgumentException
- 如果数组长度不匹配或小于2。
-
gTest
public double gTest(double[] expected, long[] observed) throws MathIllegalArgumentException, MathIllegalStateException 返回与G检验的拟合度比较observed
频率计数与expected
数组中的计数相关的观察到的显著水平,或p值。返回的数字是可以拒绝观察计数符合由期望计数描述的频率分布的零假设的最小显著水平。
返回的概率是在自由度比
expected
和observed
的公共长度少一个的卡方分布中超过g(expected, observed)
的尾部概率。前提条件:
- 期望计数必须全部为正数。
- 观察计数必须全部≥ 0。
- 观察和期望数组的长度必须相同,它们的共同长度必须至少为2。
如果不满足任何前提条件,则会抛出
MathIllegalArgumentException
。注意:此实现会根据需要重新调整
expected
数组,以确保期望计数和观察计数的总和相等。- 参数:
-
expected
- 期望频率计数数组 -
observed
- 观察频率计数数组 - 返回:
- p值
- 抛出:
-
MathIllegalArgumentException
- 如果observed
有负条目 -
MathIllegalArgumentException
- 如果expected
有不严格为正的条目 -
MathIllegalArgumentException
- 如果数组长度不匹配或小于2。 -
MathIllegalStateException
- 如果计算p值时发生错误。
-
gTestIntrinsic
public double gTestIntrinsic(double[] expected, long[] observed) throws MathIllegalArgumentException, MathIllegalStateException 返回内在(Hardy-Weinberg比例)p值,如McDonald, J.H. 2009年的第64-69页所述。返回的概率是在自由度比
expected
和observed
的公共长度少两个的卡方分布中超过g(expected, observed)
的尾部概率。- 参数:
-
expected
- 期望频率计数数组 -
observed
- 观察频率计数数组 - 返回:
- p值
- 抛出:
-
MathIllegalArgumentException
- 如果observed
有负条目 -
MathIllegalArgumentException
-expected
有不严格为正的条目 -
MathIllegalArgumentException
- 如果数组长度不匹配或小于2。 -
MathIllegalStateException
- 如果计算p值时发生错误。
-
gTest
public boolean gTest(double[] expected, long[] observed, double alpha) throws MathIllegalArgumentException, MathIllegalStateException 执行G检验(对数似然比检验),评估观察计数是否符合由期望计数描述的频率分布的零假设,显著水平为alpha
。如果可以以100 * (1 - alpha)
百分比的置信度拒绝零假设,则返回true。示例:
要测试observed
是否在99%水平上遵循expected
的假设,请使用gTest(expected, observed, 0.01)
如果
gTestGoodnessOfFitPValue(expected, observed)
> alpha,则返回true前提条件:
- 期望计数必须全部为正数。
- 观察计数必须全部≥ 0。
- 观察和期望数组的长度必须相同,它们的共同长度必须至少为2。
0 < alpha < 0.5
如果不满足任何前提条件,则会抛出
MathIllegalArgumentException
。注意:此实现会根据需要重新调整
expected
数组,以确保期望计数和观察计数的总和相等。- 参数:
-
expected
- 期望频率计数的数组 -
observed
- 观察频率计数的数组 -
alpha
- 测试的显著性水平 - 返回:
- 如果可以以置信度1-alpha拒绝零假设,则为true
- 抛出:
-
MathIllegalArgumentException
- 如果observed
中有负条目 -
MathIllegalArgumentException
- 如果expected
中的条目不是严格正数 -
MathIllegalArgumentException
- 如果数组长度不匹配或小于2 -
MathIllegalStateException
- 如果计算p值时发生错误 -
MathIllegalArgumentException
- 如果alpha不严格大于零且小于或等于0.5
-
gDataSetsComparison
public double gDataSetsComparison(long[] observed1, long[] observed2) throws MathIllegalArgumentException 计算独立性的G(对数似然比)双样本检验统计量,比较
observed1
和observed2
中的频率计数。两个样本的频率计数之和不需要相同。用于计算检验统计量的公式为2 * totalSum * [H(rowSums) + H(colSums) - H(k)]
其中
H
是将参数数组的元素视为发生计数的随机变量的香农熵;k
是一个具有行[observed1, observed2]
的矩阵;rowSums, colSums
是k
的行/列和;
和totalSum
是k
中所有条目的总和。此统计量可用于执行G检验,评估零假设,即两个观察计数是独立的
前提条件:
- 观察计数必须是非负的。
- 特定箱的观察计数不能都为零。
- 特定样本的观察计数不能全部为0。
- 数组
observed1
和observed2
必须具有相同的长度,它们的公共长度必须至少为2。
如果不满足任何前提条件,则会抛出
MathIllegalArgumentException
。- 参数:
-
observed1
- 第一个数据集的观察频率计数数组 -
observed2
- 第二个数据集的观察频率计数数组 - 返回:
- G-Test统计量
- 抛出:
-
MathIllegalArgumentException
- 如果数组长度不匹配或它们的公共长度小于2 -
MathIllegalArgumentException
- 如果observed1
或observed2
中的任何条目为负 -
MathIllegalArgumentException
- 如果observed1
或observed2
的所有计数为零,或者如果相同索引处两个数组的计数都为零
-
rootLogLikelihoodRatio
public double rootLogLikelihoodRatio(long k11, long k12, long k21, long k22) 计算2状态数据集的根对数似然比。参见gDataSetsComparison(long[], long[])
。给定两个事件A和B,设k11为两个事件同时发生的次数,k12为B发生但A不发生的次数,k21为A发生但B不发生的次数,k22为既不是A也不是B发生的次数。此方法返回的是
(sgn) sqrt(gValueDataSetsComparison({k11, k12}, {k21, k22})
其中
sgn
为-1,如果k11 / (k11 + k12) < k21 / (k21 + k22))
;
否则为1。有符号的根LLR相对于基本LLR有两个优点:a) 在k11大于预期时为正,在k11较低时为负 b) 如果没有差异,它在渐近上是正态分布的。这使得可以谈论“标准偏差的数量”,这是比卡方分布更常见的参考框架。
- 参数:
-
k11
- 两个事件同时发生(AB)的次数 -
k12
- 第一个事件发生但第二个事件不发生(非A,B)的次数 -
k21
- 第二个事件发生但第一个事件不发生(A,非B)的次数 -
k22
- 其他事件发生的次数(即既不是这两个事件也不是那两个事件(非A,非B)) - 返回:
- 根对数似然比
-
gTestDataSetsComparison
public double gTestDataSetsComparison(long[] observed1, long[] observed2) throws MathIllegalArgumentException, MathIllegalStateException 返回与G值(对数似然比)相关的观察显著性水平,或p值,用于比较
observed1
和observed2
中的箱频率计数的双样本检验。返回的数字是可以拒绝观察计数符合相同分布的零假设的最小显著性水平。
有关如何计算p值的详细信息,请参见
gTest(double[], long[])
。用于执行测试的自由度比输入观察计数数组的公共长度少一个。前提条件:
- 观察计数必须是非负的。
- 特定箱的观察计数不能都为零。
- 特定样本的观察计数不能全部为0。
- 数组
observed1
和observed2
必须具有相同的长度,它们的公共长度必须至少为2。
如果不满足任何前提条件,则会抛出
MathIllegalArgumentException
。- 参数:
-
observed1
- 第一个数据集的观察频率计数数组 -
observed2
- 第二个数据集的观察频率计数数组 - 返回:
- p值
- 抛出:
-
MathIllegalArgumentException
- 如果数组长度不匹配或它们的公共长度小于2 -
MathIllegalArgumentException
- 如果observed1
或observed2
中的任何条目为负 -
MathIllegalArgumentException
- 如果observed1
或observed2
的所有计数为零,或者如果某些索引处两个数组的计数都为零 -
MathIllegalStateException
- 如果计算p值时发生错误
-
gTestDataSetsComparison
public boolean gTestDataSetsComparison(long[] observed1, long[] observed2, double alpha) throws MathIllegalArgumentException, MathIllegalStateException 执行G-Test(对数似然比检验)比较两个分组数据集。该测试评估了两个观察计数列表符合相同频率分布的零假设,显著性水平为
alpha
。如果可以以100 * (1 - alpha)百分比的置信度拒绝零假设,则返回true。有关用于计算测试中使用的G(LLR)统计量的公式的详细信息,请参见
gDataSetsComparison(long[], long[])
,以及有关如何计算观察显著性水平的信息,请参见gTest(double[], long[])
。用于执行测试的自由度比输入观察计数数组的公共长度少一个。前提条件:
- 观察计数必须是非负的。
- 特定箱的观察计数不能都为零。
- 特定样本的观察计数不能全部为0。
- 数组
observed1
和observed2
必须具有相同的长度,它们的公共长度必须至少为2。 0 < alpha < 0.5
如果不满足任何前提条件,则会抛出
MathIllegalArgumentException
。- 参数:
-
observed1
- 第一个数据集的观察频率计数数组 -
observed2
- 第二个数据集的观察频率计数数组 -
alpha
- 测试的显著性水平 - 返回:
- 如果可以以置信度1-alpha拒绝零假设,则为true
- 抛出:
-
MathIllegalArgumentException
- 如果数组长度不匹配 -
MathIllegalArgumentException
- 如果observed1
或observed2
中的任何条目为负 -
MathIllegalArgumentException
- 如果observed1
或observed2
的所有计数为零,或者如果某些索引处两个数组的计数都为零 -
MathIllegalArgumentException
- 如果alpha
不在范围(0, 0.5]内 -
MathIllegalStateException
- 如果执行测试时发生错误
-