# Inclusion test

### Description

Determines if a set of points are within a hypervolume.

### Usage

1 2 | ```
hypervolume_inclusion_test(hv, points, reduction_factor = 1,
verbose = T, distance_factor = 1)
``` |

### Arguments

`hv` |
n-dimensional hypervolume to compare against |

`points` |
Candidate points. A m x n matrix or dataframe, where m is the number of candidate points and n is the number of dimensions. |

`reduction_factor` |
A number in (0,1] that represents the fraction of random points sampled from the hypervolume for the stochastic inclusion test. Larger values are more accurate but computationally slower. |

`verbose` |
Logical value; print diagnostic output if true. |

`distance_factor` |
Numeric value; multiplicative factor applied to the critical distance for all inclusion tests (see below). Recommended to not change this parameter. |

### Details

Tests if a point is in a hypervolume by determining if it is within a characteristic distance of at least one point from a uniformly random sample of the hypervolume. Because this algorithm is based on distances calculated between the distributions of random points, the critical distance (point density ^ (-1/n)) can be scaled by a user-specified factor to provide more or less liberal estimates (`distance_factor`

greater than or less than 1).

### Value

A m x 1 logical vector indicating whether each candidate point is in the hypervolume.

### Examples

1 2 3 4 5 6 | ```
# construct a hypervolume of points in the unit square [0,1] x [0,1]
data = data.frame(x=runif(100,min=0,max=1), y=runif(100,min=0,max=1))
hv = hypervolume(data, reps=1000, bandwidth=0.1)
# test if (0.5,0.5) and (-1,1) are in - should return TRUE FALSE
hypervolume_inclusion_test(hv, points=data.frame(x=c(0.5,-1),y=c(0.5,-1)))
``` |