That covers situations B & C, but A is still a problem AFAICS.

One approach is a cover verb that checks and categorises the various 
combinations of x and y into "OK", "A or B" and "C" before calling chisqcdf for 
the "OK" group and amending the array with 1s & 0s for the others. The only 
difficulty is to determine the cutoffs!

> From: Roger Hui
> In that case you can do    chisqcdf :: errhandler "0
> where errhandler will return 0 or 1 as appropriate,
> after it has examined x and y .
> 
> > From: "Sherlock, Ric" 
> >
> > As I see it there are 3 specific situations that need attention
> > and chisqcdf :: 0: will only solve one of them.
> >
> > A. For some large test statistics where the answer should be 1,
> > 0 is returned instead. How large depends on the degrees of freedom:
> > Eg:
> >    9 chisqcdf 1415 + i.10
> > 1 1 0 0 0 0 0 0 0 0
> >
> > B. For even larger test statistics where the answer should be 1,
> > a NaN error is returned instead.
> > Eg:
> >    9 chisqcdf 1471
> > 0
> >    9 chisqcdf 1472
> > |NaN error: chisqcdf
> > |       (1 H.(1+x)%x&((*^)*(^-)~))y
> >
> > C. For large degrees of freedom where the answer should be 0, a
> > NaN error is returned instead. The number of degrees of freedom
> > is dependent on the size of the test statistic:
> > Eg:
> >    400 chisqcdf 73 + i.10
> > 0 0 0 0 0 0 0 0 0 0
> >    400 chisqcdf 83
> > |NaN error: chisqcdf
> > |   400     chisqcdf 83
> >
> >
> > > From: Roger Hui
> > >
> > > Would you be satisfied with  chisqcdf :: 0: ?
> > >
> > > The values you gave that led to NaN errors are
> > > ridiculously large in the context of the chi-squared distribution.
> > > A&S http://www.math.sfu.ca/~cbm/aands/page_941.htm
> > > consider degrees of freedom > 30 to be "large".
> > >
> > >
> > >
> > > ----- Original Message -----
> > > From: "Sherlock, Ric" <[email protected]>
> > > Date: Monday, September 14, 2009 18:20
> > > Subject: [Jprogramming] Chi squared CDF definition unstable
> > > To: Programming forum <[email protected]>
> > >
> > > > The definition for the Chi squared Cumulative Distribution
> > > > Function given in the essay
> > > > http://www.jsoftware.com/jwiki/Essays/Chi%20Squared%20CDF
> > and in
> > > > the distribution.ijs script of the stats/base addon, seems
> > to be
> > > > unstable for large values.
> > > > For example:
> > > >
> > > >    9 chisqcdf 5 10 30 100 1000 1400 1420 1470 1471
> > > > 0.16569174 0.64951479 0.99956128 1 1 1 0 0 0
> > > >    9 chisqcdf 1472
> > > > |NaN error: chisqcdf
> > > > |       (1 H.(1+x)%x&((*^)*(^-)~))y
> > > >
> > > > Also:
> > > > 100 200 400 600 3545 chisqcdf 3
> > > > 4.8195188e_57 9.8668347e_142 0 0 0
> > > >    3546 chisqcdf 3
> > > > |NaN error: chisqcdf
> > > > |   3546     chisqcdf 3
> > > >
> > > > Has anyone come up with more robust implementations?
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to