CHANGES PLANNED SOMEDAY 1) more vertices in k-d tree for dimension > 2, to get continuity. 2) triangulation based method. ---------------------- 19 Nov 1987 workspace not big enough for degree=2 22 Jan 1988 switched from depth first to breadth first tree build 14 Mar 1988 lostt.3 extra space needed if (method mod 1000 = 0), not the documented (method/1000=0) 28 Apr 1988 l2tr.g vval2 needed to be initialized to 0 galaxy smooth needs double precision on vax 26 May 1988 bbox.g add 10% margin to allow limited extrapolation 6 June 1988 loess/lostt.f trL wasn't set if method/1000==0 10 June 1988 losave, loread v(RCOND) 1 / max condition number 12 June 1988 lofort 21 June 1988 additional workspace for explicit L 27 June 1988 workspace checking in lowesf was slightly pessimistic 30 June 1988 Changed default fdiam to 0. Added warning messages for memory limits and pseudoinverse. 4 Aug 1988 bbox.g changed margin from 10% to 0.5%. 24 Aug 1988 loser documentation should have specified workspace of size ...+m*n, not ...+m**2. Sep 1988 loess-based approximations of delta1,2. pseudo-values, so statistics are available with robustness iterations. reorganize error messages to better fit into S. sample driver program. somewhat shorter code generated by ehg170. 20 Dec 1988 workspace in loser 27 Jan 1989 workspace checking in lostt was a bit pessimistic. 3 Feb 1989 l2fit, l2tr: error message should contain sqrt(rho) 18 Dec 1989 ehg141, ehg179-ehg181: new delta approximations 24 Jan 1990 master copy moved from Sun3/180 to SGI 4D/240S (no intentional changes) 25 Jan 1990 (many routines touched; ehg127 added) cleaned up computational kernel, added provision for only first dd<=d variables to enter the distance calculation ("conditionally parametric variables"), added independent bounds on total and componentwise degree for local polynomial model, made extrapolation warning message print a bit more detail. 14 Mar 1990 added setLf argument to lowesd; added lowesr, lowesl for resmoothing. ------------------------------------------------------- Converting to the new version of loess 5 April 1990 Over the past few months, a number of changes have been made to the loess package, to provide more control over the local model, to allow conditionally parametric variables, and to return exact statistical quantities for the blending method. Unlike earlier internal algorithmic improvements, this round of changes added some extra arguments in the Fortran calling sequences. The purpose of this note is to assist in converting programs that called the old version. An explicit argument setLf has been added to lowesd(), since it affects the partitioning of the workspace. To help protect against inadvertent version mismatches, the version number that lowesd() checks has also been changed. The componentwise degree and the specification of conditionally nonparametric variables can be changed from the default by modifying iv(CDEG) and iv(NDIST). The influence matrix L for blending is now explicitly available by calling a new subroutine lowesl(), but this loses the speed advantage of blending. A faster, sometimes equivalent method is to use the influence matrix that carries data values to coefficients at the vertices of the k-d tree. This information is saved in iv(iv(Lq)) and v(iv(Lf)), for the afficionado. The new subroutine lowesr() takes advantage of Lq and Lf to allow rapid resmoothing for applications when only y, not x, is subject to change. ------------------------------------------------------- 7 May 1990 new delta approximations. added prior weights to input format for sample driver. 29 May 1990 loess,lostt,loser,pseudo moved from Fortran to S. 11 Jul 1990 column equilibration, so pseudoinverse is needed less often. 27 May 1991 lowesd version 105; increased nvmax,ncmax to max(200,n). l2fit added ihat=1 (diagL only). ehg133,lowese removed unused arguments dist,eta. ehg190,ehg141 changed name to lowesa, slight change to calling sequence. ehg144 changed name to lowesc m9rwt changed name to lowesw pseudo changed name to lowesp 22 Jul 1991 IMPORTANT BUG FIX! ehg131 vval2 should be dimensioned 0:d, not 0:8 26 Jul 1991 lowesd change calling sequence to provide tighter memory allocation diff old/man/internal new/man/internal < lowesd(105,iv,liv,lv,v,d,n,f,tdeg,setLf) setup workspace > lowesd(106,iv,liv,lv,v,d,n,f,tdeg,nvmax,setLf) setup workspace < liv 50+(2^d+6)*max(200,n) < if setLf, add nf*max(200,n) < lv 50+(3*d+4)*max(200,n)+(tau+2)*nf < if setLf, add (d+1)*nf*max(200,n) > liv 50+(2^d+6)*nvmax > if setLf, add nf*nvmax > lv 50+(3*d+4)*nvmax+(tau+2)*nf > if setLf, add (d+1)*nf*nvmax > nvmax limit on number of vertices for kd-tree; e.g. max(200,n) 20 Sep 1991 sample.f brought in sync with recent loess changes. 24 Dec 1991 l2fit.f fixed comment in single precision version 10 Jan 1992 ehg197.f new formula for approximating trL, valid for small f 15 May 1992 netlib/a/dloess now includes C drivers (written by Ming-Jen Shyu, adapted from code used inside the S system) 22 Jun 1992 ehg191.f Loop 11 ran too far, picking up one more value than necessary. The value was not used, so the loess computation itself is unaffected, but on some systems the old code could conceivably cause a reference to an invalid memory address and abort with a segmentation fault message. 23 Jun 1992 S.h #include , since loessc.c calls floor() and pow(). 18 Aug 1992 netlib/a/dloess A new release with bug fixes in all the C drivers, new example codes, and detail documentations. 25 Mar 1996 predict.c fix enormous memory leak. update email address