wolffd@0: function P = chisquared_prob(X2,v) wolffd@0: %CHISQUARED_PROB computes the chi-squared probability function. wolffd@0: % P = CHISQUARED_PROB( X2, v ) returns P(X2|v), the probability wolffd@0: % of observing a chi-squared value <= X2 with v degrees of freedom. wolffd@0: % This is the probability that the sum of squares of v unit-variance wolffd@0: % normally-distributed random variables is <= X2. wolffd@0: % X2 and v may be matrices of the same size size, or either wolffd@0: % may be a scalar. wolffd@0: % wolffd@0: % e.g., CHISQUARED_PROB(5.99,2) returns 0.9500, verifying the wolffd@0: % 95% confidence bound for 2 degrees of freedom. This is also wolffd@0: % cross-checked in, e.g., Abramowitz & Stegun Table 26.8 wolffd@0: % wolffd@0: % See also CHISQUARED_TABLE wolffd@0: % wolffd@0: %Peter R. Shaw, WHOI wolffd@0: wolffd@0: % References: Press et al., Numerical Recipes, Cambridge, 1986; wolffd@0: % Abramowitz & Stegun, Handbook of Mathematical Functions, Dover, 1972. wolffd@0: wolffd@0: % Peter R. Shaw, Woods Hole Oceanographic Institution wolffd@0: % Woods Hole, MA 02543 wolffd@0: % (508) 457-2000 ext. 2473 pshaw@whoi.edu wolffd@0: % March, 1990; fixed Oct 1992 for version 4 wolffd@0: wolffd@0: % Computed using the Incomplete Gamma function, wolffd@0: % as given by Press et al. (Recipes) eq. (6.2.17) wolffd@0: wolffd@0: % Following nonsense is necessary from Matlab version 3 -> version 4 wolffd@0: versn_str=version; eval(['versn=' versn_str(1) ';']); wolffd@0: if versn<=3, %sigh wolffd@0: P = gamma(v/2, X2/2); wolffd@0: else wolffd@0: P = gammainc(X2/2, v/2); wolffd@0: end