类 SimpleRegression
- 所有已实现的接口:
-
Serializable
,UpdatingMultipleLinearRegression
y = intercept + slope * x
intercept
和slope
的标准误差以及ANOVA、r-square和Pearson's r统计数据也可用。
观测值(x,y对)可以逐个添加到模型中,也可以以二维数组的形式提供。观测值不会存储在内存中,因此可以向模型添加的观测值数量没有限制。
* 使用说明:
- 当模型中观测值少于两个或x值没有变化(即所有x值相同)时,所有统计数据都将返回
NaN
。至少需要两个具有不同x坐标的观测值才能估计双变量回归模型。 - 统计数据的获取器始终基于当前观测值集合计算数值--也就是说,您可以获取统计数据,然后添加更多数据并获取更新的统计数据,而无需使用新实例。没有更新所有统计数据的"计算"方法。每个获取器执行必要的计算以返回请求的统计数据。
- 通过将
false
传递给SimpleRegression(boolean)
构造函数,可以抑制截距项。当hasIntercept
属性为false时,模型将在没有常数项的情况下估计,并且getIntercept()
返回0
。
- 另请参阅:
-
构造器概要
构造器说明创建一个空的SimpleRegression实例SimpleRegression
(boolean includeIntercept) 创建一个SimpleRegression实例,指定是否估计截距。 -
方法概要
修饰符和类型方法说明void
addData
(double[][] data) 添加由data
中的元素表示的观测值。void
addData
(double x, double y) 将观测值(x,y)添加到回归数据集中。void
addObservation
(double[] x, double y) 向回归模型添加一个观测值。void
addObservations
(double[][] x, double[] y) 向回归模型添加一系列观测值。void
append
(SimpleRegression reg) 将另一个回归计算的数据附加到此回归计算中。void
clear()
清除模型中的所有数据。double
返回估计回归线的截距,如果hasIntercept()
为true;否则返回0。double
返回截距估计的标准误差,通常表示为s(b0)。double
返回平方误差除以自由度的总和,通常缩写为MSE。long
getN()
返回已添加到模型中的观测值数量。double
getR()
返回皮尔逊积矩相关系数,通常表示为r。double
返回预测y值关于其均值的平方偏差的总和。double
返回判定系数,通常表示为r-square。double
返回斜率(equiv)相关的显著性水平。double
getSlope()
返回估计回归线的斜率。double
返回斜率估计的95%置信区间的半宽度。double
getSlopeConfidenceInterval
(double alpha) 返回斜率估计的(100-100*alpha)%置信区间的半宽度。double
返回斜率估计的标准误差,通常表示为s(b1)。double
返回交叉乘积的总和,xi*yi。double
返回与回归模型相关的平方误差总和(SSE)。double
返回y值关于其均值的平方偏差的总和。double
返回x值关于其均值的平方偏差的总和。boolean
如果模型包括截距项,则返回true。double
predict
(double x) 返回与提供的x
值相关联的"预测"y
值,基于添加到模型中的数据当激活此方法时。regress()
对缓冲区中存在的数据执行回归,并输出一个RegressionResults对象。regress
(int[] variablesToInclude) 对缓冲区中存在的数据执行回归,仅包括在variablesToInclude中索引的回归变量,并输出一个RegressionResults对象。void
removeData
(double[][] data) 删除由data
中的元素表示的观测值。void
removeData
(double x, double y) 从回归数据集中删除观测值(x,y)。
-
构造器详细资料
-
SimpleRegression
public SimpleRegression()创建一个空的SimpleRegression实例 -
SimpleRegression
public SimpleRegression(boolean includeIntercept) 创建一个SimpleRegression实例,指定是否估计截距。使用
false
估计没有截距的模型。当hasIntercept
属性为false时,模型将在没有常数项的情况下估计,并且getIntercept()
返回0
。- 参数:
-
includeIntercept
- 是否在回归模型中包括截距项
-
-
方法详细资料
-
addData
public void addData(double x, double y) 将观测值(x,y)添加到回归数据集中。使用"用于计算样本方差的算法:分析和建议"中定义的均值和平方和的更新公式,Chan, T.F., Golub, G.H., and LeVeque, R.J. 1983, American Statistician, vol. 37, pp. 242-247, Weisberg, S. "Applied Linear Regression". 2nd Ed. 1985中引用。
- 参数:
-
x
- 自变量值 -
y
- 因变量值
-
append
将另一个回归计算的数据附加到此回归计算中。均值更新公式基于Philippe Pébay撰写的一篇论文:用于计算协方差和任意阶统计矩的稳健、一次并行计算的公式,2008年,技术报告SAND2008-6212,Sandia国家实验室。
- 参数:
-
reg
- 要附加数据的模型
-
removeData
public void removeData(double x, double y) 从回归数据集中删除观测值(x,y)。与addData方法相反。此方法允许在流模式下使用SimpleRegression实例,其中回归应用于滑动的观测值"窗口",但调用方负责维护窗口中的观测值集合。
如果没有数据点(即n=0),该方法不起作用。- 参数:
-
x
- 自变量值 -
y
- 因变量值
-
addData
添加由data
中的元素表示的观测值。(data[0][0],data[0][1])
将是第一个观测值,然后是(data[1][0],data[1][1])
,依此类推。此方法不会替换已添加的数据。由
data
表示的观测值将添加到现有数据集中。要替换所有数据,请在添加新数据之前使用
clear()
。- 参数:
-
data
- 要添加的观测值数组 - 抛出:
-
MathIllegalArgumentException
- 如果data[i]
的长度小于或等于2
-
addObservation
向回归模型添加一个观测值。- 指定者:
-
addObservation
在接口中UpdatingMultipleLinearRegression
- 参数:
-
x
- 构成设计矩阵的自变量 -
y
- 因变量或响应变量 - 抛出:
-
MathIllegalArgumentException
- 如果x
的长度与模型中的自变量数量不相等
-
addObservations
向回归模型中添加一系列观测。x和y的长度必须相同,x必须是矩形的。- 指定者:
-
addObservations
在接口中UpdatingMultipleLinearRegression
- 参数:
-
x
- 自变量的一系列观测 -
y
- 因变量的一系列观测 x和y的长度必须相同 - 抛出:
-
MathIllegalArgumentException
- 如果x
不是矩形的,与y
的长度不匹配,或者不包含足够的数据来估计模型
-
removeData
public void removeData(double[][] data) 删除由data
中的元素表示的观测。如果数组大于当前n,则只处理前n个元素。此方法允许在流模式下使用SimpleRegression实例,其中回归应用于滑动的观测“窗口”,但调用方负责维护窗口中的观测集。
要删除所有数据,请使用
clear()
。- 参数:
-
data
- 要删除的观测数组
-
clear
public void clear()清除模型中的所有数据。- 指定者:
-
clear
在接口中UpdatingMultipleLinearRegression
-
getN
public long getN()返回已添加到模型中的观测数量。- 指定者:
-
getN
在接口中UpdatingMultipleLinearRegression
- 返回:
- 已添加的观测数量
-
predict
public double predict(double x) 返回与提供的x
值相关联的“预测”y
值,基于在激活此方法时添加到模型的数据。predict(x) = intercept + slope * x
* 前提条件:
- 在调用此方法之前,必须添加至少两个观测(至少具有两个不同的x值)。如果在可以估计模型之前调用此方法,则返回
Double,NaN
。
- 参数:
-
x
- 输入x
值 - 返回:
-
预测的
y
值
- 在调用此方法之前,必须添加至少两个观测(至少具有两个不同的x值)。如果在可以估计模型之前调用此方法,则返回
-
getIntercept
public double getIntercept()返回估计回归线的截距,如果hasIntercept()
为true;否则为0。使用正规方程计算截距的最小二乘估计。截距有时表示为b0。
前提条件:
- 在调用此方法之前,必须添加至少两个观测(至少具有两个不同的x值)。如果在可以估计模型之前调用此方法,则返回
Double,NaN
。
- 返回:
- 如果模型包括截距,则返回回归线的截距;否则返回0
- 另请参阅:
- 在调用此方法之前,必须添加至少两个观测(至少具有两个不同的x值)。如果在可以估计模型之前调用此方法,则返回
-
hasIntercept
public boolean hasIntercept()如果模型包括截距项,则返回true。- 指定者:
-
hasIntercept
在接口中UpdatingMultipleLinearRegression
- 返回:
- 如果回归包括截距,则返回true;否则返回false
- 另请参阅:
-
getSlope
public double getSlope()返回估计回归线的斜率。使用正规方程计算斜率的最小二乘估计。斜率有时表示为b1。
* 前提条件:
- 在调用此方法之前,必须添加至少两个观测(至少具有两个不同的x值)。如果在可以估计模型之前调用此方法,则返回
Double.NaN
。
- 返回:
- 回归线的斜率
- 在调用此方法之前,必须添加至少两个观测(至少具有两个不同的x值)。如果在可以估计模型之前调用此方法,则返回
-
getSumSquaredErrors
public double getSumSquaredErrors()返回与回归模型相关联的平方误差和(SSE)。使用计算公式计算总和
SSE = SYY - (SXY * SXY / SXX)
其中
SYY
是y值关于其均值的平方偏差的总和,SXX
类似定义,SXY
是x和y均值偏差的乘积总和。使用
addData(double, double)
中引用的更新算法累积总和。返回值受限于非负 - 即,如果由于舍入误差计算公式返回负结果,则返回0。
* 前提条件:
- 在调用此方法之前,必须添加至少两个观测(至少具有两个不同的x值)。如果在可以估计模型之前调用此方法,则返回
Double,NaN
。
- 返回:
- 与回归模型相关联的平方误差和
- 在调用此方法之前,必须添加至少两个观测(至少具有两个不同的x值)。如果在可以估计模型之前调用此方法,则返回
-
getTotalSumSquares
public double getTotalSumSquares()返回y值关于其均值的平方偏差和。在这里定义。
如果
n < 2
,则返回Double.NaN
。- 返回:
- y值的平方偏差和
-
getXSumSquares
public double getXSumSquares()返回x值关于其均值的平方偏差和。如果
n < 2
,则返回Double.NaN
。- 返回:
- x值的平方偏差和
-
getSumOfCrossProducts
public double getSumOfCrossProducts()返回交叉乘积的总和,xi*yi。- 返回:
- 交叉乘积的总和
-
getRegressionSumSquares
public double getRegressionSumSquares()返回预测y值关于其均值(等于y的均值)的平方偏差和。通常缩写为SSR或SSM。在这里定义
* 前提条件:
- 在调用此方法之前,必须添加至少两个观测(至少具有两个不同的x值)。如果在可以估计模型之前调用此方法,则返回
Double.NaN
。
- 返回:
- 预测y值的平方偏差和
- 在调用此方法之前,必须添加至少两个观测(至少具有两个不同的x值)。如果在可以估计模型之前调用此方法,则返回
-
getMeanSquareError
public double getMeanSquareError()返回平方误差和除以自由度,通常缩写为MSE的一半宽度。如果模型中的数据对少于三对数据,或者x中没有变化,则返回
Double.NaN
。- 返回:
- y值的平方偏差和
-
getR
public double getR()- 返回:
- 皮尔逊r
-
getRSquare
public double getRSquare()- 返回:
- r-square
-
getInterceptStdErr
public double getInterceptStdErr()返回截距估计的标准误差,通常表示为s(b0)。如果模型中的观测少于三个,或者x中没有变化,则返回
Double.NaN
。此外,当截距被约束为零时,也会返回Double.NaN
。- 返回:
- 与截距估计相关的标准误差
-
getSlopeStdErr
public double getSlopeStdErr()返回斜率估计的标准误差,通常表示为s(b1)。如果模型中的数据对少于三对数据,或者x中没有变化,则返回
Double.NaN
。- 返回:
- 与斜率估计相关的标准误差
-
getSlopeConfidenceInterval
返回斜率估计的95%置信区间的半宽度。95%置信区间为
(getSlope() - getSlopeConfidenceInterval(), getSlope() + getSlopeConfidenceInterval())
如果模型中的数据对少于三对数据,或者x中没有变化,则返回
Double.NaN
。* 使用注意:
此统计量的有效性取决于假设模型中的观测值来自双变量正态分布。
- 返回:
- 斜率估计的95%置信区间的半宽度
- 抛出:
-
MathIllegalArgumentException
- 如果无法计算置信区间。
-
getSlopeConfidenceInterval
返回斜率估计的(100-100*alpha)%置信区间的半宽度。(100-100*alpha)%的置信区间为
(getSlope() - getSlopeConfidenceInterval(), getSlope() + getSlopeConfidenceInterval())
例如,要请求99%的置信区间,请使用
alpha = .01
使用注意:
此统计量的有效性取决于模型中包含的观测值是否来自双变量正态分布。前提条件:
- 如果模型中的观测值少于三个,或者x没有变化,则返回
Double.NaN
。 (0 < alpha < 1)
;否则将抛出MathIllegalArgumentException
。
- 参数:
-
alpha
- 所需的显著水平 - 返回:
- 斜率估计的95%置信区间的半宽度
- 抛出:
-
MathIllegalArgumentException
- 如果无法计算置信区间。
- 如果模型中的观测值少于三个,或者x没有变化,则返回
-
getSignificance
public double getSignificance()返回斜率(equiv)相关性的显著水平。具体来说,返回的值是最小的
alpha
,使得显著水平等于alpha
的斜率置信区间不包括0
。在回归输出中,这通常表示为Prob(|t| > 0)
使用注意:
此统计量的有效性取决于模型中包含的观测值是否来自双变量正态分布。如果模型中的观测值少于三个,或者x没有变化,则返回
Double.NaN
。- 返回:
- 斜率/相关性的显著水平
- 抛出:
-
MathIllegalStateException
- 如果无法计算显著水平。
-
regress
对缓冲区中的数据执行回归,并输出一个RegressionResults对象。如果模型中的观测值少于3个且
hasIntercept
为true,则会抛出MathIllegalArgumentException
。如果没有截距项,则模型必须至少包含2个观测值。- 指定者:
-
regress
在接口中UpdatingMultipleLinearRegression
- 返回:
- RegressionResults充当回归输出的容器
- 抛出:
-
MathIllegalArgumentException
- 如果模型未正确指定 -
MathIllegalArgumentException
- 如果模型中的数据不足以估计回归参数
-
regress
对缓冲区中的数据执行回归,仅包括在variablesToInclude中索引的回归变量,并输出一个RegressionResults对象- 指定者:
-
regress
在接口中UpdatingMultipleLinearRegression
- 参数:
-
variablesToInclude
- 要包括的回归变量的索引数组 - 返回:
- RegressionResults充当回归输出的容器
- 抛出:
-
MathIllegalArgumentException
- 如果variablesToInclude数组为null或长度为零 -
MathIllegalArgumentException
- 如果请求的变量在模型中不存在
-