类 ChiSquareTest

java.lang.Object
org.hipparchus.stat.inference.ChiSquareTest

public class ChiSquareTest extends Object
实现卡方检验统计量。

此实现处理已知和未知分布。

当分布未知但由一个样本提供时,或者在被检验的假设是两个样本来自相同潜在分布时,可以使用两个样本检验。

  • 构造器详细资料

    • ChiSquareTest

      public ChiSquareTest()
      空构造函数。

      此构造函数并非必需,但可防止在JDK 18及更高版本中出现虚假的javadoc警告。

      从以下版本开始:
      3.0
  • 方法详细资料

    • chiSquare

      public double chiSquare(double[] expected, long[] observed) throws MathIllegalArgumentException
      计算比较observedexpected频率计数的卡方统计量

      此统计量可用于执行卡方检验,评估观察到的计数是否遵循期望分布的零假设。

      前提条件:

      • 期望计数必须全部为正数。
      • 观察到的计数必须全部≥ 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

      public double chiSquare(long[][] counts) throws MathIllegalArgumentException, NullArgumentException
      计算与输入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
      计算比较observed1observed2中的频率计数的卡方两样本检验统计量

      两个样本中频率计数的总和不需要相同。用于计算检验统计量的公式为

      ∑[(K * observed1[i] - observed2[i]/K)2 / (observed1[i] + observed2[i])]

      其中

      K = √[∑(observed2 / ∑(observed1)]

      此统计量可用于执行卡方检验,评估观察计数是否遵循相同分布的零假设。

      前提条件:

      • 观察计数必须是非负的。
      • 特定箱的观察计数不能都为零。
      • 特定样本的观察计数不能都为0。
      • 数组observed1observed2必须具有相同的长度,它们的共同长度必须至少为2。

      如果不满足任何前提条件,则会抛出IllegalArgumentException

      参数:
      observed1 - 第一个数据集的观察频率计数的数组
      observed2 - 第二个数据集的观察频率计数的数组
      返回:
      卡方检验统计量
      抛出:
      MathIllegalArgumentException - 数组长度不匹配
      MathIllegalArgumentException - 如果observed1observed2中的任何条目为负
      MathIllegalArgumentException - 如果observed1observed2的所有计数都为零,或者如果某个索引处两个数组的计数都为零
    • chiSquareTestDataSetsComparison

      public double chiSquareTestDataSetsComparison(long[] observed1, long[] observed2) throws MathIllegalArgumentException, MathIllegalStateException
      返回与比较observed1observed2中的频率计数的卡方两样本检验相关的观察显著水平p值

      返回的数字是可以拒绝观察计数符合相同分布的零假设的最小显著水平。

      有关用于计算检验统计量的公式的详细信息,请参阅chiSquareDataSetsComparison(long[], long[])。用于执行检验的自由度比输入观察计数数组的公共长度少1。

      前提条件:

      • 观察计数必须是非负的。
      • 特定箱的观察计数不能都为零。
      • 特定样本的观察计数不能都为0。
      • 数组observed1observed2必须具有相同的长度,它们的共同长度必须至少为2。

      如果不满足任何前提条件,则会抛出IllegalArgumentException

      参数:
      observed1 - 第一个数据集的观察频率计数的数组
      observed2 - 第二个数据集的观察频率计数的数组
      返回:
      p值
      抛出:
      MathIllegalArgumentException - 数组长度不匹配
      MathIllegalArgumentException - 如果observed1observed2中的任何条目为负
      MathIllegalArgumentException - 如果observed1observed2的所有计数都为零,或者如果某个索引处两个数组的计数都为零
      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。
      • 数组observed1observed2必须具有相同的长度,它们的公共长度必须至少为2。
      • 0 < alpha < 0.5

      如果不满足任何前提条件,则会抛出IllegalArgumentException

      参数:
      observed1 - 第一个数据集的观察频率计数数组
      observed2 - 第二个数据集的观察频率计数数组
      alpha - 测试的显著性水平
      返回:
      如果可以以置信度1 - alpha拒绝零假设,则为true
      抛出:
      MathIllegalArgumentException - 数组的长度不匹配
      MathIllegalArgumentException - 如果observed1observed2中的任何条目为负
      MathIllegalArgumentException - 如果observed1observed2的所有计数都为零,或者如果两个数组在相同索引处的计数都为零
      MathIllegalArgumentException - 如果alpha不在范围(0, 0.5]内
      MathIllegalStateException - 如果执行测试时发生错误