Covariance: To TableOfReal (random sampling)...
|
|
Generate a TableOfReal object by random sampling from a multi-variate normal distribution whose Covariance matrix is the selected object.
Setting
-
Number of data points
-
determines the number of data points that will be generated. Each data point occupies one row in the generated table.
Algorithm
The algorithm proceeds as follows:
-
1. Diagonalize the covariance matrix: calculate the eigenvalues
v
i and eigenvectors ei of the m × m Covariance matrix. In general there will also be m of these. Let E be the m × m matrix with eigenvector ej in column j (j=1..m).
-
2. Generate a vector x whose elements xk equal xk = randomGauss (0, √ (vk)). Each xk is a random deviate drawn from a Gaussian distribution with mean zero and standard deviation equal to the square root of the corresponding eigenvalue vk.
-
3. Rotate back: calculate the vector y = E x, obtained by multiplying the vector x with the matrix E.
-
4. Add the centroid to y and copy the elements of y to the corresponding row of the TableOfReal object.
-
5. Repeat steps 2, 3 and 4 until the desired number of data points has been reached.
-
6. Copy the column labels from the Covariance object to the TableOfReal object.
In case the covariance matrix is diagonal, the algorithm is much simpler: we can skip the first and third step.
Links to this page
© djmw 20101101