nag_sum_sqs_update (g02btc) (PDF version)
g02 Chapter Contents
g02 Chapter Introduction
NAG C Library Manual

NAG Library Function Document

nag_sum_sqs_update (g02btc)

+ Contents

    1  Purpose
    7  Accuracy

1  Purpose

nag_sum_sqs_update (g02btc) updates the sample means and sums of squares and cross-products, or sums of squares and cross-products of deviations about the mean, for a new observation. The data may be weighted.

2  Specification

#include <nag.h>
#include <nagg02.h>
void  nag_sum_sqs_update (Nag_SumSquare mean, Integer m, double wt, const double x[], Integer incx, double *sw, double xbar[], double c[], NagError *fail)

3  Description

nag_sum_sqs_update (g02btc) is an adaptation of West's WV2 algorithm; see West (1979). This function updates the weighted means of variables and weighted sums of squares and cross-products or weighted sums of squares and cross-products of deviations about the mean for observations on m variables Xj, for j=1,2,,m. For the first i-1 observations let the mean of the jth variable be x-ji-1, the cross-product about the mean for the jth and kth variables be cjki-1 and the sum of weights be Wi-1. These are updated by the ith observation, xij, for j=1,2,,m, with weight wi as follows:
Wi=Wi-1+wi,  x-ji=x-ji-1+wiWixj-x-ji-1,  j=1,2,,m
and
cjki=cjki- 1+wiWixj-x-ji- 1xk-x-ki- 1Wi- 1,   j= 1,2,,m;k=j,j+ 1,2,,m.
The algorithm is initialized by taking x-j1=x1j, the first observation and cij1=0.0.
For the unweighted case wi=1 and Wi=i for all i.

4  References

Chan T F, Golub G H and Leveque R J (1982) Updating Formulae and a Pairwise Algorithm for Computing Sample Variances Compstat, Physica-Verlag
West D H D (1979) Updating mean and variance estimates: An improved method Comm. ACM 22 532–555

5  Arguments

1:     meanNag_SumSquareInput
On entry: indicates whether nag_sum_sqs_update (g02btc) is to calculate sums of squares and cross-products, or sums of squares and cross-products of deviations about the mean.
mean=Nag_AboutMean
The sums of squares and cross-products of deviations about the mean are calculated.
mean=Nag_AboutZero
The sums of squares and cross-products are calculated.
Constraint: mean=Nag_AboutMean or Nag_AboutZero.
2:     mIntegerInput
On entry: m, the number of variables.
Constraint: m1.
3:     wtdoubleInput
On entry: the weight to use for the current observation, wi.
For unweighted means and cross-products set wt=1.0. The use of a suitable negative value of wt, e.g., -wi will have the effect of deleting the observation.
4:     x[m×incx]const doubleInput
On entry: x[j-1×incx] must contain the value of the jth variable for the current observation, j=1,2,,m.
5:     incxIntegerInput
On entry: the increment of x.
Constraint: incx>0.
6:     swdouble *Input/Output
On entry: the sum of weights for the previous observations, Wi-1.
sw=0.0
The update procedure is initialized.
sw+wt=0.0
All elements of xbar and c are set to zero.
Constraint: sw0.0 and sw+wt0.0.
On exit: contains the updated sum of weights, Wi.
7:     xbar[m]doubleInput/Output
On entry: if sw=0.0, xbar is initialized, otherwise xbar[j-1] must contain the weighted mean of the jth variable for the previous i-1 observations, x-ji-1, for j=1,2,,m.
On exit: xbar[j-1] contains the weighted mean of the jth variable, x-ji, for j=1,2,,m.
8:     c[m×m+m/2]doubleInput/Output
On entry: if sw0.0, c must contain the upper triangular part of the matrix of weighted sums of squares and cross-products or weighted sums of squares and cross-products of deviations about the mean. It is stored packed form by column, i.e., the cross-product between the jth and kth variable, kj, is stored in c[k×k-1/2+j-1].
On exit: the update sums of squares and cross-products stored as on input.
9:     failNagError *Input/Output
The NAG error argument (see Section 3.6 in the Essential Introduction).

6  Error Indicators and Warnings

NE_BAD_PARAM
On entry, argument value had an illegal value.
NE_INT
On entry, incx=value.
Constraint: incx1.
On entry, m=value.
Constraint: m1.
NE_INTERNAL_ERROR
An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact NAG for assistance.
NE_REAL
On entry, sw=value.
Constraint: sw0.0.
NE_SUM_WEIGHT
On entry, sw+wt=value.
Constraint: sw+wt0.0.

7  Accuracy

For a detailed discussion of the accuracy of this method see Chan et al. (1982) and West (1979).

8  Further Comments

nag_sum_sqs_update (g02btc) may be used to update the results returned by nag_sum_sqs (g02buc).
nag_cov_to_corr (g02bwc) may be used to calculate the correlation matrix from the matrix of sums of squares and cross-products of deviations about the mean .

9  Example

A program to calculate the means, the required sums of squares and cross-products matrix, and the variance matrix for a set of 3 observations of 3 variables.

9.1  Program Text

Program Text (g02btce.c)

9.2  Program Data

Program Data (g02btce.d)

9.3  Program Results

Program Results (g02btce.r)


nag_sum_sqs_update (g02btc) (PDF version)
g02 Chapter Contents
g02 Chapter Introduction
NAG C Library Manual

© The Numerical Algorithms Group Ltd, Oxford, UK. 2012