transform: Transform incidences

transformR Documentation

Transform incidences

Description

Carry out transformations between incidence matrices from endorelations and other codings.

Usage

transform_incidences(x, from = c("PO", "SO", "01", "-1+1"),
                        to = c("PO", "SO", "01", "-1+1"))

Arguments

x

An incidence matrix from an endorelation.

from, to

The coding scheme (see Details).

Details

In the following, we consider an incidence matrix X with cells x_{jk} of a relation R with tuples (a_j, b_k).

For the "PO" (“Preference Order”) coding, X is a 0/1 matrix, and a_j R b_k iff x_{jk} = 1. It follows in particular that if both x_{jk} and x_{kj} are 0, the corresponding pair (a_j, b_k) is not contained in R, i.e., a_j and b_k are unrelated.

For the "SO" (“"Strict Order"”) coding, X is a 0/1 matrix with possible NA values. As for "PO", a_j R b_k iff x_{jk} = 1, but at most one of x_{jk} and x_{kj} can be 1. If both are missing (NA), a_j and b_k are unrelated.

For the "01" coding, X is a matrix with values 0, 1, or 0.5. The coding is similar to "SO", except that NA is represented by 0.5.

For the "-1+1" coding, X is a matrix with values -1, 0, or 1. The coding is similar to "SO", except that NA is represented by 0, and x_{jk} = -1 if not a_j R b_k.

See Also

relation_incidence().

Examples

require("sets")				# set(), pair() etc.
x <- relation(domain = c(1,2,3,4),
              graph = set(pair(1,2), pair(4,2), pair(1,3), pair(1,4),
                          pair(3,2), pair(2,1)))
inc <- relation_incidence(x)
print(inc)

transform_incidences(inc, to = "SO")
transform_incidences(inc, to = "01")
transform_incidences(inc, to = "-1+1")

## transformations should be loss-free:
inc2 <- transform_incidences(inc, from = "PO", to = "-1+1")
inc2 <- transform_incidences(inc2, from = "-1+1", to = "SO")
inc2 <- transform_incidences(inc2, from = "SO", to = "01")
inc2 <- transform_incidences(inc2, from = "01", to = "PO")
stopifnot(identical(inc, inc2))

relations documentation built on March 7, 2023, 8:01 p.m.