MathGroup Archive 1999

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Parametric curve fitting

    Just a suggestion; I don't have time now to demonstrate this idea now,
but it is similar to data analyses I do all the time, and I'll describe it
in words.
      Instead of treating your sampled time series as functions with noise
and searching them pairwise for correlations, treat them as a set of m
samples from Real N-space (assuming that the entries are Real numbers).
Place the N-vectors as columns in a matrix, call it A.  Then the correlation
between the i-th and j-th columns in A is proportional to the i,j-th element
of the correlation matrix (Transpose[A].A) .  To discover significant
correlations, we need to filter noise out of this matrix, which I believe
can be done using Mathematica's SingularValueDecomposition function.  The
SVD of matrix A returned as the product of 3 matrices, i.e.
A=U.S.Transpose[V].   U and V are orthonormal matrices.  S is a diagonal
matrix with its largest elements listed first, and the columns of U and the
rows of V are listed in order of decreasing significance in approximating A.
See a good book on applied linear algebra for the algebraic and statistical
details, eg. Noble & Daniel.  Now, the correlation matrix, Transpose[A].A=
V.[S^2] .Transpose[V].  (The columns of V are eigenvectors and the elements
of S^2 the corresponding eigenvalues of the correlation matrix. ) To
eliminate noise, examine elements of S, looking for a sharp drop-off where
adding more vectors to the expansion only reconstructs noise, then drop all
elements of S^2 and corresponding columns of V beyond that point, and
reconstruct the correlation matrix only with the significant elements
remaining.  The correlations in the filtered correlation matrix should now
be mostly noise-free, and therefore visible.
    NB.  Mathematica returns U and V as their transposes!
        If you have any questions, e-mail me and I will try to answer.

-----Original Message-----
From: Virgil Stokes <virgil.stokes at>
To: mathgroup at
Subject: [mg18601] [mg18568] Parametric curve fitting

>Suppose that I have a set of experimental time series data, say
>    x1(t) , t = 1,2,...N
>    x2(t),  t = 1,2,...N
>    x3(t),  t = 1,2,...N
>      .
>      .
>      .
>    xm(t), t = 1,2,...N
>where, each represents a sequence of sampled values (containing
>measurement error). I would like to see what pairs (if any)
>are linearly related. That is, if I plotted x1(t) vs x2(t) and this
>appeared that it could be approximated by a straight line then
>one might assume that these could be linearly related. However, this
>is not a simple regression problem since both of the measured
>time series which we are trying to fit contain measurement errors
>and thus one of the basic assumptions of ordinary regression is violated.
>Are there any Mathematica functions available that could be used
>for this type of time series fitting problem?
>-- Virgil

  • Prev by Date: Re: Need a means to get arguments of a function
  • Next by Date: [Q] Implementing identities as rules
  • Previous by thread: Parametric curve fitting
  • Next by thread: Q for Lisp and Prolog programmers