.- help for ^praccum^ - 1.6.4 - 2Nov2005 .- Accumulate results from ^prvalue^ ------------------------------- ^praccum^, [^xis(^value^)^ ^u^sing^(^matrixnm^)^ ^s^aving^(^matrixnm^)^ ^gen^erate^(^rootname^)^] where either saving() or using() are required. Description ----------- ^praccum^ accumulates predictions from a series of calls to ^prvalue^ and optionally saves these accumluated values to variables. These variables can then be plotted. This command allows you to plot predicted values in situations that cannot be handled by ^prgen^ (e.g., nonlinearities). The command works with cloglog, cnreg, intreg, logit, mlogit, mprobit, nbreg, ologit, oprobit, poisson, probit, regress, slogit, tobit, zinb, zip, ztnb, and ztp. Options ------- ^xis(^value^)^ specifies the value of the x-variable associated with the predicted values that are being accumulated. If ^xis^ is not specified, new values are not accumulated. ^using(^matrixnm^)^ specifies the name of matrix to which accumulated results should be added. ^matrixnm^ will be created if it does not exist. ^saving(^matrixnm^)^: is only used to save the initial results and differs from differs from ^using()^ in that it will overwrite ^matrixnm^ if it exists. ^generate(^rootname^)^: root name of variables to be created from the matrix specified by ^using^. This is only used when you are done accumulating results and are ready to generate the variables. Examples of included squared terms ---------------------------------- Consider the logit: ^. use binlfp,clear^ ^. gen age2 = age*age^ ^. logit lfp k5 k618 age age2 wc hc lwg inc^ If you want to plot the predictions against age, you cannot use ^prgen^ since when age changes, age2 must also change. The command: ^. prvalue , x(age=20 age2=400) rest(mean)^ computes predicted values for age=20 and age2=20*20=400. The command: ^. praccum , saving(mage) xis(20)^ creates a matrix named mage that contains three columns. The first column will have a 20 for the value of age; the second the probability of a 0 given the values of the independent variables used in ^prvalue^, and the third column will have the probability of a 1. We now change the value of age and add this to the matrix mage: ^. prvalue , x(age=25 age2=625) rest(mean)^ ^. praccum , using(mage) xis(25)^ Here we are just adding a row to mage. This process repeats for other values: ^. prvalue , x(age=30 age2=900) rest(mean)^ ^. praccum , using(mage) xis(30)^ ^. prvalue , x(age=35 age2=1225) rest(mean)^ ^. praccum , using(mage) xis(35)^ ^. prvalue , x(age=40 age2=1600) rest(mean)^ ^. praccum , using(mage) xis(40)^ ^. prvalue , x(age=45 age2=2025) rest(mean)^ ^. praccum , using(mage) xis(45)^ ^. prvalue , x(age=50 age2=2500) rest(mean)^ ^. praccum , using(mage) xis(50)^ ^. prvalue , x(age=55 age2=3025) rest(mean)^ ^. praccum , using(mage) xis(55)^ ^. prvalue , x(age=60 age2=3600) rest(mean)^ ^. praccum , using(mage) xis(60) gen(agsq)^ Produces the output: ^New variables created by praccum:^ ^Variable | Obs Mean Std. Dev. Min Max^ ^---------+-----------------------------------------------------^ ^ agsqx | 9 40 13.69306 20 60^ ^ agsqp0 | 9 .4282142 .1752595 .2676314 .7479599^ ^ agsqp1 | 9 .5717858 .1752595 .2520402 .7323686 ^ Which can be plotted: ^. graph agsqp1 agsqx,c(s)^ Example using ^forvalues^ ------------------------- The ^forvalues^ command makes using ^praccum^ much simpler. The following yields the same output as the example above: ^. capture matrix drop mage^ ^. forvalues count = 20(5)60 {^ ^. local countsq = `count'*`count'^ ^. prvalue, x(age `count' age2 `countsq') rest(mean) brief^ ^. praccum, using(mage) xis(`count')^ ^. }^ ^. praccum, using(mage) gen(agsq)^ Example using global macros --------------------------- ^forvalues^ is not available for Stata 6. Here, the task can still be simplified by using global macros. The advantage of this approach is that you can let Stata do the multiplying: ^. global age = 20^ ^. global age2 = $age*$age^ ^. prvalue , x(age=$age age2=$age2) rest(mean)^ ^. praccum , saving(mage) xis($age)^ ^. global age = 25^ ^. global age2 = $age*$age^ ^. prvalue , x(age=$age age2=$age2) rest(mean)^ ^. praccum , using(mage) xis($age)^ ^. global age = 30^ ^. global age2 = $age*$age^ ^. prvalue , x(age=$age age2=$age2) rest(mean)^ ^. praccum , using(mage) xis($age)^ ^. global age = 35^ ^. global age2 = $age*$age^ ^. prvalue , x(age=$age age2=$age2) rest(mean)^ ^. praccum , using(mage) xis($age)^ ^. global age = 40^ ^. global age2 = $age*$age^ ^. prvalue , x(age=$age age2=$age2) rest(mean)^ ^. praccum , using(mage) xis($age)^ ^. global age = 45^ ^. global age2 = $age*$age^ ^. prvalue , x(age=$age age2=$age2) rest(mean)^ ^. praccum , using(mage) xis($age)^ ^. global age = 50^ ^. global age2 = $age*$age^ ^. prvalue , x(age=$age age2=$age2) rest(mean)^ ^. praccum , using(mage) xis($age)^ ^. global age = 55^ ^. global age2 = $age*$age^ ^. prvalue , x(age=$age age2=$age2) rest(mean)^ ^. praccum , using(mage) xis($age)^ ^. global age = 60^ ^. global age2 = $age*$age^ ^. prvalue , x(age=$age age2=$age2) rest(mean)^ ^. praccum , using(mage) xis($age) gen(agsq)^ ^. graph agsqp1 agsqx,c(s)^ .- Authors: J. Scott Long - jslong@@indiana.edu Jeremy Freese - jfreese@@ssc.wisc.edu www.indiana.edu/~jslsoc/