全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Gauss专版
1611 2
2013-05-23
PROC (5)=FM_RD(y,x);

@ ======================Declare Local Variable========================== @
  local T,N,copy_x,copy_y;
  local ini1,ini2,temp_sigma,sigma_1,temp_dif_x1,temp_pre_x1;
  local Dif_resi_1,temp_D_resi_1,pre_y,y_plus,x1,dif_x1,pre_x1,temp_x1;
  local b1,u1,u1_plus,vb1,tb1,es1,ts1,ess1,tss1;
  local Rsquare_1,Adjust_Rsquare_1,lr_var_1,amat_1;
  local bias_1,mean_bias_1,epsilon_1,mu_1;
  local mu_eps_1,mu_dot_eps_1,delta_1,del_eps_1,del_mu_eps_1,delta_plus;
  local adj_b1,adj_cov_1,prob_tb1,prob_tb1_n;
  local adj_tb1,prob_adj_tb1,prob_adj_tb1_n;
  local uk,ke;
  local FM_beta,FM_cov,FM_t,prob_FM_t,prob_FM_t_n;
  local i,j,k,k1,num_cross;
@ ============================================================== @


@ Step 1: Read Data in @
       copy_x=x;copy_y=y;

       dif_x1=x[2:rows(x),.]-trimr(lag1(x),1,0);
    num_cross=cols(y);
    k1=cols(x)/num_cross;

    if (cols(x)%num_cross)/=0;
      print "You have inconformable independent variable input";
      end;
    endif;

    T=rows(x);
    N=num_cross;
    pre_y=vec(y[2:rows(y),.]);
    y=vec(y-reshape(meanc(y)',T, N));

    i=1;temp_x1=zeros((T*N),1);

      do until i > k1;

        temp_x1=temp_x1~vec(x[.,(1+(i-1)*N):(i*N)]-
                         reshape(meanc(x[.,(1+(i-1)*N):(i*N)])',T,N));

        i=i+1;
      endo;

        x1=temp_x1[.,2:cols(temp_x1)];

        temp_dif_x1=zeros((N*(T-1)),1);
       i=1;
      do until i > k1;

        temp_dif_x1=temp_dif_x1~vec(dif_x1[.,(1+(i-1)*N):(i*N)]);


        i=i+1;
      endo;

        dif_x1=temp_dif_x1[.,2:cols(temp_dif_x1)];

      i=1;  temp_pre_x1=zeros((N*(T-1)),1);
      do until i > k1;

        temp_pre_x1=temp_pre_x1~vec(x[2:rows(x),(1+(i-1)*N):(i*N)]);

        i=i+1;
      endo;

        pre_x1=temp_pre_x1[.,2:cols(temp_pre_x1)];



  @ ---------------First Stage OLS Estimator------------------ @

       b1=inv(x1'*x1)*(x1'*y);  @ OLS estimator @
       u1=y-x1*b1;              @ OLS residuals @
       vb1=inv(x1'*x1)*((u1'*u1)/(N*T-k1));
       tb1=b1 ./ diag(sqrt(vb1)); @ T-ratios @
       es1=reshape((x1*b1),N,T)';ess1=sumc((T-1)*(stdc(es1) .* stdc(es1)));
       ts1=reshape(y,N,T)';tss1=sumc((T-1)*(stdc(ts1) .* stdc(ts1)));
       Rsquare_1=ess1/tss1; @ Rsquare @
       Adjust_Rsquare_1=1-(((u1'*u1)/(N*T-k1))/(tss1/(N*T)));
       temp_D_resi_1=reshape(u1,N,T);
       Dif_resi_1=temp_D_resi_1[.,2:T]';

   @ ---------------  Long Run Correction --------------- @
     k=1;
        ini1=0;
        ini2=0;
       do until  k > N;

           uk=Dif_resi_1[.,k]~dif_x1[(1+(k-1)*(T-1)):(k*(T-1)),.];

            ke=kernel(uk,_panel_kernel_lag_hom);
            ini1=ini1+ke;
          temp_sigma=(uk'uk)/rows(uk);
          ini2=ini2+temp_sigma;

          k=k+1;
       endo;
       amat_1=ini1/N;
       sigma_1=ini2/N;
       lr_var_1=sigma_1+amat_1+amat_1';
       epsilon_1=lr_var_1[2:rows(lr_var_1),2:cols(lr_var_1)];
       delta_1=sigma_1+amat_1;
       del_mu_eps_1=delta_1[1,2:cols(delta_1)];
       del_eps_1=delta_1[2:rows(delta_1),2:cols(delta_1)];
       mu_1=lr_var_1[1,1];
       mu_eps_1=lr_var_1[1,2:cols(lr_var_1)];
       mu_dot_eps_1=mu_1- mu_eps_1*inv(epsilon_1)*mu_eps_1';
@ ----------- Start FM OLS Calculation ---------------------- @
@ ================Correction of Y ============================ @
    delta_plus=del_mu_eps_1'-del_eps_1*inv(epsilon_1)*mu_eps_1';
    y_plus=pre_y-Dif_x1*inv(epsilon_1)*mu_eps_1';

    FM_beta=inv(pre_x1'* pre_x1)*(pre_x1'*y_plus-N*(T-1)*delta_plus);
    FM_cov=6*inv(epsilon_1)*mu_dot_eps_1;
    FM_t=(sqrt(N)*(T-1)*FM_beta) ./ diag(sqrt(FM_cov));
    u1=y-x1*FM_beta;
    u1_plus=y_plus-pre_x1*FM_beta;
    es1=reshape(u1,N,T)';ess1=sumc((T-1)*(stdc(es1) .* stdc(es1)));
    ts1=reshape(y,N,T)';tss1=sumc((T-1)*(stdc(ts1) .* stdc(ts1)));
    print "ess1" ess1;    Rsquare_1=1-ess1/tss1; @ Rsquare @
    Adjust_Rsquare_1=1-(((u1'*u1)/(N*T-k1))/(tss1/(N*T)));

    @------------------Critical Probability --------------------@
       prob_FM_t=cdftc(abs(FM_t),(N*(T-1)-k1));
       prob_FM_t_n=cdfnc(abs(FM_t));

   print "The Fully-Modified Estimators";
    i=1;
    do until i > rows(FM_beta);
       format/rd 1,0;
       print "The FM_beta" i "is: ";;
       format/rd 7,4;
       print FM_beta;
       format/rd 1,0;
       print "The t-ratio" i "is: ";;
       format/rd 7,4;
      print FM_t "probabiltiy(t)= " prob_FM_t;;
      print "probability(N)=" prob_FM_t_n;
      i=i+1;
    endo;
    print "R square is: " Rsquare_1;
    print "Adjusted Rsquare is: " adjust_Rsquare_1;
    /* =====
    print "The conventional Covariance Matrix: " sigma_1;
    print "The autocorrelation Matrix is: " amat_1;
    print "The Long-Run Covariance Matrix is: " lr_var_1;
    print "The Inverse of Long-Run Covariance is: " inv(lr_var_1);
    print ;
    print "The true Covariance of FM_beta is: " FM_cov;
    ======= */


  retp(u1,u1_plus,mu_dot_eps_1,N,k1);


endp; /* Program Ends */
fmols 的R2为负,我查了一下ess1 1.0265
又会看程序的吗?能不能帮我看一下fmols的这个程序,哪里出错了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-5-23 13:11:05
建议将 程序 数据 一起 贴出来,不然 网民  不知 怎么 分析之。帮助分析者 论坛奖励之!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-5-24 10:58:37
https://bbs.pinggu.org/thread-2431673-1-1.html
数据在这里,自变量是lntheil (21*31)
因变量是lnx(21*31*3)
有没有同志能帮我做一下,看看是不是我的程序有问题
esst1是大于1的
tsst1是小于1的
所以最后r2为负数
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

分享

扫码加好友,拉您进群