bvls
语法
bvls(Y, X, bounds, [maxIter], [tolerance=1e-10],
[intercept=true], [mode=0])
参数
Y 是一个数值型向量,表示因变量。
X 是一个数值型向量、元组、矩阵或表,表示自变量。X 是矩阵时:
- 如果行数等于 Y 的长度,X 的每一列都是一个因子。
- 如果行数不等于 Y 的长度,并且如果列数等于 Y 的长度,X 的每一行都是一个因子。
注意:X 与 Y中的值会转为 DOUBLE 后进行运算,转换后的空值将被视为 0。
bounds 包含两个元素的元组,分别定义下界(lb)和上界(ub)。元组的元素可以是:
- 标量:为所有因子指定相同的边界值。
- 向量:向量长度等于因子数,分别为每个因子指定边界值。
maxIter 可选参数,正整数,表示最大迭代次数。如未定义,默认为变量的数量。
tolerance 可选参数,DOUBLE 类型,表示允许的误差,默认值为 1e-10 。如果相邻两次迭代的损失函数值的差值小于 tolerance,或在 tolerance 误差下满足 Karush-Kuhn-Tucker 条件时,停止迭代。
intercept 可选参数,布尔值,表示是否在回归中包含截距。默认为 true。为 true 时,系统自动给 X 添加一列 1 以生成截距。
mode 可选参数,表示输出模式。目前仅支持 0 (默认),表示返回系数估计向量。
详情
执行有界变量最小二乘法(Bounded-Variable Least-Square)。
返回值:DOUBLE 向量,表示回归系数估计值。
例子
x1 = [1, 3, 5, 7, 11, 16, 23]
x2 = [2, 8, 11, 34, 56, 54, 100]
y = [0.1, 4.2, 5.6, 8.8, 22.1, 35.6, 77.2]
bounds = (0.0, 10.0)
bvls(y, x1, bounds)
// output: [0,2.717777777777778]
bvls(y, (x1, x2), bounds)
// output: [0,1.409643685501234,0.315943584131198]
相关函数:ols