类 AbstractMultipleLinearRegression
java.lang.Object
org.hipparchus.stat.regression.AbstractMultipleLinearRegression
- 所有已实现的接口:
-
MultipleLinearRegression
public abstract class AbstractMultipleLinearRegression extends Object implements MultipleLinearRegression
多元线性回归的实现的抽象基类。
-
构造器概要
-
方法概要
修饰符和类型方法说明protected abstract RealVector
以矩阵表示的多元线性回归的 beta 值计算。protected abstract RealMatrix
以矩阵表示的多元线性回归的 beta 方差计算。protected double
计算误差项的方差。protected RealVector
以矩阵表示的多元线性回归的残差计算。protected double
计算 y 值的方差。double
估计误差的方差。double
返回被解释变量的方差,即 Var(y)。double[]
估计回归参数 b。double[]
返回回归参数的标准误差。double[][]
估计回归参数的方差,即 Var(b)。double
估计回归的标准误差。double[]
估计残差,即 u = y - X*b。protected RealMatrix
getX()
获取 X 样本数据。protected RealVector
getY()
获取 Y 样本数据。boolean
检查模型是否没有截距项。void
newSampleData
(double[] data, int nobs, int nvars) 从一个扁平输入数组加载模型 x 和 y 样本数据,覆盖任何先前的样本。protected void
newXSampleData
(double[][] x) 加载新的 x 样本数据,覆盖任何先前的数据。protected void
newYSampleData
(double[] y) 加载新的 y 样本数据,覆盖任何先前的数据。void
setNoIntercept
(boolean noIntercept) 设置截距标志。protected void
validateCovarianceData
(double[][] x, double[][] covariance) 验证 x 数据和协方差矩阵具有相同的行数,并且协方差矩阵是方阵。protected void
validateSampleData
(double[][] x, double[] y) 验证样本数据。
-
构造器详细资料
-
AbstractMultipleLinearRegression
public AbstractMultipleLinearRegression()空构造函数。这个构造函数并非绝对必要,但它可以防止在 JDK 18 及更高版本中出现虚假的 javadoc 警告。
- 从以下版本开始:
- 3.0
-
-
方法详细资料
-
getX
获取 X 样本数据。- 返回:
- X 样本数据。
-
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 = 3
且nvars = 2
,创建一个包含两个自变量的回归数据集,如下所示:y x[0] x[1] -------------- 1 2 3 4 5 6 7 8 9
请注意,当指定包含截距项的模型时,无需添加初始单位列(全为 1 的列)。如果
isNoIntercept()
为true
,则 X 矩阵将创建为没有初始列 "1";否则将添加此列。如果以下任一先决条件失败,则抛出 IllegalArgumentException:
data
不能为 nulldata.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
验证样本数据。检查:
- x 和 y 均不为 null 或空;
- x 的长度(即行数)等于 y 的长度
- x 的行数至少比列数多一个(即有足够的数据来估计每个 x 列的回归系数以及一个截距项)。
- 参数:
-
x
- 表示 x 数据的 [n,k] 数组 -
y
- 表示 y 数据的 [n,1] 数组 - 抛出:
-
NullArgumentException
- 如果x
或y
为 null -
MathIllegalArgumentException
- 如果x
和y
长度不相等 -
MathIllegalArgumentException
- 如果x
或y
长度为零 -
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
以矩阵表示的多元线性回归的 beta 值。- 返回:
- beta
-
calculateBetaVariance
以矩阵表示的多元线性回归的 beta 方差。- 返回:
- beta 方差
-
calculateYVariance
protected double calculateYVariance()计算 y 值的方差。- 返回:
- Y 方差
-
calculateErrorVariance
protected double calculateErrorVariance()计算误差项的方差。
使用公式var(u) = u · u / (n - k)
其中 n 和 k 分别是设计矩阵 X 的行和列维度。- 返回:
- 误差方差的估计
-
calculateResiduals
以矩阵表示的多元线性回归的残差。u = y - X * b
- 返回:
- 残差的 [n,1] 矩阵
-