sNN {dbscan}  R Documentation 
Calculates the number of shared nearest neighbors, the shared nearest neighbor similarity and creates a shared nearest neighbors graph.
sNN(
x,
k,
kt = NULL,
jp = FALSE,
sort = TRUE,
search = "kdtree",
bucketSize = 10,
splitRule = "suggest",
approx = 0
)
## S3 method for class 'sNN'
sort(x, decreasing = TRUE, ...)
## S3 method for class 'sNN'
print(x, ...)
x 

k 
number of neighbors to consider to calculate the shared nearest neighbors. 
kt 
minimum threshold on the number of shared nearest neighbors to
build the shared nearest neighbor graph. Edges are only preserved if

jp 
use the definition by Javis and Patrick (1973), where shared
neighbors are only counted between points that are in each other's
neighborhood, otherwise 0 is returned. If 
sort 
sort by the number of shared nearest neighbors? Note that this
is expensive and 
search 
nearest neighbor search strategy (one of 
bucketSize 
max size of the kdtree leafs. 
splitRule 
rule to split the kdtree. One of 
approx 
use approximate nearest neighbors. All NN up to a distance of
a factor of 
decreasing 
logical; sort in decreasing order? 
... 
additional parameters are passed on. 
The number of shared nearest neighbors is the intersection of the kNN
neighborhood of two points. Note: that each point is considered to be part
of its own kNN neighborhood. The range for the shared nearest neighbors is
[0, k]
.
Javis and Patrick (1973) use the shared nearest neighbor graph for clustering. They only count shared neighbors between points that are in each other's kNN neighborhood.
An object of class sNN
(subclass of kNN and NN) containing a list
with the following components:
id 
a matrix with ids. 
dist 
a matrix with the distances. 
shared 
a matrix with the number of shared nearest neighbors. 
k 
number of 
Michael Hahsler
R. A. Jarvis and E. A. Patrick. 1973. Clustering Using a Similarity Measure Based on Shared Near Neighbors. IEEE Trans. Comput. 22, 11 (November 1973), 10251034. doi:10.1109/TC.1973.223640
Other NN functions:
NN
,
comps()
,
frNN()
,
kNNdist()
,
kNN()
data(iris)
x < iris[, 5]
# finding kNN and add the number of shared nearest neighbors.
k < 5
nn < sNN(x, k = k)
nn
# shared nearest neighbor distribution
table(as.vector(nn$shared))
# explore neighborhood of point 10
i < 10
nn$shared[i,]
plot(nn, x)
# apply a threshold to create a sNN graph with edges
# if more than 3 neighbors are shared.
nn_3 < sNN(nn, kt = 3)
plot(nn_3, x)
# get an adjacency list for the shared nearest neighbor graph
adjacencylist(nn_3)