Package 'UniIsoRegression'

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

Help Index


Isotonic and Unimodal Regression on 1D input.

Description

Isotonic and unimodal regression on weighted or unweighted 1D input with L1, L2 and Linf metric and other options.

Usage

reg_1d(y_vec, w_vec, metric, unimodal = FALSE, decreasing = FALSE)

Arguments

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.

Details

See the paper about unimodal regression via prefix isotonic regression in the reference.

Value

A vector of the regression result which has the same size of y_vec.

Error Messages

  • 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

Author(s)

Zhipeng Xu, Chenkai Sun, Aman Karunakaran, Quentin Stout [email protected] https://github.com/xzp1995/UniIsoRegression

References

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

Examples

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 2D input.

Description

Isotonic regression on weighted or unweighted 2D input with L1, L2 metric and other options.

Usage

reg_2d(y_vec, w_vec, metric)

Arguments

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

Details

See the paper about 2D regression in the reference.

Value

A 2D NumericMatrix of the regression result which has the same size of y_vec.

Error Messages

  • 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

Author(s)

Zhipeng Xu, Chenkai Sun, Aman Karunakaran, Quentin Stout [email protected] https://github.com/xzp1995/UniIsoRegression

References

Q.F. Stout, Isotonic median regression via partitioning, Algorithmica 66 (2013), pp. 93-112 doi.org/10.1007/s00453-012-9628-4

Examples

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)