diff rDiff/src/locfit/Source/locf.h @ 0:0f80a5141704

version 0.3 uploaded
author vipints
date Thu, 14 Feb 2013 23:38:36 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/Source/locf.h	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,329 @@
+/*
+ * Copyright 1996-2006 Catherine Loader.
+ */
+#ifndef I_LOCF_H
+#define I_LOCF_H
+
+#include "stdlib.h"
+#include "ctype.h"
+#include "mut.h"
+
+#ifdef WARN
+#undef WARN
+#endif
+
+#define LERR(args) {mut_printf("Error: "); mut_printf args; mut_printf("\n"); lf_error=1;}
+#define WARN(args)  {mut_printf("Warning: "); mut_printf args; mut_printf("\n"); }
+
+extern int lf_error;
+#define LOGPI 1.144729885849400174143427
+#define HUBERC 2.0
+#define NOSLN 0.1278433
+#define GFACT 2.5
+#define EFACT 3.0
+#define ISWAP(a,b) { int zz; zz = a; a = b; b = zz; }
+#define MAX(a,b) (((a)>(b)) ? (a) : (b))
+#define MIN(a,b) (((a)<(b)) ? (a) : (b))
+#define SGN(x) (((x)>0) ? 1 : -1)
+#define SQR(x) ((x)*(x))
+
+extern int lf_error;
+
+typedef struct {
+  double *wk, *coef, *xbar, *f;
+  jacobian xtwx;
+  int lwk, haspc;
+} paramcomp;
+#define haspc(pc) ((pc)->haspc)
+
+/*
+ * MXDIM and MXDEG are maximum dimension and local polynomial
+ * degree for Locfit. Note that some parts of the code may be
+ * more restrictive.
+ */
+
+#define MXDIM 15
+#define MXDEG 7
+
+typedef struct {
+  double *x[MXDIM];
+  double *y;
+  double *w;
+  double *b;
+  double *c;
+  double sca[MXDIM];
+  double xl[2*MXDIM];
+  int n, d, ord;
+  int sty[MXDIM];
+} lfdata;
+#define resp(lfd,i) (((lfd)->y==NULL) ? 0.0 : (lfd)->y[i])
+#define base(lfd,i) (((lfd)->b==NULL) ? 0.0 : (lfd)->b[i])
+#define prwt(lfd,i) (((lfd)->w==NULL) ? 1.0 : (lfd)->w[i])
+#define cens(lfd,i) (((lfd)->c==NULL) ? 0 : (int)(lfd)->c[i])
+#define datum(lfd,i,j) ((lfd)->x[i][j])
+#define dvari(lfd,i)   ((lfd)->x[i])
+
+
+/*
+ *   The design structure used in Locfit, and associated macro definitions.
+ */
+
+typedef struct {
+  int des_init_id;
+  double *wk;
+  int *ind;
+  int lwk, lind;
+
+  double *xev;                /* fitting point, length p          */
+  double *X;                  /* design matrix, length n*p        */
+  double *w, *di, *res, *th, *wd, h;
+  double *V, *P;              /* matrices with length p*p         */
+  double *f1, *ss, *oc, *cf;  /* work vectors, length p  */
+  double llk, smwt;
+  double tr0, tr1, tr2;       /* traces for local df computation */
+  jacobian xtwx;     /* to store X'WVX and decomposition */
+  int cfn[1+MXDIM], ncoef;
+  int *fix;          /* integer vector for fixed coefficients. */
+  int (*itype)();    /* density integration function     */
+  int n, p;
+} design;
+
+#define cfn(des,i) (des->cfn[i])
+#define d_x(des) ((des)->X)
+#define d_xi(des,i) (&(des)->X[i*((des)->p)])
+#define d_xij(des,i,j) ((des)->X[i*((des)->p)+j])
+#define is_fixed(des,i) ((des)->fix[i]==1)
+#define wght(des,i) ((des)->w[i])
+#define dist(des,i) ((des)->di[i])
+#define fitv(des,i) ((des)->th[i])
+#define DES_INIT_ID 34988372
+
+extern int des_reqd(), des_reqi();
+
+typedef struct {
+  int deflink, canlink, quasi, robust;
+  int (*vallink)(), (*family)(), (*initial)(), (*like)(), (*pcheck)();
+} family;
+#define isquasi(fam) ((fam)->quasi)
+#define isrobust(fam) ((fam)->robust)
+extern int inllmix; /* flag needed to ensure correct behavior in llmix. */
+
+typedef struct {
+  double nn, fixh, adpen;
+  int ker, kt;
+  int deg, deg0, p;
+  int acri;
+  int fam, lin;
+  family fami;
+  int ubas;
+  double (*vb)();
+  void (*vbasis)();
+} smpar;
+#define nn(sp)   ((sp)->nn)
+#define fixh(sp) ((sp)->fixh)
+#define pen(sp)  ((sp)->adpen)
+#define ker(sp)  ((sp)->ker)
+#define kt(sp)   ((sp)->kt)
+#define deg(sp)  ((sp)->deg)
+#define deg0(sp) ((sp)->deg0)
+#define npar(sp) ((sp)->p)
+#define acri(sp) ((sp)->acri)
+#define ubas(sp) ((sp)->ubas)
+#define fam(sp)  ((sp)->fam)
+#define fami(sp)  (&(sp)->fami)
+#define link(sp) ((sp)->lin)
+
+typedef struct {
+  int deriv[MXDEG+2];
+  int nd;
+} deriv;
+
+/*
+ *  Criteria for adaptive local fitting  mi[MACRI]
+ *  1: localized CP;  2: ICI (katkovnik);  3: curvature model index
+ *  4: Increase bandwidth until locfit returns LF_OK
+ */
+#define ANONE 0
+#define ACP  1
+#define AKAT 2
+#define AMDI 3
+#define AOK  4
+
+/*
+ * weight functions mi[MKER].
+ * see Table 3.1 or the function W() in weights.c for definitions.
+ */
+#define WRECT 1
+#define WEPAN 2
+#define WBISQ 3
+#define WTCUB 4
+#define WTRWT 5
+#define WGAUS 6
+#define WTRIA 7
+#define WQUQU 8
+#define W6CUB 9
+#define WMINM 10
+#define WEXPL 11
+#define WMACL 12
+#define WPARM 13
+
+/*
+ * type of multivariate weight function mi[MKT]
+ * KSPH (spherical)  KPROD (product)
+ * others shouldn't be used at present.
+ */
+#define KSPH   1
+#define KPROD  2
+#define KCE    3
+#define KLM    4
+#define KZEON  5
+
+/*
+ * Local likelihood family mi[MTG]
+ * for quasi-likelihood, add 64.
+ */
+#define TNUL 0
+#define TDEN 1
+#define TRAT 2
+#define THAZ 3
+#define TGAUS 4
+#define TLOGT 5
+#define TPOIS 6
+#define TGAMM 7
+#define TGEOM 8
+#define TCIRC 9
+#define TROBT 10
+#define TRBIN 11
+#define TWEIB 12
+#define TCAUC 13
+#define TPROB 14
+#define TQUANT 15
+
+/*
+ * Link functions mi[MLINK].
+ * Mostly as in table 4.1 of the book.
+ * LDEFAU and LCANON are used to select default and canonical
+ * links respectively. LINIT shouldn't be selected by user...
+ */
+#define LINIT  0
+#define LDEFAU 1
+#define LCANON 2
+#define LIDENT 3
+#define LLOG   4
+#define LLOGIT 5
+#define LINVER 6
+#define LSQRT  7
+#define LASIN  8
+
+/*
+ * components of vector returned by the links() function
+ * in family.c. ZLIK the likelihood; ZMEAN = estimated mean;
+ * ZDLL = derivative of log-likelihood; ZDDLL = - second derivative
+ */
+#define LLEN  4
+#define ZLIK  0
+#define ZMEAN 1
+#define ZDLL  2
+#define ZDDLL 3
+
+/*
+ * return status for the locfit() function
+ */
+#define LF_OK   0
+#define LF_DONE 1   /* done - forced break from iterations */
+#define LF_OOB  2   /* out of bounds, or large unstable parameter */
+#define LF_PF   3   /* perfect fit; interpolation; deviance=0 */
+#define LF_NCON 4   /* not converged */
+#define LF_NSLN 5   /* no solution - eg separation in binomial. */
+#define LF_NOPT 6   /* no or insufficient points with non-zero wt */
+#define LF_INFA 7   /* initial failure e.g. log(0) */
+#define LF_DEMP 10  /* density -- empty integration region */
+#define LF_XOOR 11  /* density -- fit point outside xlim region */
+#define LF_DNOP 12  /* density version of 6 */
+#define LF_BADP 81  /* bad parameters e.g. neg prob for binomial */
+#define LF_LNK  82  /* invalid link */
+#define LF_FAM  83  /* invalid family */
+#define LF_ERR  99  /* error */
+
+#define STANGL 4
+#define STLEFT 5
+#define STRIGH 6
+#define STCPAR 7
+
+/*
+ * Integration type mi[MIT] for integration in
+ * density estimation.
+ */
+#define INVLD 0
+#define IDEFA 1
+#define IMULT 2
+#define IPROD 3
+#define IMLIN 4
+#define IHAZD 5
+#define ISPHR 6
+#define IMONT 7
+
+/* density.c */
+extern int densinit(), likeden(), deitype();
+extern int fact[];
+extern void prodintresp(), prresp();
+extern int de_mint, de_itype, de_renorm;
+
+/* dens_haz.c */
+extern void haz_init();
+extern int hazint();
+
+/* dens_odi.c */
+extern int onedint();
+extern void recurint();
+
+/* famquant.c */
+extern void lfquantile();
+
+/* family.c */
+extern int lffamily(), lflink();
+extern int links(), stdlinks(), defaultlink(), validlinks();
+extern double b2(), b3(), b4(), lf_link(), invlink();
+extern void setfamily();
+
+/* lf_adap.c */
+extern int alocfit(), lfacri();
+
+/* lf_fitfun.c */
+extern void fitfun(), makecfn(), designmatrix();
+extern int calcp(), coefnumber();
+
+/* lf_nbhd.c */
+extern double kordstat(), rho();
+extern void nbhd();
+
+/* lf_robust.c */
+extern double median();
+extern void lf_robust();
+
+/* lfstr.c */
+extern int pmatch();
+
+/* lf_vari.c */
+extern void lf_vcov(), comp_vari(), local_df();
+
+/* lf_wdiag.c */
+extern int wdiag(), wdiagp();
+
+/* locfit.c */
+extern int locfit(), des_reqd(), des_reqi(), likereg();
+extern int reginit();
+extern void lfdata_init(), smpar_init(), deriv_init(), des_init(), lfiter();
+extern int lf_maxit, lf_debug;
+extern void lf_status_msg();
+
+/* minmax.c */
+extern double ipower(), minmax();
+
+/* weight.c */
+extern int lfkernel(), lfketype();
+extern double W(), weight(), weightd(), Wd(), Wdd(), wint();
+extern double Wconv(), Wconv1(), Wconv4(), Wconv5(), Wconv6(), Wikk();
+extern int iscompact(), wtaylor();
+
+#endif /* define I_LOCF_H */