| 
0
 | 
     1 /*
 | 
| 
 | 
     2  * Copyright 1996-2006 Catherine Loader.
 | 
| 
 | 
     3  */
 | 
| 
 | 
     4 #ifndef I_LFEV_H
 | 
| 
 | 
     5 #define I_LFEV_H
 | 
| 
 | 
     6 
 | 
| 
 | 
     7 #include "locf.h"
 | 
| 
 | 
     8 #include "tube.h"
 | 
| 
 | 
     9 
 | 
| 
 | 
    10 /* uncomment the following line to allow plug-in modules. */
 | 
| 
 | 
    11 /*#define ALLOW_MODULES*/
 | 
| 
 | 
    12 
 | 
| 
 | 
    13 #define DALP 0
 | 
| 
 | 
    14 #define DFXH 1
 | 
| 
 | 
    15 
 | 
| 
 | 
    16 typedef struct {
 | 
| 
 | 
    17   int ev;
 | 
| 
 | 
    18   double *sv;
 | 
| 
 | 
    19   double cut;
 | 
| 
 | 
    20   double fl[2*MXDIM];
 | 
| 
 | 
    21   int *iwk, *ce, *s, *lo, *hi;
 | 
| 
 | 
    22   int liw, nce, ncm, maxk;
 | 
| 
 | 
    23   int mg[MXDIM];
 | 
| 
 | 
    24   void (*espec)();
 | 
| 
 | 
    25 } evstruc;
 | 
| 
 | 
    26 #define ev(evs)   ((evs)->ev)
 | 
| 
 | 
    27 #define cut(evs)  ((evs)->cut)
 | 
| 
 | 
    28 #define mk(evs)   ((evs)->maxk)
 | 
| 
 | 
    29 #define mg(evs)   ((evs)->mg)
 | 
| 
 | 
    30 
 | 
| 
 | 
    31 typedef struct {
 | 
| 
 | 
    32   double *xev, *wk, *coef, *nlx, *t0, *lik, *h, *deg, *kap;
 | 
| 
 | 
    33   int lev, lwk;
 | 
| 
 | 
    34   int d, dcor, geth, hasd;
 | 
| 
 | 
    35   int nv, nvm;
 | 
| 
 | 
    36 } fitpt;
 | 
| 
 | 
    37 #define evp(fp)     ((fp)->xev)
 | 
| 
 | 
    38 #define evpt(fp,i)  (&(fp)->xev[(i)*(fp)->d])
 | 
| 
 | 
    39 #define evptx(fp,i,k) ((fp)->xev[(i)*(fp)->d+(k)])
 | 
| 
 | 
    40 #define llk(fp) ((fp)->kap[0])
 | 
| 
 | 
    41 #define df0(fp) ((fp)->kap[1])
 | 
| 
 | 
    42 #define df1(fp) ((fp)->kap[2])
 | 
| 
 | 
    43 #define rv(fp)  ((fp)->kap[3])
 | 
| 
 | 
    44 #define rsc(fp) ((fp)->kap[5])
 | 
| 
 | 
    45 #define dc(fp)  ((fp)->dcor)
 | 
| 
 | 
    46 #define geth(fp)  ((fp)->geth)
 | 
| 
 | 
    47 
 | 
| 
 | 
    48 typedef struct {
 | 
| 
 | 
    49   int (*procv)(), keepv, keepc, nopc, isset, np;
 | 
| 
 | 
    50   void (*alloc)();
 | 
| 
 | 
    51   void (*pproc)();
 | 
| 
 | 
    52   double *params;
 | 
| 
 | 
    53 } module;
 | 
| 
 | 
    54 #define PROC_VERTEX(des,lf,i) (lf)->mdl.procv((des),(lf),(i))
 | 
| 
 | 
    55 #define MODPARAMS(lf) ((lf)->mdl.params)
 | 
| 
 | 
    56 #define MODPARAM(lf,i) ((lf)->mdl.params[i])
 | 
| 
 | 
    57 #define MODNPARAMS(lf) ((lf)->mdl.np)
 | 
| 
 | 
    58 #define PROCV(lf) (lf)->mdl.procv
 | 
| 
 | 
    59 #define ALLOC(lf) (lf)->mdl.alloc
 | 
| 
 | 
    60 #define PPROC(lf) (lf)->mdl.pproc
 | 
| 
 | 
    61 #define KEEPC(lf) (lf)->mdl.keepc
 | 
| 
 | 
    62 #define KEEPV(lf) (lf)->mdl.keepv
 | 
| 
 | 
    63 #define NOPC(lf)  (lf)->mdl.nopc
 | 
| 
 | 
    64 
 | 
| 
 | 
    65 typedef struct {
 | 
| 
 | 
    66   int       lf_init_id;
 | 
| 
 | 
    67   lfdata    lfd;
 | 
| 
 | 
    68   smpar     sp;
 | 
| 
 | 
    69   evstruc   evs;
 | 
| 
 | 
    70   fitpt     fp;
 | 
| 
 | 
    71   deriv     dv;
 | 
| 
 | 
    72   paramcomp pc;
 | 
| 
 | 
    73   module    mdl;
 | 
| 
 | 
    74   } lfit;
 | 
| 
 | 
    75 #define LF_INIT_ID 34897239
 | 
| 
 | 
    76 #define NOBS(lf) ((lf)->lfd.n)
 | 
| 
 | 
    77 #define NVAR(lf) ((lf)->lfd.d)
 | 
| 
 | 
    78 #define NPAR(lf) ((lf)->sp.p)
 | 
| 
 | 
    79 
 | 
| 
 | 
    80 /*
 | 
| 
 | 
    81  * VVEC(lf,i) is storage vector for the i'th item.
 | 
| 
 | 
    82  * VVAL(lf,v,i) is the storage point for the i'th item when fitting at vertex v.
 | 
| 
 | 
    83  *   should have 0 <= i < keepv; keepv defined when initializing module.
 | 
| 
 | 
    84  */
 | 
| 
 | 
    85 #define VVEC(lf,i) (&(lf)->fp.wk[(i)*(lf)->fp.nvm])
 | 
| 
 | 
    86 #define VVAL(lf,v,i) ((lf)->fp.wk[(i)*(lf)->fp.nvm+(v)])
 | 
| 
 | 
    87 #define VECR(lf) ((lf)->kap)
 | 
| 
 | 
    88 
 | 
| 
 | 
    89 /*
 | 
| 
 | 
    90  *  mi[MGETH] codes
 | 
| 
 | 
    91  *  scb(), pointwise codes are 71,...,75.
 | 
| 
 | 
    92  *         add 10 for simultaneous codes.
 | 
| 
 | 
    93  */
 | 
| 
 | 
    94 #define GSTD 0
 | 
| 
 | 
    95 #define GHAT 1
 | 
| 
 | 
    96 #define GKAP 2
 | 
| 
 | 
    97 #define GRBD 3
 | 
| 
 | 
    98 #define GAMF 4
 | 
| 
 | 
    99 #define GAMP 5
 | 
| 
 | 
   100 #define GLSC 6
 | 
| 
 | 
   101 #define GSMP 7
 | 
| 
 | 
   102 #define GMIX 8
 | 
| 
 | 
   103 #define GLM1 71
 | 
| 
 | 
   104 #define GLM2 72
 | 
| 
 | 
   105 #define GLM3 73
 | 
| 
 | 
   106 #define GLM4 74
 | 
| 
 | 
   107 #define GLDN 75
 | 
| 
 | 
   108 
 | 
| 
 | 
   109 /* bandwidth criteria */
 | 
| 
 | 
   110 #define BGCV 1
 | 
| 
 | 
   111 #define BCP  2
 | 
| 
 | 
   112 #define BIND 3
 | 
| 
 | 
   113 
 | 
| 
 | 
   114 /*
 | 
| 
 | 
   115  * Evaluation structures
 | 
| 
 | 
   116  * EFITP special for `interpolation' at fit points
 | 
| 
 | 
   117  */
 | 
| 
 | 
   118 #define ENULL  0
 | 
| 
 | 
   119 #define ETREE  1
 | 
| 
 | 
   120 #define EPHULL 2
 | 
| 
 | 
   121 #define EDATA  3
 | 
| 
 | 
   122 #define EGRID  4
 | 
| 
 | 
   123 #define EKDTR  5
 | 
| 
 | 
   124 #define EKDCE  6
 | 
| 
 | 
   125 #define ECROS  7
 | 
| 
 | 
   126 #define EPRES  8
 | 
| 
 | 
   127 #define EXBAR  9
 | 
| 
 | 
   128 #define ENONE  10
 | 
| 
 | 
   129 #define ESPHR  11
 | 
| 
 | 
   130 #define EFITP  50
 | 
| 
 | 
   131 #define ESPEC  100
 | 
| 
 | 
   132 
 | 
| 
 | 
   133 /*
 | 
| 
 | 
   134  * For prediction functions, what to predict?
 | 
| 
 | 
   135  * PCOEF -- coefficients        PT0   -- influence function
 | 
| 
 | 
   136  * PNLX  -- ||l(x)||            PBAND -- bandwidth h(x)
 | 
| 
 | 
   137  * PDEGR -- local poly. degree  PLIK  -- max. local likelihood
 | 
| 
 | 
   138  * PRDF  -- local res. d.f.     PVARI -- ||l(x)||^2
 | 
| 
 | 
   139  */
 | 
| 
 | 
   140 #define PCOEF 1
 | 
| 
 | 
   141 #define PT0   2
 | 
| 
 | 
   142 #define PNLX  3
 | 
| 
 | 
   143 #define PBAND 4
 | 
| 
 | 
   144 #define PDEGR 5
 | 
| 
 | 
   145 #define PLIK  6
 | 
| 
 | 
   146 #define PRDF  7
 | 
| 
 | 
   147 #define PVARI 8
 | 
| 
 | 
   148 
 | 
| 
 | 
   149 /*
 | 
| 
 | 
   150  *  Residual Types
 | 
| 
 | 
   151  */
 | 
| 
 | 
   152 #define RDEV  1
 | 
| 
 | 
   153 #define RPEAR 2
 | 
| 
 | 
   154 #define RRAW  3
 | 
| 
 | 
   155 #define RLDOT 4
 | 
| 
 | 
   156 #define RDEV2 5
 | 
| 
 | 
   157 #define RLDDT 6
 | 
| 
 | 
   158 #define RFIT  7
 | 
| 
 | 
   159 #define RMEAN 8
 | 
| 
 | 
   160 
 | 
| 
 | 
   161 /* band.c */
 | 
| 
 | 
   162 extern void band(), kdeselect(), kdecri(), bselect();
 | 
| 
 | 
   163 
 | 
| 
 | 
   164 /* dens_int.c */
 | 
| 
 | 
   165 extern double dens_integrate();
 | 
| 
 | 
   166 extern void dens_renorm(), lforder();
 | 
| 
 | 
   167 
 | 
| 
 | 
   168 /* ev_atree.c */
 | 
| 
 | 
   169 extern void atree_start(), atree_grow(), atree_guessnv();
 | 
| 
 | 
   170 extern double atree_int();
 | 
| 
 | 
   171 
 | 
| 
 | 
   172 /* ev_interp.c */
 | 
| 
 | 
   173 extern double dointpoint(), cubintd();
 | 
| 
 | 
   174 extern double linear_interp(), cubic_interp(), rectcell_interp();
 | 
| 
 | 
   175 extern int exvval();
 | 
| 
 | 
   176 extern void exvvalpv(), hermite2();
 | 
| 
 | 
   177 
 | 
| 
 | 
   178 /* ev_kdtre.c */
 | 
| 
 | 
   179 extern void kdtre_start(), kdtre_guessnv();
 | 
| 
 | 
   180 extern double kdtre_int();
 | 
| 
 | 
   181 
 | 
| 
 | 
   182 /* ev_sphere.c */
 | 
| 
 | 
   183 extern void sphere_start(), sphere_guessnv();
 | 
| 
 | 
   184 extern double sphere_int();
 | 
| 
 | 
   185 
 | 
| 
 | 
   186 /* ev_main.c */
 | 
| 
 | 
   187 extern void trchck(), guessnv(), lfit_alloc(), evstruc_alloc(), evstruc_init();
 | 
| 
 | 
   188 extern void dataf(), gridf(), crossf(), xbarf(), preset();
 | 
| 
 | 
   189 extern int findpt(), newsplit(), lfit_reqd(), evstruc_reqi();
 | 
| 
 | 
   190 extern int lfevstr();
 | 
| 
 | 
   191 
 | 
| 
 | 
   192 /* ev_trian.c */
 | 
| 
 | 
   193 extern void triang_start(), triang_grow(), triang_guessnv();
 | 
| 
 | 
   194 extern double triang_int();
 | 
| 
 | 
   195 
 | 
| 
 | 
   196 /* fitted.c */
 | 
| 
 | 
   197 extern void fitted();
 | 
| 
 | 
   198 extern double resid();
 | 
| 
 | 
   199 extern int restyp();
 | 
| 
 | 
   200 
 | 
| 
 | 
   201 /* frend.c */
 | 
| 
 | 
   202 extern void ressumm();
 | 
| 
 | 
   203 extern double rss();
 | 
| 
 | 
   204 
 | 
| 
 | 
   205 /* lf_dercor.c */
 | 
| 
 | 
   206 extern void dercor();
 | 
| 
 | 
   207 
 | 
| 
 | 
   208 /* pcomp.c */
 | 
| 
 | 
   209 extern double addparcomp();
 | 
| 
 | 
   210 extern void compparcomp(), subparcomp(), subparcomp2(), pcchk();
 | 
| 
 | 
   211 extern int pc_reqd(), noparcomp();
 | 
| 
 | 
   212 
 | 
| 
 | 
   213 /* preplot.c */
 | 
| 
 | 
   214 extern void preplot(), cpreplot();
 | 
| 
 | 
   215 extern int setpppoints(), ppwhat();
 | 
| 
 | 
   216 
 | 
| 
 | 
   217 /* procv.c */
 | 
| 
 | 
   218 extern int procv_nov(), procv_var();
 | 
| 
 | 
   219 
 | 
| 
 | 
   220 /* startlf.c */
 | 
| 
 | 
   221 extern void set_flim(), set_scales(), nstartlf(), startlf(), lfit_init();
 | 
| 
 | 
   222 extern void fitoptions(), clocfit(), endfit(), startmodule();
 | 
| 
 | 
   223 extern int nofit(), initmodule();
 | 
| 
 | 
   224 
 | 
| 
 | 
   225 extern void initsimple(), initstd(), inithatm(), initgam(), initallcf();
 | 
| 
 | 
   226 extern void initlscv(), initrband(), initscb(), initkappa(), initvord();
 | 
| 
 | 
   227 
 | 
| 
 | 
   228 /* modkappa.c */
 | 
| 
 | 
   229 extern int constants();
 | 
| 
 | 
   230 
 | 
| 
 | 
   231 /* modrband.c */
 | 
| 
 | 
   232 extern void rband();
 | 
| 
 | 
   233 
 | 
| 
 | 
   234 /* modstd.c */
 | 
| 
 | 
   235 extern int procvstd();
 | 
| 
 | 
   236 #endif /* define I_LFEV_H */
 |