类 OLSMultipleLinearRegression
- 所有已实现的接口:
-
MultipleLinearRegression
实现普通最小二乘法(OLS)以估计多元线性回归模型的参数。
回归系数 b
满足正规方程:
XT X b = XT y
为了解正规方程,此实现使用 X
矩阵的QR分解。(有关分解算法的详细信息,请参见 QRDecomposition
。)矩阵 X
,也称为设计矩阵,其行对应于样本观测值,列对应于自变量。当使用截距项估计模型时(即当 isNoIntercept
为false时,默认情况下),矩阵 X
包括一个初始列,其值完全等于1。我们按以下方式解决正规方程:
XTX b = XT y
(QR)T (QR) b = (QR)Ty
RT (QTQ) R b = RT QT y
RT R b = RT QT y
(RT)-1 RT R b = (RT)-1 RT QT y
R b = QT y
给定 Q
和 R
,最后一个方程通过回代求解。
-
构造器概要
构造器说明创建一个空的 OLSMultipleLinearRegression 实例。OLSMultipleLinearRegression
(double threshold) 创建一个空的 OLSMultipleLinearRegression 实例,使用给定的奇异阈值进行QR分解。 -
方法概要
修饰符和类型方法说明double
protected RealVector
使用OLS计算回归系数。protected RealMatrix
计算回归参数的方差-协方差矩阵。计算“帽子”矩阵。double
返回残差平方和。double
double
返回Y值与其均值的平方偏差和。void
newSampleData
(double[] y, double[][] x) 加载模型的x和y样本数据,覆盖任何先前的样本。void
newSampleData
(double[] data, int nobs, int nvars) 从平面输入数组加载模型的x和y样本数据,覆盖任何先前的样本。protected void
newXSampleData
(double[][] x) 加载新的x样本数据,覆盖任何先前的数据。从类继承的方法 org.hipparchus.stat.regression.AbstractMultipleLinearRegression
calculateErrorVariance, calculateResiduals, calculateYVariance, estimateErrorVariance, estimateRegressandVariance, estimateRegressionParameters, estimateRegressionParametersStandardErrors, estimateRegressionParametersVariance, estimateRegressionStandardError, estimateResiduals, getX, getY, isNoIntercept, newYSampleData, setNoIntercept, validateCovarianceData, validateSampleData
-
构造器详细资料
-
OLSMultipleLinearRegression
public OLSMultipleLinearRegression()创建一个空的 OLSMultipleLinearRegression 实例。 -
OLSMultipleLinearRegression
public OLSMultipleLinearRegression(double threshold) 创建一个空的 OLSMultipleLinearRegression 实例,使用给定的奇异阈值进行QR分解。- 参数:
-
threshold
- 奇异阈值
-
-
方法详细资料
-
newSampleData
加载模型的x和y样本数据,覆盖任何先前的样本。计算并缓存X矩阵的QR分解。- 参数:
-
y
- 表示y样本的 [n,1] 数组 -
x
- 表示x样本的 [n,k] 数组 - 抛出:
-
MathIllegalArgumentException
- 如果x和y数组数据与回归不兼容
-
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的列)。如果
AbstractMultipleLinearRegression.isNoIntercept()
为true
,则X矩阵将创建为不包含初始列的“1”;否则将添加此列。如果以下任何前提条件失败,将抛出IllegalArgumentException:
data
不能为nulldata.length = nobs * (nvars + 1)
nobs > nvars
此实现计算并缓存X矩阵的QR分解。
- 覆盖:
-
newSampleData
在类中AbstractMultipleLinearRegression
- 参数:
-
data
- 输入数据数组 -
nobs
- 观测值数量(行数) -
nvars
- 自变量数量(列数,不包括y)
-
calculateHat
计算“帽子”矩阵。
帽子矩阵是通过设计矩阵X定义的,公式为 X(XTX)-1XT
此处的实现使用QR分解来计算帽子矩阵,如 Q IpQT,其中 Ip 是p维单位矩阵,附加了0。这个计算公式来自于“回归和ANOVA中的帽子矩阵”,David C. Hoaglin 和 Roy E. Welsch,The American Statistician,Vol. 32, No. 1 (Feb., 1978),pp. 17-22。
在调用此方法之前,模型的数据必须使用其中一个
newSampleData
方法成功加载;否则将抛出NullPointerException
。- 返回:
- 帽子矩阵
- 抛出:
-
NullPointerException
- 除非先调用了方法newSampleData
。
-
calculateTotalSumOfSquares
public double calculateTotalSumOfSquares()- 返回:
- SSTO - 总平方和
- 抛出:
-
NullPointerException
- 如果样本未设置 - 另请参阅:
-
calculateResidualSumOfSquares
public double calculateResidualSumOfSquares()返回残差平方和。- 返回:
- 残差平方和
- 抛出:
-
MathIllegalArgumentException
- 如果设计矩阵是奇异的 -
NullPointerException
- 如果模型的数据尚未加载
-
calculateRSquared
public double calculateRSquared()返回R平方统计量,由公式 \(R^2 = 1 - \frac{\mathrm{SSR}}{\mathrm{SSTO}}\) 定义,其中SSR是残差平方和
,SSTO是总平方和
如果y中没有方差,即SSTO = 0,则返回NaN。
- 返回:
- R平方统计量
- 抛出:
-
NullPointerException
- 如果样本尚未设置 -
MathIllegalArgumentException
- 如果设计矩阵是奇异的
-
calculateAdjustedRSquared
public double calculateAdjustedRSquared()返回调整后的R平方统计量,定义为公式 \(R_\mathrm{adj}^2 = 1 - \frac{\mathrm{SSR} (n - 1)}{\mathrm{SSTO} (n - p)}\),其中SSR是
残差平方和
,SSTO是总平方和
,n是观测值的数量,p是估计的参数数量(包括截距)。如果回归是在没有截距项的情况下估计的,则返回的值为
1 - (1 -
calculateRSquared()
) * (n / (n - p))如果y中没有方差,即SSTO = 0,则返回NaN。
- 返回:
- 调整后的R平方统计量
- 抛出:
-
NullPointerException
- 如果样本尚未设置 -
MathIllegalArgumentException
- 如果设计矩阵是奇异的 - 另请参阅:
-
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矩阵的QR分解。
- 覆盖:
-
newXSampleData
在类中AbstractMultipleLinearRegression
- 参数:
-
x
- 表示x样本的矩形数组
-
calculateBeta
计算OLS使用的回归系数。在调用此方法之前,必须使用
newSampleData
方法之一成功加载模型的数据;否则将抛出NullPointerException
。- 指定者:
-
calculateBeta
在类中AbstractMultipleLinearRegression
- 返回:
- beta
- 抛出:
-
MathIllegalArgumentException
- 如果设计矩阵是奇异的 -
NullPointerException
- 如果尚未加载模型的数据
-
calculateBetaVariance
计算回归参数的方差-协方差矩阵。
Var(b) = (XTX)-1
使用QR分解将(XTX)-1减少为(RTR)-1,只包括R的前p行,其中p = beta向量的长度。
在调用此方法之前,必须使用
newSampleData
方法之一成功加载模型的数据;否则将抛出NullPointerException
。- 指定者:
-
calculateBetaVariance
在类中AbstractMultipleLinearRegression
- 返回:
- beta方差-协方差矩阵
- 抛出:
-
MathIllegalArgumentException
- 如果设计矩阵是奇异的 -
NullPointerException
- 如果尚未加载模型的数据
-