image001.gifH O M E / I N F O / P R O D U C T S / O R D E R / S U P P O R T  

 

Contents / Getting started / FAQ / Recent changes



 

Detailed changes to TSP 5.1 since September 2009 and TSP 5.0 since March 2005

Detailed changes to TSP are listed here by "type" (enhancements and bugfixes), most recent first. Workarounds are available for many of the bugs. Updates can be downloaded from our password-protected download area; send email to us requesting a password if you need an update.

If you think you have found a new bug, please inform TSP tech support, but please, do so only after checking the lists below to make sure it has not already been reported and fixed.

ENHANCEMENTS    2009   (5.0)   2008   2007   2006   2005   (4.5)   (4.4)   (4.3)

2010

·         10-05-21 Runs which take longer than 1 minute have the elapsed time recorded at the end of the output file.

 

·         10-05-11 OPTIONS BYTE; store series in a single byte (instead of 4 or 8 bytes), if possible. Handles integers in the range -127 to 126. Does not work with sample gaps yet. May be useful with dummy variables or small integers in extremely large datasets.

 

·         10-05-11 WRITE(PAGE) writes a ^L to the output file.

 

·         10-03-02 SOLVE(NODROPMISS) allow missing values in the lagged endogenous variables assumes the user is multiplying them by zero to yield nonmissing results.

 

·         10-02-06 TSP command line can handle pathnames with imbedded spaces, by enclosing the full pathname in double quotes. Example: tsp "f 2\bar" looks for a TSP batch file bar.tsp in the folder "f 2" .

 

2009

 

·         09-11-16 VAR Impulse Response graphs now have the time axis labelled in periods instead of with dates. The graphs are displayed and associated series like @IRY1_Y2 are stored even when NBOOT=0.

 

·         09-09-06 DIVIND([SPLICE]/NOSPLICE) provides alternative methods to handle zero and negative values. SPLICE is the default and has been since TSP 4.2B (1994). Blocks of observations with the same set of nonzero quantities are used to compute indices, and those indices are spliced together. Zero quantities are thought of as goods which are not yet available, so those goods are excluded from the index until their quantity is nonzero. With SPLICE, any negative values in P or Q are set to zero before starting calculations. Missing values are allowed in P if Q is zero. NOSPLICE uses zero weights and small positive values instead. It attempts to apply the standard formulas, but with these alternate values when zeros or negative values would create problems.

 

TSP 5.1 for Windows released, incorporating all the changes below.

 

·         09-07-21 RANDOM (BINOMIAL,N=,P=) X; to create binomial random variables. Example:

 

RANDOM (BINOMIAL,N=100,P=.3) X;

yields integer values for X in the range 0 to 100, with mean approximately 30.

 

·         09-07-21 RANDOM (MULTINOMIAL,N=,PVEC=) X1-XC; to create multinomial random variables. Example:

 

MMAKE PV .2 .3 .4 .1;

RANDOM(MULTINOMIAL,N=100,PVEC=PV) X1-X4;

yields integer values for X1-X4 in the range 0 to 100, with means approximately 20, 30, 40 and 10. X1+X2+X3+X4 = 100 for each observation.

 

·         09-07-18 MERGE  ID1 [X1] | ID2 [X2]; command added. ID1 and ID2 are ID variables to be matched. They are sorted and can have no duplicate or missing values. X1 and X2 are optional lists of variables to be merged along with ID1 and ID2. Rows of missing values are inserted in ID1 and ID2 (and the Xs) so that the ID values match. MERGE works only on FREQ N; The input SMPL is ignored and the merge operates on the maximum defined lengths of ID1 and ID2.

 

Example 1:

MERGE ID1 | ID2;

Input:

ID1 ID2 

1    1 

2    3 

3    4 

5    5

Output:

ID1 ID2 

1    1 

2    .

3    3 

.    4 

5    5

 

Example 2:

MERGE IDA XA1 | IDB XB1 XB2;

Input:

IDA IDB XA1 XB1 XB2 

1    1    11   11   12 

2    3    21   31   32 

3    4    31   41   .  

5         51   52

Output:

IDA IDB XA1 XB1 XB2 

1    1    11   11 12 

2    .    21   .    . 

3    3    31   31   32 

.    4     .   41   . 

.    5    .    51   52

 

·         09-06-24 GRAPH (CIRCLE=cseries) circleplot. Uses a circle for the first pair of series, with the area of the circle proportional to the values of cseries. This is useful for a weighted correlation or weighted regression. Values in cseries less than about 100 may be invisible on the graph, so some experimentation may be needed to scale cseries. Example:

 

OLSQ(WEIGHT=POP)Y C X;

POPWT = SQRT(POP);

GRAPH(CIRCLE=POPWT) X Y @FIT;

 

·         09-06-23 All filenames (pathnames) can now have up to 255 characters. The former limit was 128.

 

·         09-03-22 Enhancements to the DIVIND procedure.

DIVIND([ZERO]/NOZERO,INDEX=[DIVISIA]/FISHER/LASPEYRE/PAASCHE)

ZERO option allows zero quantities (as in TSP 4.5); NOZERO stops them (as in TSP 4.4).

INDEX=LASPEYRE for Laspeyres index.

INDEX=PAASCHE for Paasche index.

INDEX=FISHER computes Fisher Ideal index.  FISHER = SQRT(Laspeyres*Paasche).

 

09-03-15 Decimal style dates for FREQ Q and M, in the SMPL command only. These may be easier to store and manipulate than colon style dates. Colon (:) style dates are still fully supported. Examples:

 

FREQ Q;  SMPL 48.1 85.4;  
FREQ M;  CONST A 48.01 B 85.12;  SMPL A,B;

 

·         09-03-02 WRITE(ROWS=(list of row names),COLS=(list of column names)) matrix; labels rows and columns of a matrix with names instead of numbers, when printing them.

 

·         09-01-09 SORT(METHOD=BUBBLE/[QUICK]) - METHOD=BUBBLE preserves the order of ties. This allows sorting by multiple keys using a series of SORT commands. There will also be a new option soon to sort by multiple keys in a single SORT command.

2008

·         08-10-05 VAR(SHOCK=GEN,NBOOT=200,BOUNDS=.95,...) ... ;  has two new features:

 

SHOCK=GEN specifies  Generalized Impulse Response, which is invariant to the ordering of the equations.  It is described in papers by Pesaran.

NBOOT= specifies the number of bootstrap replications for computing confidence intervals for the impulse response functions.  The default is 200.  A nonparametric bootstrap is used - NBOOT resamples are taken from the rows of the original data matrix.  The regression coefficients, residual covariance matrix, shock matrix, and impulse response functions are computed for each resample.

 

BOUNDS= specifies the significance level of the confidence intervals. The default is .95, for 95%. For each dependent variable, the IRs and confidence intervals are printed in a table. If the center column is labelled GNP_M1 , then it is the impulse response of GNP to a shock in M1.  The printing of the table can be suppressed by using  SUPRES @IMPRES;  or  SILENT. The columns are stored as series of length NHORIZ, starting in the first observation of the estimation sample.  In the example above, the series names would be  @IRGNP_M1 @IRGNP_M1LB95% @IRGNP_M1UB95% .To plot these by hand after the VAR, you could use:

 

select .not.miss(@IRGNP_M1);
plot @IRGNP_M1 @IRGNP_M1LB95% @IRGNP_M1UB95% ;
 

The command  PLOTS(PREVIEW) IR;  can be used in TSP/GiveWin or TSP/Oxmetrics to automatically display color plots of the impulse responses for all subsequent VAR commands, even when running in batch mode. For NEND endogenous variables, there are NEND such plots per window - responses of a given endogenous variable to shocks in all variables. There will also be NEND VAR plot windows created, labelled VAR, VAR2, etc.

You can use GiveWin to select a window and edit the plot. Here are some screen shots of plots for Generalized and Cholesky-factored shocks with 3 endogenous variables:

 

http://www.tspintl.com/images/gir_gen.gif

http://www.tspintl.com/images/gir_chol.gif

 

The bold title text was added later after using Shift-PrintScrn to capture the screen shots.

 

·         08-10-03 LSQ(HCOMEGA=BLOCK/DIAGONAL,...) ... ;  Panel-Robust SEs for LSQ, for single or multiple equations, with or without instruments. When FREQ(PANEL) is in effect, the default is HCOMEGA=BLOCK when the ROBUST or HCOV=R options are used.  The HCOMEGA option is also used in OLSQ, 2SLS and PANEL.  The same as OLSQ for a single equation linear model.  Not exactly the same as ML(HCOV=Q) for a nonlinear least squares model, because LSQ does not use second derivatives.

 

·         08-10-03 ML(HCOV=QP,...) ... ;  Clustered BHHH and Panel-Robust SEs for the ML command.  The FREQ(PANEL) info is used to sum the gradient for each individual, and then the outer product is computed to add to the clustered BHHH matrix.  HCOV=P is not used much, and it yields zero standard errors for fixed effects.  No degrees of freedom adjustment is made to the VCOV at present.

 

HCOV=QP is available now in the following commands:  ML, PROBIT(REI), PROBIT(FEI)  (the covariance matrix is singular for the fixed effects).

 

·         08-09-03 READ(SHEET=string,FILE=filename) ... ;  reads a particular worksheet in an Excel 5 or higher file (with multiple sheets).  The default is to read the first sheet.  If you request a sheet that is not in the file, TSP will list the available sheet names in the file. Problems with reading strings and large (> 7MB)  Excel 5 and higher files have been fixed.

 

·         08-08-21 READ(FILE='xxx.DTA')  now reads Stata version 10 .DTA files.

 

·         08-01-27 LAD(METHOD=SUBSETS,...) ... ;  bypasses the default Barrodale-Roberts or BRCENS iterations and evaluates the objective function for all possible subsets of K observations, where K is the number of RHS variables. (The K observations are fitted exactly to the objective function to yield a vector of parameter estimates, then the objective function is computed for all observations using this vector). For censored LAD or quantile regression, this is guaranteed way of finding the global optimum, but it may take a very long time if K is large. For uncensored LAD or quantile regression, this is a way of investigating possible multiple optima.  There may be multiple global optima (different parameter vectors which yield the same objective function value).  If this occurs, the different solutions are stored in @COEFD.  To provide a reproducible result, instead of choosing one of the multiple solutions atrandom, TSP uses the following rules to choose a solution:

 

1.      Try an arithmetic average of the parameter vectors.  If this yields the same objective function value, this is the reported solution. (This is equivalent to using the average of the two middle values for the median, when there is an even number of observations).

2.      Choose the parameter vector with minumum L1 norm (sum of absolute values of the coefficients).  If this yields a tie, use rule 3:

3.      Choose the parameter vector with minumum absolute value of the first  coefficient.  If this yields a tie, pick the first vector of those tied.

 

Note:  METHOD=SUBSETS is not used when doing bootstrapping of the SEs.

 

Example:  median of the numbers 1-10:

 

smpl 1,10; trend t;
LAD t c;   ? reported solution 5 , but any solution from 5 to 6 is valid
LAD (METHOD=SUBSETS) t c;   ? reports solution 5.5 , average of 5 and 6

 

·         08-01-27 LMS  now detects and reports multiple different solutions using the same methods and rules as above.  LMS can try a number of random subsets when the number of possible subsets is large.  Random subsets are not implemented for LAD at present.

2007

  • 07-04-17 LIML now stores the log likelihood in @LOGL.  This may be useful for likelihood ratio tests when the set of instruments and endogenous variables remains the same.  The LOGL is a function of the log eigenvalue and the reduced form residual covariance matrix.  It is the same as that computed using FIML with linear equations for all the RHS endogenous variables as functions of the instruments.
  • 07-04-17 FORM(SUM,RESID) S3 X1-X3;  now creates  FRML S3 X1+X2+X3;  (an unnormalized equation).  Previously the RESID option was ignored when SUM was used.
  • 07-04-15 When running TSP in interactive mode, TSP will now read up to 500 characters per input line.  Formerly the limit was 80.
  • 07-02-09 ANALYZ(PRMEAN,PRSERIES) - new options when ANALYZ computes series.  PRMEAN is true by default, and prints summary statistics for computed series, such as mean, std.dev., min, max and median. PRSERIES is true when @NOB <= 100, and prints computed series  directly.  Previously PRSERIES was always true, and this caused occasional problems when series were computed and printed by mistake (when the user intended to analyze a scalar function). So now, if you want to print the computed series (and standard error and t-statistic for each observation) when there are more than 100 observations in the current sample, specify the PRSERIES option.
  • 07-02-24 FIML will detect a SUR model (Jacobian is the Identity matrix), which will speed up several of the computations.  This may be helpful  when FIML is used instead of LSQ on large models to reduce memory requirements.
  • 07-01-20 MODEL will suggest using SIML instead of SOLVE when the equations are not uniquely normalized, or when a LHS variable is not an  endogenous variable.

2006

  • 06-12-06 STEPMEM=n  a new nonlinear option for stepsize memory. The initial stepsize lambda is remembered from the previous iteration, and reset to lambda=1 every nth iteration.  The default is STEPMEM=1, which resets lambda=1 every iteration.  This option may be helpful if the natural stepsize for a model is different from 1 and tends to be about the same for successive iterations.  For example, in the ILLUS41 FIML testrun, the stepsize used is often 2.  Using STEPMEM=5 instead of STEPMEM=1 yields convergence in 17 iterations and 73 function evaluations, instead of 20 iterations and 96 function evaluations.
  • 06-10-29 SHOW SERIES  has more concise output, which leaves more room for printing documentation.
  • 06-10-29 READ Stata v8-v9 .DTA files
  • 06-10-28 GMM(MASK=matrix)  check that the number of active orthogonality conditions from the MASK is large enough to identify all the Params. Otherwise it might be difficult for a user to understand the cause of the nonidentified Params.
  • 06-09-05 LP command added for Linear Programming. LP(MAX/[MIN], NLE=<number of <= constraints>, NGE=<number of >= constraints>,     NEQ=<number of = constraints>, TOL=<eps>,SILENT)  <b_obj> <b_constraints> <rhs>;  LP solves for x to minimize phi = b_obj'x, with constraints  b_constraints*x <= >= = rhs  and  x >= 0 .  rhs >= 0  as well. The solution is stored as @COEF.  @PHI (objective function) and @IFCONV are also stored. The Simplex method subroutine from Numerical Recipes is used, which has a nice explanation of the method and some examples which were used for testing.  The LP command was also tested on LAD estimation with the Stackloss dataset. Here is an example of using the LP command to solve the first example  in the Numerical Recipes description:

  ------------

  ? Maximize:  2*x2 - 4*x3

  ? Subject to:  x1 + 6*x2 - x3 = 2

  ?           -3*x2 + 4*x3 + x4 = 8

  ? The solution is:  x2 = 1/3, x4 = 9  (x1=0, x3=0),

  ?  with objective function = 2/3 .

  read(nrow=1,ncol=4) objf1;

  0 2 -4 0 ;

  read(nrow=2,ncol=1) dep1;

  2 8 ;

  read(nrow=2,ncol=4) constr1;

  1  6 -1  0

  0 -3  4  1 ;

  LP(NEQ=2,MAX) objf1 constr1 dep1;

  ------------

  • 06-03-24 Batch input files can have different types of End-of-Line characters, to handle all types of text files.  For example, when downloading  examples from the TSP webpage (unix system) onto a PC, in the past TSP on the PC would not recognize the unix End-of-Line character (LF).  This is also helpful with Mac TSP, where the older MacOS used CR and the new one uses LF, so that both are supported. The input line length is also unlimited now (previous limit was 500 characters).  An upward incompatibility is that READ with a Fortran FORMAT is no longer allowed with data in the batch input file. The Fortran FORMAT still works on external files, though.
  • 06-03-24 Long programs with loops should use memory more efficiently now, because the number of variables which can decrease and increase  in size without wasting memory has been increased from to 10 to 100. When memory runs short, an automatic COMPRESS is used, which deletes @variables unexpectedly.  This should occur less frequently now. It is still helpful to create variables at their largest size first.
  • 06-02-10 OLSQ, and regression diagnostics - a zero R-squared is detected more accurately.

 

2005

  • 05-04-05 ANALYZ - more concise labelling for scalar functions with NDRAW=;  the new function names are used to label the rows in a combined table. Also, the label for the last column (number of draws used) is changed from num.good to num.draw .
  • 05-04-05 OPTIONS CRT;  is now the default style for echoing the commands in the output file.  This is more concise, since it does not have a large left margin, and makes long lines less likely to wrap around.

 

If you have any questions or comments about TSP please send an email to info@tspintl.com.

Comments or questions about this website should be sent to news@tspintl.com.