transport_df.numeric {gridOT}R Documentation

Optimal Transport Plan

Description

Calculate the optimal transport plan.

Usage

## S3 method for class 'numeric'
transport_df(x, y, threshold = 1e-15, ...)

transport_df(x, ...)

## S3 method for class 'otgridtransport'
transport_df(x, ...)

## S3 method for class 'otgrid'
transport_df(x, ...)

Arguments

x

a vector of weights, an object of class "otgridtransport" or "otgrid", in the latter case ... must be the arguments of pivot_measure.

y

second weight vector.

threshold

small value that indicates when a value is considered to be zero.

...

further arguments (for pivot_measure if x is an object of class "otgrid").

Details

In case of two-dimensional grids, the pivot measure is used to calculate the optimal transport plan.

For one-dimensional optimal transport, we assume that the optimal transport plan is the monotone plan. For example, this is the case for costs of the form c(x, y) = | x - y |^p for some p \geq 1. In this case, the north-west-corner algorithm is used.

Value

a data frame representing the optimal transport plan. It has columns from, to and mass that specify between which points of the two grids how much mass is transported.

In the two-dimensional case, a point is given by the index in column-mayor format and the data frame is actually stored in the element df of an object of class "otgridtransport".

See Also

pivot measure pivot_measure

Examples

## one-dimensional example
set.seed(1)
wa <- rep(1/5, 5)
wb <- runif(6)
wb <- wb / sum(wb)
transport_df(wa, wb)

## two-dimensional example
x <- otgrid(cbind(0:1, 1:0))
y <- otgrid(cbind(1:0, 0:1))

# first calculate pivot manually
pm <- pivot_measure(x, y)
pm <- transport_df(pm)

# or just
pm2 <- transport_df(x, y)

[Package gridOT version 1.0.1 Index]