1 package baseCode.math;
2
3 import baseCode.dataStructure.matrix.DenseDoubleMatrix2DNamed;
4 import cern.colt.list.DoubleArrayList;
5
6 /***
7 * Convenience functions for getting row statistics from matrices.
8 * <p>
9 * Copyright (c) 2004
10 * </p>
11 * <p>
12 * Institution:: Columbia University
13 * </p>
14 *
15 * @author Paul Pavlidis
16 * @version $Id: MatrixRowStats.java,v 1.11 2004/07/27 03:18:58 pavlidis Exp $
17 * @todo Have min() and max() throw an EmptyMatrixException -- this exception class does not yet exist and needs to be
18 * defined somewhere.
19 */
20 public class MatrixRowStats {
21
22 private MatrixRowStats() {
23 }
24
25 /***
26 * Calculates the sum of squares for each row of a matrix
27 *
28 * @param M DenseDoubleMatrix2DNamed
29 * @return DoubleArrayList
30 */
31 public static DoubleArrayList sumOfSquares( DenseDoubleMatrix2DNamed M ) {
32 DoubleArrayList r = new DoubleArrayList();
33
34 for ( int i = 0; i < M.rows(); i++ ) {
35 DoubleArrayList row = new DoubleArrayList( M.getRow( i ) );
36 r.add( DescriptiveWithMissing.sumOfSquares( row ) );
37 }
38
39 return r;
40 }
41
42 /***
43 * Calculates the means of a matrix's rows.
44 *
45 * @param M DenseDoubleMatrix2DNamed
46 * @return DoubleArrayList
47 */
48 public static DoubleArrayList means( DenseDoubleMatrix2DNamed M ) {
49 DoubleArrayList r = new DoubleArrayList();
50 for ( int i = 0; i < M.rows(); i++ ) {
51 r.add( DescriptiveWithMissing
52 .mean( new DoubleArrayList( M.getRow( i ) ) ) );
53 }
54 return r;
55 }
56
57 /***
58 * Calculate the sums of a matrix's rows.
59 *
60 * @param M DenseDoubleMatrix2DNamed
61 * @return DoubleArrayList
62 * @todo calls new a lot.
63 */
64 public static DoubleArrayList sums( DenseDoubleMatrix2DNamed M ) {
65 DoubleArrayList r = new DoubleArrayList();
66 for ( int i = 0; i < M.rows(); i++ ) {
67 r.add( DescriptiveWithMissing
68 .sum( new DoubleArrayList( M.getRow( i ) ) ) );
69 }
70 return r;
71 }
72
73 /***
74 * Calculates the sample standard deviation of each row of a matrix
75 *
76 * @param M DenseDoubleMatrix2DNamed
77 * @return DoubleArrayList
78 */
79 public static DoubleArrayList sampleStandardDeviations(
80 DenseDoubleMatrix2DNamed M ) {
81 DoubleArrayList r = new DoubleArrayList();
82 for ( int i = 0; i < M.rows(); i++ ) {
83 DoubleArrayList row = new DoubleArrayList( M.getRow( i ) );
84 double mean = DescriptiveWithMissing.mean( row );
85 r
86 .add( Math.sqrt( DescriptiveWithMissing.sampleVariance( row,
87 mean ) ) );
88 }
89 return r;
90 }
91
92 }