bcprd(x), REAL matrix x bcprd(x1, x2, ... ), x1, x2, ... REAL matrices with the same number of rows. |

bcprd(x) where x is a matrix computes a "bordered" cross product matrix containing the means of the columns of x and mean-corrected sums of squares and products of the columns of x. bcprd(x1,x2,...,xm) yields the same result as bcprd(hconcat(x1,x2,..., xm)) when x1, x2, ... are all REAL matrices with the same number of rows. Specifically, when x is an n by p matrix, bcp <- bcprd(x) sets bcp to a p+1 by p+1 matrix, where bcp[1,1] = 1/n bcp[-1,1] = a column vector containing the sample mean xbar bcp[1,-1] = a row vector containing -xbar' bcp[-1,-1] = the p by p matrix of mean-corrected sums of squares and products of the columns of x bcprd(x) is mathematically equivalent to {@TMP <- hconcat(rep(1,nrows(x)),x); swp(@TMP %c% @TMP,1)}. However, the use of bcrpd() is preferred to the illustrated use of swp() since it uses a numerically stable algorithm to compute the corrected sums of squares and products. When all the arguments of bcprd() have labels, so will the result of bcprd() with both row and column labels taken from the column labels of the arguments. See also swp().

Gary Oehlert 2003-01-15