Get weights for individuals that balance subpopulations
This function returns positive weights that sum to one for individuals using subpopulation labels, such that every subpopulation receives equal weight.
In particular, if there are K
subpopulations, then the sum of weights for every individuals of a given subpopulation will equal 1 / K
.
The weight of every individual is thus inversely proportional to the number of individuals in its subpopulation.
If the optional sub-subpopulation labels are also provided, then each sub-subpopulation within a given subpopulation is also weighted equally.
weights_subpops(subpops, subsubpops = NULL)
subpops |
The length- |
subsubpops |
The optional length- |
The length-n
vector of weights for each individual.
# if every individual has a different subpopulation, weights are uniform: subpops <- 1:10 weights <- weights_subpops( subpops ) stopifnot( all( weights == rep.int( 1/10, 10 ) ) ) # subpopulations can be strings too subpops <- c('a', 'b', 'c') weights <- weights_subpops( subpops ) stopifnot( all( weights == rep.int( 1/3, 3 ) ) ) # if there are two subpopulations # and the first has twice as many individuals as the second # then the individuals in this first subpopulation weight half as much # as the ones in the second subpopulation subpops <- c(1, 1, 2) weights <- weights_subpops( subpops ) stopifnot( all( weights == c( 1/4, 1/4, 1/2 ) ) ) # 2-level hierarchy example subpops <- c(1, 1, 1, 2, 2) subsubpops <- c('a', 'b', 'b', 'c', 'd') weights <- weights_subpops( subpops, subsubpops ) stopifnot( all( weights == c( 1/4, 1/8, 1/8, 1/4, 1/4 ) ) )
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.