Pinhull: Point in hull

View source: R/pinhull.r

PinhullR Documentation

Point in hull

Description

For each observation, returns if it is within a polygon

Usage


Pinhull(pts, ppts)

Arguments

pts

Data points, 2-dimensional

ppts

List with polygon information (e.g., output from Hulls() or Ellipses())

Details

For each 'pts' observation, Pinhull() uses PBSmapping::findPolys() to find if it is within (or on the border) of each polygon described in 'ppts'.

The output or Pinhull is easy to use to calculate the "observation overlap", it also allows to reveal "outliers" (points outside all polygons) and all polygon membership features (e.g., which points belong to more than one polygon).

Value

Logical matrix, each column is the hull (polygon) name, rows correspond with rows of data points.

Author(s)

Alexey Shipunov

See Also

Hulls, Ellipses, Overlap

Examples


iris.p <- prcomp(iris[, -5])$x[, 1:2]
iris.h <- Hulls(iris.p, iris$Species, plot=FALSE)
iris.e <- Ellipses(iris.p, iris$Species, plot=FALSE)

## convex hulls
iris.pih <- Pinhull(iris.p, iris.h)

## confidence ellipses
iris.pie <- Pinhull(iris.p, iris.e)
## membership overlap
dist(t(iris.pie), method="binary")
## how to find outliers (points outside of all ellipses)
which(apply(iris.pie, 1, sum) == 0) # outliers
## how to make membership table
iris.pie.g <- cbind(iris.pie, group=Alldups(iris.pie, groups=TRUE))
key <- iris.pie.g[!duplicated(iris.pie), ]
key <- key[order(key[, "group"]), ]
mem <- aggregate(1:nrow(iris.p), list(group=iris.pie.g[, "group"]), paste0, collapse=", ")
mem <- cbind(key, mem)
mem[, mem %-% "group"] # all memberships

## distance based on membership intersection, Overlap() analog
dist(t(iris.pie), method="binary") # asymmetric binary
SM.dist(t(iris.pie)) # symmetric binary

## uniqueness of species
lapply(1:3, function(.x) sum(rowSums(iris.pie[as.numeric(iris$Species) == .x,
 ]) > 1)/table(iris$Species)[.x]) ## versicolor is least unique


shipunov documentation built on Feb. 16, 2023, 9:05 p.m.

Related to Pinhull in shipunov...