看到文献中有一段关于使用simulation方法解决线性规划问题的shazam代码,由于对shazam得有些命令不懂,使用一些简单的数据运行后,总是得不到结果,请楼主指点一下。
代码如下:
* The file parm.txt contains estimated parameters of group frontiers (by column)
* The file sfa#.txt contains n# data observations for group#
* Sections 1 and 3 are problem-specific.
* 1. SET NUMBERS OF PARAMETERS ETC.
gen1 nparms = 10
gen1 ngroups = 6
gen1 n1 = 513
gen1 n2 = 587
gen1 n3 = 2560
gen1 n4 = 1958
gen1 n5 = 1361
gen1 n6 = 593
* 2. READ THE ESTIMATED PARAMETERS OF THE GROUP FRONTIERS
smpl 1 nparms
read (parm.txt) parm / rows = nparms cols = ngroups
do# = 1,ngroups
dim b# nparms
copy parm b# / fcols=#;# tcols = 1;1
endo
* 3. READ THE DATA AND CONSTRUCT DATA MATRICES AND VECTORS
gen1 j2 = n1+1
gen1 j3 = n1+n2+1
gen1 j4 = n1+n2+n3+1
gen1 j5 = n1+n2+n3+n4+1
gen1 j6 = n1+n2+n3+n4+n5+1
gen1 k2 = n1+n2
gen1 k3 = n1+n2+n3
gen1 k4 = n1+n2+n3+n4
gen1 k5 = n1+n2+n3+n4+n5
gen1 n = n1+n2+n3+n4+n5+n6
smpl 1 n
genr one = 1
genr dummy = 0
read (sfa1.txt) group t ly l×1-l×5 l×11-l×15 l×22-l×25 l×33-l×35 l×44-l×45 l×55
smpl j2 k2
read (sfa2.txt) group t ly l×1-l×5 l×11-l×15 l×22-l×25 l×33-l×35 l×44-l×45 l×55
smpl j3 k3
read (sfa3.txt) group t ly l×1-l×5 l×11-l×15 l×22-l×25 l×33-l×35 l×44-l×45 l×55
smpl j4 k4
read (sfa4.txt) group t ly dummy l×1-l×5 l×11-l×15 l×22-l×25 l×33-l×35 l×44-l×45 l×55
smpl j5 k5
read (sfa5.txt) group t ly l×1-l×5 l×11-l×15 l×22-l×25 l×33-l×35 l×44-l×45 l×55
smpl j6 n
read (sfa6.txt) group t ly l×1-l×5 l×11-l×15 l×22-l×25 l×33-l×35 l×44-l×45 l×55
smpl 1 n
matrix x = one|dummy|l×1|l×2|l×3|l×4|l×5|l×11|l×12|l×13|l×14|l×15|l×22|l×23|l×24|l×25|l×33|& l×34|l×35|l×44|l×45|l×55
dim x1 n1 nparms x2 n2 nparms x3 n3 nparms x4 n4 nparms x5 n5 nparms x6 n6 nparms
copy × x1 / frows=1;n1 trows=1;n1
copy × x2 / frows=j2;k2 trows=1;n2
copy × x3 / frows=j3;k3 trows=1;n3
copy × x4 / frows=j4;k4 trows=1;n4
copy × x5 / frows=j5;k5 trows=1;n5
copy × x4 / frows=j6;n trows=1;n6
do# = 1,ngroups
matrix yhat# = x#*b#
endo
matrix b = -(yhat1'|yhat2'|yhat3'|yhat4')'
* 4. OBTAIN AND PRINT PARAMETERS OF THE METAFRONTIER
stat x / means = xbar
matrix c = ((-xbar')|xbar')'
matrix A = (-x)|x
?lp c A b / iter = 5000 primal = bstar
dim beta1 nparms beta2 nparms
gen1 p1 = nparms+1
gen1 p2 = nparms*2
copy bstar beta1 / frows=1;nparms trows=1;nparms
copy bstar beta2 / frows=p1;p2 trows=1;nparms
matrix beta = beta1-beta2
print beta
* 5. OBTAIN AND PRINT METATECHNOLOGY RATIOS
do# = 1,ngroups
matrix xbeta# = x#*beta
matrix mtr# = exp(yhat#)/exp(xbeta#)
stat mtr#
print mtr#
endo
stop
运行结果如下:
|_* The file parm.txt contains estimated parameters of group frontiers (by column)
|_* The file sfa#.txt contains n# data observations for group#
|_* Sections 1 and 3 are problem-specific.
|_* 1. SET NUMBERS OF PARAMETERS ETC.
|_gen1 nparms = 10
|_gen1 ngroups = 6
|_gen1 n1 = 513
|_gen1 n2 = 587
|_gen1 n3 = 2560
|_gen1 n4 = 1958
|_gen1 n5 = 1361
|_gen1 n6 = 593
|_* 2. READ THE ESTIMATED PARAMETERS OF THE GROUP FRONTIERS
|_smpl 1 nparms
|_read (parm.txt) parm / rows = nparms cols = ngroups
UNIT 88 IS NOW ASSIGNED TO: parm.txt
10 ROWS AND 6 COLUMNS, BEGINNING AT ROW 1
|_do# = 1,ngroups
|_dim b# nparms
|_copy parm b# / fcols=#;# tcols = 1;1
|_endo
_do# = 1,ngroups
****** EXECUTION BEGINNING FOR DO LOOP # = 1
#_ dim b1 nparms
#_ copy parm b1 / fcols=1;1 tcols = 1;1
#_ endo
#_ dim b2 nparms
#_ copy parm b2 / fcols=2;2 tcols = 1;1
#_ endo
#_ dim b3 nparms
#_ copy parm b3 / fcols=3;3 tcols = 1;1
#_ endo
#_ dim b4 nparms
#_ copy parm b4 / fcols=4;4 tcols = 1;1
#_ endo
#_ dim b5 nparms
#_ copy parm b5 / fcols=5;5 tcols = 1;1
#_ endo
#_ dim b6 nparms
#_ copy parm b6 / fcols=6;6 tcols = 1;1
#_ endo
****** EXECUTION FINISHED FOR DO LOOP #= 6
|_* 3. READ THE DATA AND CONSTRUCT DATA MATRICES AND VECTORS
|_gen1 j2 = n1+1
|_gen1 j3 = n1+n2+1
|_gen1 j4 = n1+n2+n3+1
|_gen1 j5 = n1+n2+n3+n4+1
|_gen1 j6 = n1+n2+n3+n4+n5+1
|_gen1 k2 = n1+n2
|_gen1 k3 = n1+n2+n3
|_gen1 k4 = n1+n2+n3+n4
|_gen1 k5 = n1+n2+n3+n4+n5
|_gen1 n = n1+n2+n3+n4+n5+n6
|_smpl 1 n
|_genr one = 1
|_genr dummy = 0
|_read (sfa1.txt) group t ly l×1-l×5 l×11-l×15 l×22-l×25 l×33-l×35 l×44-l×45 l×55
$
...SYNTAX ERROR IN LINE ABOVE NEAR $
|_smpl j2 k2
|_read (sfa2.txt) group t ly l×1-l×5 l×11-l×15 l×22-l×25 l×33-l×35 l×44-l×45 l×55
$
...SYNTAX ERROR IN LINE ABOVE NEAR $
|_smpl j3 k3
|_read (sfa3.txt) group t ly l×1-l×5 l×11-l×15 l×22-l×25 l×33-l×35 l×44-l×45 l×55
$
...SYNTAX ERROR IN LINE ABOVE NEAR $
|_smpl j4 k4
|_read (sfa4.txt) group t ly dummy l×1-l×5 l×11-l×15 l×22-l×25 l×33-l×35 l×44-l×45 l×55
$
...SYNTAX ERROR IN LINE ABOVE NEAR $
|_smpl j5 k5
|_read (sfa5.txt) group t ly l×1-l×5 l×11-l×15 l×22-l×25 l×33-l×35 l×44-l×45 l×55
$
...SYNTAX ERROR IN LINE ABOVE NEAR $
|_smpl j6 n
|_read (sfa6.txt) group t ly l×1-l×5 l×11-l×15 l×22-l×25 l×33-l×35 l×44-l×45 l×55
$
...SYNTAX ERROR IN LINE ABOVE NEAR $
|_smpl 1 n
|_matrix x = one|dummy|l×1|l×2|l×3|l×4|l×5|l×11|l×12|l×13|l×14|l×15|l×22|l×23|l×24|l×25|l×33|& l×34|l×35|l×44|l
| ×45|l×55
$
...SYNTAX ERROR IN LINE ABOVE
|_dim x1 n1 nparms x2 n2 nparms x3 n3 nparms x4 n4 nparms x5 n5 nparms x6 n6 nparms
|_copy × x1 / frows=1;n1 trows=1;n1
$
...SYNTAX ERROR IN LINE ABOVE NEAR $
|_copy × x2 / frows=j2;k2 trows=1;n2
$
...SYNTAX ERROR IN LINE ABOVE NEAR $
|_copy × x3 / frows=j3;k3 trows=1;n3
$
...SYNTAX ERROR IN LINE ABOVE NEAR $
|_copy × x4 / frows=j4;k4 trows=1;n4
$
...SYNTAX ERROR IN LINE ABOVE NEAR $
|_copy × x5 / frows=j5;k5 trows=1;n5
$
...SYNTAX ERROR IN LINE ABOVE NEAR $
|_copy × x4 / frows=j6;n trows=1;n6
$
...SYNTAX ERROR IN LINE ABOVE NEAR $
|_do# = 1,ngroups
|_matrix yhat# = x#*b#
|_endo