I am running a Regional I-O model. Although I get printed the Regional Transactions Matrix, I cannot get the Leontief inverse of it printed. Instead, I get only dots.
/* Step 3.4: Computation of Regional Matrices */
DRMRg=CILQ.*DRMNt;
/* Regional Direct Requirements Matrix mxm */
ImpRgCf1=(sumc(drmnt-drmrg));
/*Regional Imports Coefficients vector adjusted for CILQ mx1*/
Print; print "Direct Requirements Regional for THESS"; print DRMRg;
/* Step 3.5: Sectoral Aggregation – Definition of the Regional Classification Scheme*/
C3=eye(m);
C4=C3-DRMRg;
LEONTIEFRg=inv(C4);
/* Regional Leontief Inverse Matrix mxm */
PrdnRg=(PrdnNt).*(EmpRg./EmpNt);
/* Regional Sectoral Output mx1 */
TransRg=DRMRg*diagrv(zeros(m,m),PrdnRg);
/* Regional Transactions Matrix */
ImpRgf=ImpRgCf1.*PrdnRg;
/* Regional Imports Vector mx1, from coefficients to values */
Print; print "Leontief Regional for THESS"; print LEONTIEFRg;
Print; print "Regional Sectoral Output"; print PrdnRg;
format /rds 14,3;
Print; print "Regional Transactions Matrix for THESS"; print TransRg;
1 Answer
0
In GAUSS, missing values and NaN's are represented by a dots. So if you print a GAUSS matrix and you see one or more dots, this is the problem. Here is a quick example:
// Create 2x2 matrix with one missing value
a = { 1 .,
3 4 };
b = 2.5;
// Create a 1x1 missing value
c = { . };
print "a.*b = " a.*b;
print "a.*c = " a.*c;
The printed output will be:
a.b = 2.5000000 . 7.5000000 10.000000 a.c = . . . .
You can use the GAUSS function isinfnanmiss
to check to see if a matrix contains ANY missing values, NaN's or infinities. For example after the code above, we could check a
like this:
if isinfnanmiss(a);
print "'a' has infinities, NaN's or missing values";
else;
print "'a' is a finite matrix";
endif;
To find the cause of your problem, you need to go back and see where the matrix with the missing values, TransRg
, was created. From your code, we can see that it was created on this line:
/* Regional Sectoral Output mx1 */
TransRg=DRMRg*diagrv(zeros(m,m),PrdnRg);
This means that either DRMRg
or PrdnRg
has NaN's. You can use the isinfnanmiss
function and/or some print statements to find out which is the problem and then trace it back to the source of the NaN's to solve your problem.
Your Answer
1 Answer
In GAUSS, missing values and NaN's are represented by a dots. So if you print a GAUSS matrix and you see one or more dots, this is the problem. Here is a quick example:
// Create 2x2 matrix with one missing value
a = { 1 .,
3 4 };
b = 2.5;
// Create a 1x1 missing value
c = { . };
print "a.*b = " a.*b;
print "a.*c = " a.*c;
The printed output will be:
a.b = 2.5000000 . 7.5000000 10.000000 a.c = . . . .
You can use the GAUSS function isinfnanmiss
to check to see if a matrix contains ANY missing values, NaN's or infinities. For example after the code above, we could check a
like this:
if isinfnanmiss(a);
print "'a' has infinities, NaN's or missing values";
else;
print "'a' is a finite matrix";
endif;
To find the cause of your problem, you need to go back and see where the matrix with the missing values, TransRg
, was created. From your code, we can see that it was created on this line:
/* Regional Sectoral Output mx1 */
TransRg=DRMRg*diagrv(zeros(m,m),PrdnRg);
This means that either DRMRg
or PrdnRg
has NaN's. You can use the isinfnanmiss
function and/or some print statements to find out which is the problem and then trace it back to the source of the NaN's to solve your problem.