楼主: 飘零的枫叶
51751 206

[问答] 用lingo软件如何对DEA-DA模型进行编程 [推广有奖]

81
zhangtao 发表于 2011-7-23 23:24:54
80# epoh

epoh老师,您好!
         附件中的文件在运行时提示以下问题,您看一下:如何能够解决问题?
非常感谢!

Line 4 in F:\0计量经济学前沿\AER\GaussP111\famamult.gau
   File not found G0014 : 'c:\gauss7.0\examples\nlsys.ext'
数学好就是要天天学

82
zhangtao 发表于 2011-7-23 23:30:12
80# epoh

epoh老师,您好!
%% computing impulse responses
%% maximum lags allowed in system == maxlag = 8 in this program
[mm,nn]=size(b)
%nbeq=10-1  %yo cambie aqui
nbeq=size(b,1)-nsh
%nrrpsi
%lmy
neq=nbeq+nsh  
nvars=nbeq;  
nlag
b;
......
您看,这个参数应该如何赋值呢?
b=[1,1]对吗?

acfnimpulse.rar

1.66 KB

本附件包括:

  • impulse.m
  • acf.m

数学好就是要天天学

83
zhangtao 发表于 2011-7-23 23:38:20
b=[1,1]运行结果如下:
>> impulse

mm =

     1


nn =

     2

??? Undefined function or variable "nsh".

Error in ==> impulse at 6
nbeq=size(b,1)-nsh
对nsh赋值1后,
运行结果如下:
mm =

     1


nn =

     2


nbeq =

    -1


neq =

     1

??? Undefined function or variable "nlag".

Error in ==> impulse at 14
nlag
然后再赋值:nlag=3
??? Undefined function or variable "shocknum".

Error in ==> impulse at 21
e(1+1,shocknum) = 1; %aqui iba un 8+1

>>

如何解决?这样就会无何止地赋值下去?
数学好就是要天天学

84
zhangtao 发表于 2011-7-23 23:45:18
amat=1;
bmat=1;
shockvar=1;
yvar=1;
dypos=1;

以上对acf.m进行赋值后,运行,提示以下错误:如何修改?
>> acf
??? Error: File: C:\TVmodel\acf.m Line: 8 Column: 1
Function definitions are not permitted at the prompt or in scripts.

>>


function u1cor = acf(amat,bmat,shockvar,yvar,dypos);
kmax = 20; %maxc(that)+1;
a=amat;
omega=yvar;
sigma=bmat*shockvar*bmat';
% Set up indicator vectors:
e1= zeros(length(a),1); e2=e1; e3=e2;
e1(dypos)=1;
% Compute coefficients for k step ahead prediction:
ee=eye(length(a));
ak=a;
ak0=ee;
aksum=0;
ak0sum=0;
by=zeros(kmax,length(a));
dyerr=zeros(kmax,length(a));
yyerr=by(:,1);
yyerrk=0;
i = 1;
% Start do loop over future periods:
while i <= kmax;
  dyerrk=e1'*ak0;
  yyerrk=yyerrk+dyerrk*sigma*dyerrk';
  byk= e1'*(ak-ee);
  by(i,:)=byk;      % Store results for conditional coef vectors
  dyerr(i,:)=dyerrk;
  yyerr(i)=yyerrk;  % Store results for error variances and covariances
  i = i+1;
  ak=ak*a;
  ak0=ak0*a;
end;

% Compute variance of growth rate variables:
dyvar=by(1,:)*omega*by(1,:)'+dyerr(1,:)*sigma*dyerr(1,:)';
% Compute autocovariance at lag 1:
dy1cov=by(1,:)*a*omega*by(1,:)'+by(1,:)*sigma*dyerr(1,:)';
dy2cov=by(1,:)*a*omega*by(1,:)';
% Compute autocorrelations at lag 1:
dy1cor=dy1cov/dyvar;
dy2cor=dy2cov/dyvar;
% Stack results:
u1cor=[dy1cor;dy2cor];
数学好就是要天天学

85
epoh 发表于 2011-7-24 12:12:41
function u1cor = acf(amat,bmat,shockvar,yvar,dypos);
impulse.m
由于作者并没对各种参数加予注解
所以不容易理解.
%%%%%%%%%%
function yvec1=impf(a,b,shock,nstep,neq);
%Proc to compute impulse response from system.
个参数设置如下:


amat=[   0         0         0    0.0494    0.0222         0         0         0         0         0 0 0 0 0 0 0 0 0;
         0         0         0    0.8588    0.3865         0         0         0         0         0 0 0 0 0 0 0 0 0;
         0         0         0   -0.0555   -0.0250         0         0         0         0         0 0 0 0 0 0 0 0 0;
         0         0         0    0.6730    0.3029         0         0         0         0         0 0 0 0 0 0 0 0 0;
         0         0         0   -0.3270   -0.1471         0         0         0         0         0 0 0 0 0 0 0 0 0;
         0         0         0    0.1483    0.0667         0         0         0         0         0 0 0 0 0 0 0 0 0;
         0         0         0    0.0494    0.0222         0         0         0         0         0 0 0 0 0 0 0 0 0;
         0         0         0         0         0         0         0         0         0         0 0 0 0 0 0 0 0 0;
         0         0         0         0         0         0         0         0         0         0 0 0 0 0 0 0 0 0;
    1.0000         0         0         0         0         0         0         0         0         0 0 0 0 0 0 0 0 0;
         0    1.0000         0         0         0         0         0         0         0         0 0 0 0 0 0 0 0 0;
         0         0    1.0000         0         0         0         0         0         0         0 0 0 0 0 0 0 0 0;
         0         0         0    1.0000         0         0         0         0         0         0 0 0 0 0 0 0 0 0;
         0         0         0         0    1.0000         0         0         0         0         0 0 0 0 0 0 0 0 0;
         0         0         0         0         0    1.0000         0         0         0         0 0 0 0 0 0 0 0 0;
         0         0         0         0         0         0    1.0000         0         0         0 0 0 0 0 0 0 0 0;
         0         0         0         0         0         0         0    1.0000         0         0 0 0 0 0 0 0 0 0;
         0         0         0         0         0         0         0         0    1.0000         0 0 0 0 0 0 0 0 0];



b =[-0.0423   -0.0423    0.0423    0.0682    0.0494    0.0727         0   -0.0727   -0.0494
    0.3068   -0.6932   -0.3068    1.1956    0.8588    1.8911         0   -1.8911   -0.8588
    0.0885    0.0885   -1.0885   -0.0655   -0.0555    0.5458         0   -0.5458    0.0555
    0.0974    0.0974   -0.0974    0.6107    0.6730    0.6002         0   -0.6002   -0.6730
    0.0974    0.0974   -0.0974    0.6107   -0.3270    0.6002         0   -0.6002    0.3270
   -0.1268   -0.1268    0.1268    0.2046    0.1483   -0.7818         0    0.7818   -0.1483
   -0.0423   -0.0423    0.0423    0.0682    0.0494    0.0727   -1.0000   -0.0727   -0.0494
         0         0         0         0         0         0         0    1.0000         0
         0         0         0         0         0         0         0         0    1.0000
         0         0         0         0         0         0         0         0         0
         0         0         0         0         0         0         0         0         0
         0         0         0         0         0         0         0         0         0
         0         0         0         0         0         0         0         0         0
         0         0         0         0         0         0         0         0         0
         0         0         0         0         0         0         0         0         0
         0         0         0         0         0         0         0         0         0
         0         0         0         0         0         0         0         0         0
         0         0         0         0         0         0         0         0         0];

shock =[0;0;0;0;0;0;0;0;1];
     
neq = 9;

imptech = impf(amat,b,shock,20,neq);
imptech
pipos   =   1;
dpos   =   2;
epos   =   3;
xpos   =   4;
gypos  =   5;
rpos   =   6;
dppos  =   7;
erpos =   8;
eapos =   9;
IRF=[imptech(:,pipos) imptech(:,xpos) imptech(:,gypos) imptech(:,rpos)];
IRF
IRF =
   -0.0494   -0.6730    0.3270   -0.1483
   -0.0260   -0.3539    0.1720   -0.0780
   -0.0137   -0.1861    0.0904   -0.0410
   -0.0072   -0.0978    0.0475   -0.0216
   -0.0038   -0.0514    0.0250   -0.0113
   -0.0020   -0.0270    0.0131   -0.0060
   -0.0010   -0.0142    0.0069   -0.0031
   -0.0005   -0.0075    0.0036   -0.0016
   -0.0003   -0.0039    0.0019   -0.0009
   -0.0002   -0.0021    0.0010   -0.0005
   -0.0001   -0.0011    0.0005   -0.0002
   -0.0000   -0.0006    0.0003   -0.0001
   -0.0000   -0.0003    0.0001   -0.0001
   -0.0000   -0.0002    0.0001   -0.0000
   -0.0000   -0.0001    0.0000   -0.0000
   -0.0000   -0.0000    0.0000   -0.0000
   -0.0000   -0.0000    0.0000   -0.0000
   -0.0000   -0.0000    0.0000   -0.0000
   -0.0000   -0.0000    0.0000   -0.0000
   -0.0000   -0.0000    0.0000   -0.0000

%%%%%%%%%%%%%%%
GaussP111
缺nlsys.ext也缺library
#include nlsys.ext; /* code for solving non-linear equations */
library nlsys,optmum;nlset;
library pgraph;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
zhangtao + 5 + 5 + 5 我很赞同

总评分: 学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

86
zhangtao 发表于 2011-7-24 17:55:43
85# epoh


epoh老师,您好!
    以下这步这怎么来的,我看impf.m中并没有计算IRF的函数或者TVmodel中也没有IRF.m的m函数,
以下表达式的涵义是什么?
IRF=[imptech(:,pipos) imptech(:,xpos) imptech(:,gypos) imptech(:,rpos)];
IRF

非常感谢!
数学好就是要天天学

87
zhangtao 发表于 2011-7-24 17:56:02
85# epoh


epoh老师,您好!
    以下这步这怎么来的,我看impf.m中并没有计算IRF的函数或者TVmodel中也没有IRF.m的m函数,
以下表达式的涵义是什么?
IRF=[imptech(:,pipos) imptech(:,xpos) imptech(:,gypos) imptech(:,rpos)];
IRF

非常感谢!
数学好就是要天天学

88
epoh 发表于 2011-7-24 18:56:11
你说的那段程序是在
NKPCcalvof4IRF.m 的最后面
% Impuse response to technology shock
shock = zeros(neq,1);                  % Shock vector @
shock(eapos,1) = 1;                    % Shock variable, size of shock @
imptech = impf(amat,b,shock,20,neq);   % Call impulse respons proc @

IRF=[imptech(:,pipos) imptech(:,xpos) imptech(:,gypos) imptech(:,rpos)];

%%%%%%%%%%
Figure2.m 呼叫NKPCcalvof4IRF.m
NKPCcalvof4IRF.m呼叫 impf()
我给出的amat,b,shock,neq
就是由此截取出来
imptech有9个columns
IRF=[....],作者只取出四个参考(pipos,xpos,gypos,rpos)
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
zhangtao + 5 + 5 + 5 观点有启发

总评分: 学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

89
zhangtao 发表于 2011-7-25 11:26:00
41# epoh
epoh老师,您好!
      运行checkSV.ssc程序时,您怎么知道这个程序正常运行需要source("c:/checkSV/ssfnong.ssc"),
source("c:/checkSV/sv_mcl_est.ssc"),module("finmetrics")这些资源?是从checkSV.ssc程序中的什么
地方可以看到?
非常感谢!


当下载一个.ssc file,要使用时,
最好先打开看看,需要配合的函数和数据
就以为例checkSV.ssc
需要用到ssfnong.ssc,sv_mcl_est.ssc,module("finmetrics")
以及数据svpdx.dat
所以我把底下这几行加在checkSV.ssc的前面,
svpdx.dat=read.table("c:/checkSV/svpdx.dat")
source("c:/checkSV/ssfnong.ssc")
source("c:/checkSV/sv_mcl_est.ssc")
module("finmetrics")

本文来自: 人大经济论坛 Matlab及其他计量软件专版 版,详细出处参考:https://bbs.pinggu.org/viewthread.php?tid=1127506&page=5&from^^uid=11232
数学好就是要天天学

90
zhangtao 发表于 2011-7-25 11:44:57
另外,我还想问下:
     在matlab文件中,怎么区分那些是主程序,那些是被调用程序?
是不是被调用程序就不能单独执行?
数学好就是要天天学

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-9 20:32