Hello, Q&A manager.
I'd like to ask you how to control error messages in Gauss.
When I run my Gauss code, it sometimes generates a singular matrix for a gradient.
Inverting it with invpd command leads to the error message, and the program stops in the middle of the Monte Carlo simulation. However, I want to keep it running such the program moves to the next Monte Carlo dataset. Is there a command like capture in STATA?
Or is there any way to check singularity of matrices and skip their inversion?
Regards,
Sanghyeok
1 Answer
0
You can use the trap keyword to control whether some commands print an error and stop the program, or return a scalar error code. In the most simple case, set trap to 1 to trap errors (i.e return a scalar error code instead of stopping the program. Set trap to 0 to return the default behavior (stopping the program with an error message). For example:
//Create a symmetric NON-positive definite matrix x = { 3 6 9 6 12 18 9 18 27 }; //Turn error trapping on trap 1; //Call 'invpd' i = invpd(x); //Check to see if return is scalar error code if scalmiss(i); //Code to handle case where 'x' is not positive-definite endif;
The scalmiss function checks to see whether a GAUSS matrix is a scalar error code, or not. scalerr returns the error number from inside a scalar error code and you can create a scalar error code with an integer error code inside by using the error function.
Your Answer
1 Answer
You can use the trap keyword to control whether some commands print an error and stop the program, or return a scalar error code. In the most simple case, set trap to 1 to trap errors (i.e return a scalar error code instead of stopping the program. Set trap to 0 to return the default behavior (stopping the program with an error message). For example:
//Create a symmetric NON-positive definite matrix x = { 3 6 9 6 12 18 9 18 27 }; //Turn error trapping on trap 1; //Call 'invpd' i = invpd(x); //Check to see if return is scalar error code if scalmiss(i); //Code to handle case where 'x' is not positive-definite endif;
The scalmiss function checks to see whether a GAUSS matrix is a scalar error code, or not. scalerr returns the error number from inside a scalar error code and you can create a scalar error code with an integer error code inside by using the error function.