## Transformation of a Distance Matrix for becoming Euclidean

### Description

transforms a distance matrix in a Euclidean one.

### Usage

lingoes(distmat, print = FALSE)

### Arguments

 distmat an object of class dist print if TRUE, prints the eigenvalues of the matrix

### Details

The function uses the smaller positive constant k which transforms the matrix of sqrt(dij² + 2*k) in an Euclidean one

### Value

returns an object of class dist with a Euclidean distance

### Author(s)

Daniel Chessel
Stéphane Dray dray@biomserv.univ-lyon1.fr

### References

Lingoes, J.C. (1971) Some boundary conditions for a monotone analysis of symmetric matrices. Psychometrika, 36, 195–203.

### Examples

data(capitales)
d0 <- as.dist(capitales\$df)
is.euclid(d0) # FALSE
d1 <- lingoes(d0, TRUE)
# Lingoes constant = 2120982
is.euclid(d1) # TRUE
plot(d0, d1)
x0 <- sort(unclass(d0))
lines(x0, sqrt(x0^2 + 2 * 2120982), lwd = 3)

is.euclid(sqrt(d0^2 + 2 * 2120981), tol = 1e-10) # FALSE
is.euclid(sqrt(d0^2 + 2 * 2120982), tol = 1e-10) # FALSE
is.euclid(sqrt(d0^2 + 2 * 2120983), tol = 1e-10)
# TRUE the smaller constant

### Worked out examples

> ### Name: lingoes
> ### Title: Transformation of a Distance Matrix for becoming Euclidean
> ### Aliases: lingoes
> ### Keywords: array multivariate
>
> ### ** Examples
>
> data(capitales)
> d0 <- as.dist(capitales\$df)
> is.euclid(d0) # FALSE
[1] FALSE
> d1 <- lingoes(d0, TRUE)
Lingoes constant = 2120982
> # Lingoes constant = 2120982
> is.euclid(d1) # TRUE
[1] TRUE
> plot(d0, d1)
> x0 <- sort(unclass(d0))
> lines(x0, sqrt(x0^2 + 2 * 2120982), lwd = 3)
>
> is.euclid(sqrt(d0^2 + 2 * 2120981), tol = 1e-10) # FALSE
[1] FALSE
> is.euclid(sqrt(d0^2 + 2 * 2120982), tol = 1e-10) # FALSE
[1] FALSE
> is.euclid(sqrt(d0^2 + 2 * 2120983), tol = 1e-10)
[1] TRUE
>     # TRUE the smaller constant
>
>
>
>