类 AbstractMultipleLinearRegression

java.lang.Object
org.hipparchus.stat.regression.AbstractMultipleLinearRegression
所有已实现的接口:
MultipleLinearRegression
直接已知子类:
GLSMultipleLinearRegression, OLSMultipleLinearRegression

public abstract class AbstractMultipleLinearRegression extends Object implements MultipleLinearRegression
多元线性回归的实现的抽象基类。
  • 构造器详细资料

    • AbstractMultipleLinearRegression

      public AbstractMultipleLinearRegression()
      空构造函数。

      这个构造函数并非绝对必要,但它可以防止在 JDK 18 及更高版本中出现虚假的 javadoc 警告。

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

    • getX

      protected RealMatrix getX()
      获取 X 样本数据。
      返回:
      X 样本数据。
    • getY

      protected RealVector getY()
      获取 Y 样本数据。
      返回:
      Y 样本数据。
    • isNoIntercept

      public boolean isNoIntercept()
      检查模型是否没有截距项。
      返回:
      如果模型没有截距项则返回 true;否则返回 false。
    • setNoIntercept

      public void setNoIntercept(boolean noIntercept)
      设置截距标志。
      参数:
      noIntercept - true 表示模型将在没有截距项的情况下进行估计
    • newSampleData

      public void newSampleData(double[] data, int nobs, int nvars)

      从一个扁平输入数组加载模型 x 和 y 样本数据,覆盖任何先前的样本。

      假设每行首先是 y 值。例如,一个包含值序列 (1, 2, 3, 4, 5, 6, 7, 8, 9) 的输入 data 数组,其中 nobs = 3nvars = 2,创建一个包含两个自变量的回归数据集,如下所示:

         y   x[0]  x[1]
         --------------
         1     2     3
         4     5     6
         7     8     9
       

      请注意,当指定包含截距项的模型时,无需添加初始单位列(全为 1 的列)。如果 isNoIntercept()true,则 X 矩阵将创建为没有初始列 "1";否则将添加此列。

      如果以下任一先决条件失败,则抛出 IllegalArgumentException:

      • data 不能为 null
      • data.length = nobs * (nvars + 1)
      • nobs > nvars
      参数:
      data - 输入数据数组
      nobs - 观测次数(行数)
      nvars - 自变量数量(列数,不包括 y)
      抛出:
      NullArgumentException - 如果数据数组为 null
      MathIllegalArgumentException - 如果数据数组的长度不等于 nobs * (nvars + 1)
      MathIllegalArgumentException - 如果 nobs 小于 nvars + 1
    • newYSampleData

      protected void newYSampleData(double[] y)
      覆盖任何先前数据,加载新的 y 样本数据。
      参数:
      y - 表示 y 样本的数组
      抛出:
      NullArgumentException - 如果 y 为 null
      MathIllegalArgumentException - 如果 y 为空
    • newXSampleData

      protected void newXSampleData(double[][] x)

      覆盖任何先前数据,加载新的 x 样本数据。

      输入的 x 数组应该为每个样本观测值有一行,列对应于自变量。例如,如果

        x = new double[][] {{1, 2}, {3, 4}, {5, 6}} 

      那么 setXSampleData(x) 将得到一个包含两个自变量和 3 个观测值的模型:

         x[0]  x[1]
         ----------
           1    2
           3    4
           5    6
       

      请注意,当指定包含截距项的模型时,无需添加初始单位列(全为 1 的列)。

      参数:
      x - 表示 x 样本的矩形数组
      抛出:
      NullArgumentException - 如果 x 为 null
      MathIllegalArgumentException - 如果 x 为空
      MathIllegalArgumentException - 如果 x 不是矩形的
    • validateSampleData

      protected void validateSampleData(double[][] x, double[] y) throws MathIllegalArgumentException
      验证样本数据。

      检查:

      • x 和 y 均不为 null 或空;
      • x 的长度(即行数)等于 y 的长度
      • x 的行数至少比列数多一个(即有足够的数据来估计每个 x 列的回归系数以及一个截距项)。
      参数:
      x - 表示 x 数据的 [n,k] 数组
      y - 表示 y 数据的 [n,1] 数组
      抛出:
      NullArgumentException - 如果 xy 为 null
      MathIllegalArgumentException - 如果 xy 长度不相等
      MathIllegalArgumentException - 如果 xy 长度为零
      MathIllegalArgumentException - 如果 x 的行数不大于列数 + 1(如果模型有截距项);或者不大于列数(如果没有截距项)
    • validateCovarianceData

      protected void validateCovarianceData(double[][] x, double[][] covariance)
      验证 x 数据和协方差矩阵具有相同的行数,并且协方差矩阵是方阵。
      参数:
      x - 表示 x 样本的 [n,k] 数组
      covariance - 表示协方差矩阵的 [n,n] 数组
      抛出:
      MathIllegalArgumentException - 如果 x 的行数不等于协方差矩阵的行数
      MathIllegalArgumentException - 如果协方差矩阵不是方阵
    • estimateRegressionParameters

      public double[] estimateRegressionParameters()
      估计回归参数 b。
      指定者:
      estimateRegressionParameters 在接口中 MultipleLinearRegression
      返回:
      代表 b 的 [k,1] 数组
    • estimateResiduals

      public double[] estimateResiduals()
      估计残差,即 u = y - X*b。
      指定者:
      estimateResiduals 在接口中 MultipleLinearRegression
      返回:
      代表残差的 [n,1] 数组
    • estimateRegressionParametersVariance

      public double[][] estimateRegressionParametersVariance()
      估计回归参数的方差,即 Var(b)。
      指定者:
      estimateRegressionParametersVariance 在接口中 MultipleLinearRegression
      返回:
      代表 b 方差的 [k,k] 数组
    • estimateRegressionParametersStandardErrors

      public double[] estimateRegressionParametersStandardErrors()
      返回回归参数的标准误差。
      指定者:
      estimateRegressionParametersStandardErrors 在接口中 MultipleLinearRegression
      返回:
      估计回归参数的标准误差
    • estimateRegressandVariance

      public double estimateRegressandVariance()
      返回回归量的方差,即 Var(y)。
      指定者:
      estimateRegressandVariance 在接口中 MultipleLinearRegression
      返回:
      代表 y 方差的 double
    • estimateErrorVariance

      public double estimateErrorVariance()
      估计误差的方差。
      返回:
      误差方差的估计
    • estimateRegressionStandardError

      public double estimateRegressionStandardError()
      估计回归的标准误差。
      返回:
      回归标准误差
    • calculateBeta

      protected abstract RealVector calculateBeta()
      以矩阵表示的多元线性回归的 beta 值。
      返回:
      beta
    • calculateBetaVariance

      protected abstract RealMatrix calculateBetaVariance()
      以矩阵表示的多元线性回归的 beta 方差。
      返回:
      beta 方差
    • calculateYVariance

      protected double calculateYVariance()
      计算 y 值的方差。
      返回:
      Y 方差
    • calculateErrorVariance

      protected double calculateErrorVariance()

      计算误差项的方差。

      使用公式
       var(u) = u · u / (n - k)
       
      其中 n 和 k 分别是设计矩阵 X 的行和列维度。
      返回:
      误差方差的估计
    • calculateResiduals

      protected RealVector calculateResiduals()
      以矩阵表示的多元线性回归的残差。
       u = y - X * b
       
      返回:
      残差的 [n,1] 矩阵