generate_exchange_partners {anticlust} | R Documentation |
Get exchange partners for fast_anticlustering()
Description
Get exchange partners for fast_anticlustering()
Usage
generate_exchange_partners(
n_exchange_partners,
N = NULL,
features = NULL,
method = "random",
categories = NULL
)
Arguments
n_exchange_partners |
The number of exchange partners per element |
N |
The number of elements for which exchange partners; can be
|
features |
The features for which nearest neighbours are
sought if |
method |
Currently supports "random" (default), "RANN" and "restricted_random". See details. |
categories |
A vector, data.frame or matrix representing one or several categorical constraints. |
Details
The method = "RANN"
generates exchange partners using a
nearest neighbour search via nn2
from the
RANN
package; methode = "restricted_random"
generates
random exchange partners but ensures that for each element, no
duplicates are generated and that the element itself does not occur
as exchange partner (this is the slowest method, and I would not
recommend it for large N); method = "random"
(default) does
not impose these restrictions and generates unrescricted random
partners (it may therefore generate duplicates and the element
itself as exchange partner).
When setting the categories
argument and using method
= "RANN"
, exchange partners (i.e., nearest neighbours) will be
generated from the same category; methode =
"restricted_random"
will also adhere to categorical constraints
induced via categories
(i.e. each element only receives
exchange partners from the same category as itself); methode
= "random"
cannot incoorporate categorical restrictions.
Value
A list of length N
. Is usually used as input to the
argument exchange_partners
in
fast_anticlustering
. Then, the i'th element of
the list contains the indices of the exchange partners that are
used for the i'th element.
Examples
# Restricted random method generates no duplicates per element and cannot return
# the element itself as exchange partner
generate_exchange_partners(5, N = 10, method = "restricted_random")
# "random" simply randomizes with replacement and without restrictions
# (categorical restrictions are also not possible; is much faster for large data sets)
generate_exchange_partners(5, N = 10, method = "random")
# May return less than 5 exchange partners if there are not enough members
# of the same category:
generate_exchange_partners(
5, N = 10,
method = "restricted_random",
categories = cbind(schaper2019$room, schaper2019$frequency)
)
# using nearest neighbour search (unlike RANN::nn2, this does not
# return the ID of the element itself as neighbour)
generate_exchange_partners(5, features = schaper2019[, 3:5], method = "RANN")[1:3]
# compare with RANN directly:
RANN::nn2(schaper2019[, 3:5], k = 6)$nn.idx[1:3, ] # note k = 6