类 ChiSquareTest
此实现处理已知和未知分布。
当分布未知但由一个样本提供时,或者在被检验的假设是两个样本来自相同潜在分布时,可以使用两个样本检验。
-
构造器概要
-
方法概要
修饰符和类型方法说明double
chiSquare
(double[] expected, long[] observed) double
chiSquare
(long[][] counts) 计算与输入counts
数组相关的独立卡方检验的卡方统计量,将其视为二维表。double
chiSquareDataSetsComparison
(long[] observed1, long[] observed2) double
chiSquareTest
(double[] expected, long[] observed) boolean
chiSquareTest
(double[] expected, long[] observed, double alpha) 执行评估观察计数是否符合由期望计数描述的频率分布的卡方拟合优度检验,显著水平为alpha
。double
chiSquareTest
(long[][] counts) boolean
chiSquareTest
(long[][] counts, double alpha) 执行评估假设的独立卡方检验,即输入的二维表中列的分类是否独立于行,显著水平为alpha
。double
chiSquareTestDataSetsComparison
(long[] observed1, long[] observed2) boolean
chiSquareTestDataSetsComparison
(long[] observed1, long[] observed2, double alpha) 执行比较两个分箱数据集的卡方双样本检验。
-
构造器详细资料
-
ChiSquareTest
public ChiSquareTest()空构造函数。此构造函数并非必需,但可防止在JDK 18及更高版本中出现虚假的javadoc警告。
- 从以下版本开始:
- 3.0
-
-
方法详细资料
-
chiSquare
计算比较observed
和expected
频率计数的卡方统计量。此统计量可用于执行卡方检验,评估观察到的计数是否遵循期望分布的零假设。
前提条件:
- 期望计数必须全部为正数。
- 观察到的计数必须全部≥ 0。
- 观察到的和期望的数组必须具有相同长度,它们的共同长度必须至少为2。
如果不满足任何前提条件,则会抛出
IllegalArgumentException
。注意:此实现会根据需要重新调整
expected
数组,以确保期望计数和观察到的计数的总和相等。- 参数:
-
expected
- 期望频率计数数组 -
observed
- 观察到的频率计数数组 - 返回:
- 卡方检验统计量
- 抛出:
-
MathIllegalArgumentException
- 如果observed
具有负条目 -
MathIllegalArgumentException
- 如果expected
具有不严格为正的条目 -
MathIllegalArgumentException
- 如果数组长度小于2
-
chiSquareTest
public double chiSquareTest(double[] expected, long[] observed) throws MathIllegalArgumentException, MathIllegalStateException 返回与卡方拟合优度检验相关的观察到的显著水平或p值,比较observed
频率计数与expected
数组中的计数。返回的数字是可以拒绝观察到的计数符合由期望计数描述的频率分布的最小显著水平。
前提条件:
- 期望计数必须全部为正数。
- 观察到的计数必须全部≥ 0。
- 观察到的和期望的数组必须具有相同长度,它们的共同长度必须至少为2。
如果不满足任何前提条件,则会抛出
IllegalArgumentException
。注意:此实现会根据需要重新调整
expected
数组,以确保期望计数和观察到的计数的总和相等。- 参数:
-
expected
- 期望频率计数数组 -
observed
- 观察到的频率计数数组 - 返回:
- p值
- 抛出:
-
MathIllegalArgumentException
- 如果observed
具有负条目 -
MathIllegalArgumentException
- 如果expected
具有不严格为正的条目 -
MathIllegalArgumentException
- 如果数组长度小于2 -
MathIllegalStateException
- 如果计算p值时发生错误
-
chiSquareTest
public boolean chiSquareTest(double[] expected, long[] observed, double alpha) throws MathIllegalArgumentException, MathIllegalStateException 执行评估观察计数是否符合由期望计数描述的频率分布的卡方拟合优度检验,显著水平为alpha
。返回true,当且仅当可以以100 * (1 - alpha)百分比置信度拒绝零假设时。示例:
要测试observed
是否以99%水平遵循expected
的假设,请使用chiSquareTest(expected, observed, 0.01)
前提条件:
- 期望计数必须全部为正数。
- 观察到的计数必须全部≥ 0。
- 观察到的和期望的数组必须具有相同长度,它们的共同长度必须至少为2。
0 < alpha < 0.5
如果不满足任何前提条件,则会抛出
IllegalArgumentException
。注意:此实现会根据需要重新调整
expected
数组,以确保期望计数和观察到的计数的总和相等。- 参数:
-
expected
- 期望频率计数的数组 -
observed
- 观察频率计数的数组 -
alpha
- 检验的显著性水平 - 返回:
- 当且仅当可以以置信度1 - alpha拒绝零假设时为true
- 抛出:
-
MathIllegalArgumentException
- 如果observed
中有负条目 -
MathIllegalArgumentException
- 如果expected
中有不严格正的条目 -
MathIllegalArgumentException
- 如果数组长度小于2 -
MathIllegalArgumentException
- 如果alpha
不在范围(0, 0.5]内 -
MathIllegalStateException
- 如果计算p值时发生错误
-
chiSquare
计算与输入counts
数组相关的卡方独立性检验的卡方统计量,将其视为二维表。2维表的行是
count[0], ... , count[count.length - 1]
前提条件:
- 所有计数必须≥ 0。
- 计数数组必须是矩形的(即所有count[i]子数组的长度必须相同)。
- 由
counts
表示的2维表必须至少有2列和2行。
如果不满足任何前提条件,则会抛出
IllegalArgumentException
。- 参数:
-
counts
- 二维表的数组表示 - 返回:
- 卡方检验统计量
- 抛出:
-
NullArgumentException
- 如果数组为null -
MathIllegalArgumentException
- 如果数组不是矩形的 -
MathIllegalArgumentException
- 如果counts
中有负条目
-
chiSquareTest
public double chiSquareTest(long[][] counts) throws MathIllegalArgumentException, NullArgumentException, MathIllegalStateException 返回与输入counts
数组相关的卡方独立性检验的观察显著水平或p值。将其视为二维表。2维表的行是
count[0], ... , count[count.length - 1]
前提条件:
- 所有计数必须≥ 0。
- 计数数组必须是矩形的(即所有count[i]子数组的长度必须相同)。
- 由
counts
表示的2维表必须至少有2列和2行。
如果不满足任何前提条件,则会抛出
IllegalArgumentException
。- 参数:
-
counts
- 二维表的数组表示 - 返回:
- p值
- 抛出:
-
NullArgumentException
- 如果数组为null -
MathIllegalArgumentException
- 如果数组不是矩形的 -
MathIllegalArgumentException
- 如果counts
中有负条目 -
MathIllegalStateException
- 如果计算p值时发生错误
-
chiSquareTest
public boolean chiSquareTest(long[][] counts, double alpha) throws MathIllegalArgumentException, NullArgumentException, MathIllegalStateException 执行卡方独立性检验,评估零假设是输入2维表的列中的计数所代表的分类与行是独立的,显著性水平为alpha
。当且仅当可以以100 * (1 - alpha)百分比的置信度拒绝零假设时返回true。2维表的行是
count[0], ... , count[count.length - 1]
示例:
要以99%水平测试count[0], ... , count[count.length - 1]
中的计数是否都对应于相同的潜在概率分布,请使用chiSquareTest(counts, 0.01)
。前提条件:
- 所有计数必须≥ 0。
- 计数数组必须是矩形的(即所有count[i]子数组的长度必须相同)。
- 由
counts
表示的2维表必须至少有2列和2行。
如果不满足任何前提条件,则会抛出
IllegalArgumentException
。- 参数:
-
counts
- 二维表的数组表示 -
alpha
- 检验的显著性水平 - 返回:
- 当且仅当可以以置信度1 - alpha拒绝零假设时为true
- 抛出:
-
NullArgumentException
- 如果数组为null -
MathIllegalArgumentException
- 如果数组不是矩形的 -
MathIllegalArgumentException
- 如果counts
中有任何负条目 -
MathIllegalArgumentException
- 如果alpha
不在范围(0, 0.5]内 -
MathIllegalStateException
- 如果计算p值时发生错误
-
chiSquareDataSetsComparison
public double chiSquareDataSetsComparison(long[] observed1, long[] observed2) throws MathIllegalArgumentException 计算比较observed1
和observed2
中的频率计数的卡方两样本检验统计量。两个样本中频率计数的总和不需要相同。用于计算检验统计量的公式为
∑[(K * observed1[i] - observed2[i]/K)2 / (observed1[i] + observed2[i])]
其中
K = √[∑(observed2 / ∑(observed1)]
此统计量可用于执行卡方检验,评估观察计数是否遵循相同分布的零假设。
前提条件:
- 观察计数必须是非负的。
- 特定箱的观察计数不能都为零。
- 特定样本的观察计数不能都为0。
- 数组
observed1
和observed2
必须具有相同的长度,它们的共同长度必须至少为2。
如果不满足任何前提条件,则会抛出
IllegalArgumentException
。- 参数:
-
observed1
- 第一个数据集的观察频率计数的数组 -
observed2
- 第二个数据集的观察频率计数的数组 - 返回:
- 卡方检验统计量
- 抛出:
-
MathIllegalArgumentException
- 数组长度不匹配 -
MathIllegalArgumentException
- 如果observed1
或observed2
中的任何条目为负 -
MathIllegalArgumentException
- 如果observed1
或observed2
的所有计数都为零,或者如果某个索引处两个数组的计数都为零
-
chiSquareTestDataSetsComparison
public double chiSquareTestDataSetsComparison(long[] observed1, long[] observed2) throws MathIllegalArgumentException, MathIllegalStateException 返回与比较observed1
和observed2
中的频率计数的卡方两样本检验相关的观察显著水平或p值。返回的数字是可以拒绝观察计数符合相同分布的零假设的最小显著水平。
有关用于计算检验统计量的公式的详细信息,请参阅
chiSquareDataSetsComparison(long[], long[])
。用于执行检验的自由度比输入观察计数数组的公共长度少1。前提条件:
- 观察计数必须是非负的。
- 特定箱的观察计数不能都为零。
- 特定样本的观察计数不能都为0。
- 数组
observed1
和observed2
必须具有相同的长度,它们的共同长度必须至少为2。
如果不满足任何前提条件,则会抛出
IllegalArgumentException
。- 参数:
-
observed1
- 第一个数据集的观察频率计数的数组 -
observed2
- 第二个数据集的观察频率计数的数组 - 返回:
- p值
- 抛出:
-
MathIllegalArgumentException
- 数组长度不匹配 -
MathIllegalArgumentException
- 如果observed1
或observed2
中的任何条目为负 -
MathIllegalArgumentException
- 如果observed1
或observed2
的所有计数都为零,或者如果某个索引处两个数组的计数都为零 -
MathIllegalStateException
- 如果计算p值时发生错误
-
chiSquareTestDataSetsComparison
public boolean chiSquareTestDataSetsComparison(long[] observed1, long[] observed2, double alpha) throws MathIllegalArgumentException, MathIllegalStateException 执行Chi-Square双样本检验,比较两个分组数据集。该检验评估了两个观察计数列表符合相同频率分布的零假设,显著性水平为alpha
。如果可以以100 * (1 - alpha)百分比的置信度拒绝零假设,则返回true。有关用于计算测试中使用的Chisquare统计量的公式的详细信息,请参见
chiSquareDataSetsComparison(long[], long[])
。用于执行测试的自由度比输入观察计数数组的公共长度少一个。前提条件:
- 观察计数必须是非负的。
- 特定箱的观察计数不能都为零。
- 特定样本的观察计数不能全部为0。
- 数组
observed1
和observed2
必须具有相同的长度,它们的公共长度必须至少为2。 0 < alpha < 0.5
如果不满足任何前提条件,则会抛出
IllegalArgumentException
。- 参数:
-
observed1
- 第一个数据集的观察频率计数数组 -
observed2
- 第二个数据集的观察频率计数数组 -
alpha
- 测试的显著性水平 - 返回:
- 如果可以以置信度1 - alpha拒绝零假设,则为true
- 抛出:
-
MathIllegalArgumentException
- 数组的长度不匹配 -
MathIllegalArgumentException
- 如果observed1
或observed2
中的任何条目为负 -
MathIllegalArgumentException
- 如果observed1
或observed2
的所有计数都为零,或者如果两个数组在相同索引处的计数都为零 -
MathIllegalArgumentException
- 如果alpha
不在范围(0, 0.5]内 -
MathIllegalStateException
- 如果执行测试时发生错误
-