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