Title: | Unimodal and Isotonic L1, L2 and Linf Regression |
---|---|
Description: | Perform L1 or L2 isotonic and unimodal regression on 1D weighted or unweighted input vector and isotonic regression on 2D weighted or unweighted input vector. It also performs L infinity isotonic and unimodal regression on 1D unweighted input vector. Reference: Quentin F. Stout (2008) <doi:10.1016/j.csda.2008.08.005>. Spouge, J., Wan, H. & Wilbur, W.(2003) <doi:10.1023/A:1023901806339>. Q.F. Stout (2013) <doi:10.1007/s00453-012-9628-4>. |
Authors: | Zhipeng Xu <[email protected]>, Chenkai Sun <[email protected]>, Aman Karunakaran <[email protected]>, Quentin Stout<[email protected]> |
Maintainer: | Zhipeng Xu <[email protected]> |
License: | GPL (>= 2) |
Version: | 0.0-0 |
Built: | 2025-02-18 04:25:08 UTC |
Source: | https://github.com/xzp1995/uniisoregression |
Isotonic and unimodal regression on weighted or unweighted 1D input with L1, L2 and Linf metric and other options.
reg_1d(y_vec, w_vec, metric, unimodal = FALSE, decreasing = FALSE)
reg_1d(y_vec, w_vec, metric, unimodal = FALSE, decreasing = FALSE)
y_vec |
The vector of input data that we use to regression. It must be the same size as the w_vec argument. |
w_vec |
The vector of the weight of the input data. The default value is 1 for every entry. It must be the same size as y_vec. It's only avaliable for L1 and L2. |
metric |
This is an integer input, metric = 1 stands for using L1 metric, metric = 2 stands for using L2 metric, metric = 3 stands for using Linf metric. |
unimodal |
This is a boolean input, unimodal = false or 0 stands for isotonic regression and unimodal = true or 1 stands for unimodal regression |
decreasing |
This is a boolean input, decreasing = false or 0 stands for increasing model and decreasing = true or 1 stands for decreasing model. |
See the paper about unimodal regression via prefix isotonic regression in the reference.
A vector of the regression result which has the same size of y_vec.
The size of y_vec is 0: Empty data.
The size of w_vec doesn't match the size of y_vec: Data and weight have different number of entries
The entry of w_vec has negative value: Negative weight detected
Metric input is not in 1,2,3: Metric does not exist
Zhipeng Xu, Chenkai Sun, Aman Karunakaran, Quentin Stout [email protected] https://github.com/xzp1995/UniIsoRegression
Quentin F.Stout; Unimodal Regression via Prefix Isotonic Regression Computational Statistics and Data Analysis 53 (2008), pp. 289-297; Spouge, J., Wan, H. & Wilbur, W. Journal of Optimization Theory and Applications (2003) 117: 585-605 doi.org/10.1023/A:1023901806339
library(UniIsoRegression) #===1d monotonic=== y=c(1,3,6,7,-1) weight=c(1,3,4,9,10) #l_1 metric decreasing temp=UniIsoRegression::reg_1d(y, weight, metric = 1, decreasing = TRUE) print(temp) #l_2 metric unimodel temp=UniIsoRegression::reg_1d(y, weight, metric = 2, unimodal = TRUE) print(temp) #l_infinity metric increasing temp=UniIsoRegression::reg_1d(y, weight, metric = 3) print(temp)
library(UniIsoRegression) #===1d monotonic=== y=c(1,3,6,7,-1) weight=c(1,3,4,9,10) #l_1 metric decreasing temp=UniIsoRegression::reg_1d(y, weight, metric = 1, decreasing = TRUE) print(temp) #l_2 metric unimodel temp=UniIsoRegression::reg_1d(y, weight, metric = 2, unimodal = TRUE) print(temp) #l_infinity metric increasing temp=UniIsoRegression::reg_1d(y, weight, metric = 3) print(temp)
Isotonic regression on weighted or unweighted 2D input with L1, L2 metric and other options.
reg_2d(y_vec, w_vec, metric)
reg_2d(y_vec, w_vec, metric)
y_vec |
The 2D NumericMatrix of input data that we use to regression. It must be the same size as the w_vec argument. |
w_vec |
The 2D NumericMatrix of the weight of the input data. The default value is 1 for every entry. It must be the same size as y_vec. |
metric |
This is an integer input, metric = 1 stands for using L1 metric, metric = 2 stands for using L2 metric |
See the paper about 2D regression in the reference.
A 2D NumericMatrix of the regression result which has the same size of y_vec.
The size of y_vec is 0: Empty data.
The rows of w_vec doesn't match the rows of y_vec: Data and weight have different number of rows
The columns of w_vec doesn't match the rows of y_vec: Data and weight have different number of columns
The entry of w_vec has negative value: Negative weight detected
Metric input is not in 1,2,3: Metric does not exist
Zhipeng Xu, Chenkai Sun, Aman Karunakaran, Quentin Stout [email protected] https://github.com/xzp1995/UniIsoRegression
Q.F. Stout, Isotonic median regression via partitioning, Algorithmica 66 (2013), pp. 93-112 doi.org/10.1007/s00453-012-9628-4
library(UniIsoRegression) #===2d monotonic=== y=matrix(c(2, 4, 3, 1, 5, 7,9,0), nrow=2, ncol=4, byrow = TRUE) weight=matrix(c(1, 10, 3, 9, 5, 7,9,10), nrow=2, ncol=4, byrow = TRUE) #l_1 metric temp=UniIsoRegression::reg_2d(y, weight, metric = 1) print(temp) #l_2 metric temp=UniIsoRegression::reg_2d(y, weight, metric = 2) print(temp)
library(UniIsoRegression) #===2d monotonic=== y=matrix(c(2, 4, 3, 1, 5, 7,9,0), nrow=2, ncol=4, byrow = TRUE) weight=matrix(c(1, 10, 3, 9, 5, 7,9,10), nrow=2, ncol=4, byrow = TRUE) #l_1 metric temp=UniIsoRegression::reg_2d(y, weight, metric = 1) print(temp) #l_2 metric temp=UniIsoRegression::reg_2d(y, weight, metric = 2) print(temp)