distNumeric: A pair distance for numerical variables

View source: R/distNumeric.R

distNumericR Documentation

A pair distance for numerical variables

Description

This function computes a pairwise numerical distance between two numerical data sets.

Usage

distNumeric(x, y, method = "mrw", xyequal = TRUE)

Arguments

x

A first data matrix (see Details).

y

A second data matrix (see Details).

method

A method to calculate the pairwise numerical distance (see Details).

xyequal

A logical if x is equal to y (see Details).

Details

The x and y arguments have to be matrices with the same number of columns where the row indicates the object and the column is the variable. This function calculate all pairwise distance between rows in the x and y matrices. Although it calculates a pairwise distance between two data sets, the default function computes all distances in the x matrix. If the x matrix is not equal to the y matrix, the xyequal has to be set FALSE.

The method available are mrw (Manhattan weighted by range), sev (squared Euclidean weighted by variance), ser (squared Euclidean weighted by range), ser.2 (squared Euclidean weighted by squared range) and se (squared Euclidean). Their formulas are:

mrw_{ij} = ∑_{r=1}^{p_n} \frac{|x_{ir} - x_{jr}|}{R_r}

sev_{ij} = ∑_{r=1}^{p_n} \frac{(x_{ir} - x_{jr})^2}{s_r^2}

ser_{ij} = ∑_{r=1}^{p_n} \frac{(x_{ir} - x_{jr})^2}{ R_r }

ser.2_{ij} = ∑_{r=1}^{p_n} \frac{(x_{ir} - x_{jr})^2}{ R_r^2 }

se_{ij} = ∑_{r=1}^{p_n} (x_{ir} - x_{jr})^2

where p_n is the number of numerical variables, R_r is the range of the r-th variables, s_r^2 is the variance of the r-th variables.

Value

Function returns a distance matrix with the number of rows equal to the number of objects in the x matrix (n_x) and the number of columns equals to the number of objects in the y matrix (n_y).

Author(s)

Weksi Budiaji
Contact: budiaji@untirta.ac.id

Examples

num <- as.matrix(iris[,1:4])
mrwdist <- distNumeric(num, num, method = "mrw")
mrwdist[1:6,1:6]


kmed documentation built on Aug. 29, 2022, 9:06 a.m.