samplef sample values with replacement from a population with given frequencies.

## Syntax

    s = samplef(n,X,f,orient)

## Arguments

n

  positive integer (size of sample)

X

  matrix. Population, samples are extracted from this matrix

f

  matrix of positive real values. Indicates the corresponding frequencies of the values in `X`.

orient

  Optional parameter. Admissible values are `{'*'}, 1, 2, 'r'` or `'c'`. The orientation to sample rows or columns. See Description below.

s

  vector or matrix containing the sampled values of `X` at frequencies `f`.

## Description

This function returns `s`, a vector of length `n`. It contains a sample of `n` extractions, with replacement, from the vector (or matrix) `X`, each element counted with the frequency given by the corresponding value in vector `f`.

`s=samplef(n,X,f)` (or `s=samplef(n,X,f,'*')`) returns a vector `s` whose values are a random sample of n values from `X`, each value with a probability to be sampled proportional to the corresponding value of `f`, extracted with replacement, from `X`. `f` must have same length than `X`.

`s=samplef(n,X,f,'r')` (or, equivalently, `s=samplef(n,X,f,1))` returns a matrix of type `size(X,'r') * n`. It contains a random sample of `n` rows from `X`, each row with a probability to be sampled proportional to the corresponding value of `f`, extracted with replacement, from the rows of `X`. The length of `f` must be equal to the number of rows of `X`.

`s=samplef(n,X,f,'c')` (or, equivalently, `s=samplef(n,X,f,2))` returns a matrix of type `n * size(X,'c')`. It contains a random sample of `n` columns from `X`, each column with a probability to be sampled proportional to the corresponding value of `f`, extracted with replacement, from the columns of `X`. The length of `f` must be equal to the number of columns of `X`.

## Random number generator

`samplef` is based on grand for generating the random samples. Use `grand("setsd", seed)` to change the seed for `samplef`.

                seed = getdate("s");
                grand("setsd", seed); //sets the seed to current date

                seed = 0;
                grand("setsd", seed); //sets the seed to default value

## Examples

    X = [3 7 9; 22 4 2];
    f1 = [10 1 1 1 1 1];
    f2 = [1 ; 15];
    f3 = [10 1 1];
    s=samplef(20, X, f1)      //the first value of matrix X will be chosen with frequency 10/15
    s=samplef(20, X, f2, 'r') //the second row of matrix a will be chosen with frequency  15/16
    s=samplef(20, X, f3, 'c') //the first column of matrix a will be chosen with frequency 10/12

## See also

- sample
- samwr
- grand