.- help for ^ridder^ [STB-17: ssi5.2; STB-19: ssi5.3; STB-24: ssi5.4] .- Equation solving by Ridders' Method ----------------------------------- ^ridder^ fcnmask ^=^ exp_y ^from^ exp_0 ^to^ exp_1 [^tol^ exp_t] [^ltol^ exp_l] where exp_y, exp_0, exp_1, exp_t, and exp_l refer to expressions (but are typically specified as numbers) and where fcnmask is either: (1) an expression containing ^X^ (2) progname [args] ^X^ [args] ^returns^ {^exp^|^macro^} name If one of ^tol^ or ^ltol^ is omitted, ^ridder^ ignores that constraint. ^tol 1e-6^ is assumed if neither ^tol^ nor ^ltol^ is specified. Description ----------- ^ridder^ finds the value of X such that f(X) = exp_y or, more precisely: |f(X) - exp_y| < e and |x - x_hat| < exp_t where e = exp_y*max(|exp_y|,1). The search is carried out over the range exp_0 <= X <= exp_1. The function f() may be specified on the command line (first syntax for fcnmask) or as a user-written program (second sytnax). Example 1 --------- Find the value of chi-square with 2 degrees of freedom that is just signif- icant at the 5% level. Solution: Stata's ^chiprob(^d^,^x^)^ function returns the reverse cumulative for chi-square value x with d degrees of freedom (e.g., ^chiprob(2,3)^ is .2231, meaning chi-square 2 with 3 degrees of freedom is significant at the 22.3% percent level). Thus, we want to find X such that ^chiprob(2,^X^)^=.05. From knowledge of the chi-square distribution, we know the answer lies between 3 and 20. We type: . ^ridder chiprob(2,X)=.05 from 3 to 20^ Example 1, second solution -------------------------- We define the following program: ^program define mychi^ ^global S_1 = chiprob(`1',`2')^ ^end^ and then type . ^ridder mychi 2 X returns macro S_1 =.05 from 3 to 8^ Alternatively, we define the program ^program define mychi^ ^scalar answer = chiprob(`1',`2')^ ^end^ and then type . ^ridder mychi 2 X returns exp answer =.05 from 3 to 8^ Example 2 --------- Given a t-1 1.1 -2 S = [ ( ----------- - 2 ) ( ------- ) ] t sqrt(S ) a t-1 t Let a[1] = 1.5 and a[2], a[3], ..., be 1. Find S[1] such that S[19]=1/22^^2. A program to calculate S[t], t=1,...,19 is given S[1] is: ^program define simul^ ^drop _all^ ^set obs 19^ ^gen a = cond(_n==1,1.5,1)^ ^gen S = `1' in 1^ ^replace S=((a[_n-1]/sqrt(S[_n-1])-2)*(1.1/a))^^-2 in 2/l^ ^end Typing "^simul .1^" would create the series based on S[1]=.1. Example 2, continued -------------------- We can find S[1] such that S[19]==1/22^^2 by typing: . ^ridder simul X returns exp S[19] =1/22^^2 from .001 to .75^ Deciphering: "^simul X^" means ^ridder^ can calculate values of the function by issuing the command ^simul^ followed by the number at which it wants the function evaluated. ^X^ is a placeholder. "^returns exp S[19]^" means simul returns the answer as the expression S[19], meaning the 19th observation of the data variable S. "^=1/22^^2^" means we want the answer to be 1/22^^2. "^from .001 to .75^" means we want to search over the range .001 to .75 for the solution. Author ------ Tim McGuire, Stata Corporation EMAIL tech-support@@stata.com Also see -------- STB: ssi5.4 (STB-24), ssi5.3 (STB-19), ssi5.2 (STB-17), ssi5 (STB-16), ssi5.1 (STB-16) On-line: ^help^ for @fcnplot@ (if ssi5.1 installed)