楼主: Dylan890328
1789 6

[问答] 求高手修改程序!500+金币重金悬赏! [推广有奖]

  • 0关注
  • 0粉丝

硕士生

36%

还不是VIP/贵宾

-

威望
0
论坛币
2 个
通用积分
0
学术水平
3 点
热心指数
0 点
信用等级
0 点
经验
931 点
帖子
76
精华
0
在线时间
184 小时
注册时间
2010-9-15
最后登录
2022-6-22

楼主
Dylan890328 发表于 2012-4-16 08:59:49 |AI写论文
500论坛币
  1. function [beta,stderror,V,it,Chi_sta,Pvalue]=gmmestimation(moment,be0,Y,X,Z,number,K)
  2. %input:
  3. %moment: moment conditions function defined by users
  4. %be0:initial value for estimated parameters
  5. %Y,X:data used to estimate parameters
  6. %Z: data for instrument variables
  7. %number: maximum convergence number when choosing optimal weighting matrix
  8. %K:number of moment conditions
  9. %output:  
  10. %beta:parameters estimated
  11. %stderror:standard errors
  12. %t_sta: T statistics for each estimated parameter
  13. %V:covariance matrix for estimated parameters
  14. %it: number of iteration
  15. %Chi_sta and Pvalue: overidentifying test, null hypothesis is moment
  16. %conditions are feasible
  17. nlag=0;%lag lenth
  18. W(:,:,1)=eye(K);
  19. [be(:,1),fv(:,1)]=fminsearch(moment,be0,[],1,Y,X,Z,W(:,:,1));
  20. % update weight matrix and find optimal solution
  21. for i=2:number
  22.     mom=feval(moment,be(:,i-1),2,Y,X,Z,W(:,:,i-1));
  23.     W(:,:,i)=gmmweightmatrix(mom,nlag);
  24.     [be(:,i),fv(:,i)]=fminsearch(moment,be(:,i-1),[],1,Y,X,Z,W(:,:,i));
  25.     if abs(fv(:,i)-fv(:,i-1))/abs(fv(:,i-1))<1e-4|fv(i)<=1e-10
  26.         break
  27.     end
  28. end

  29. it=i;
  30. if it==number
  31.     error('number of iteration exceeds defined maximum number')
  32. else
  33.     beta=be(:,it);% optimal bemeter
  34.     f0=feval(moment,beta,3,Y,X,Z,W(:,:,it));% optimal function value
  35. % find covariance matrix of estimated parameter vector, using numerical method
  36.     for j=1:length(be0)
  37.         a=zeros(length(be0),1);
  38.         eps=max(beta(j)*1e-6,1e-5);
  39.         a(j)=eps;
  40.         M(:,j)=(feval(moment,beta+a,3,Y,X,Z,W(:,:,it))-f0)/eps;
  41.     end
  42. end

  43. V=pinv(M'*W(:,:,it)*M)/size(Y,1);
  44. stderror=sqrt(diag(V));
  45. t_sta=beta./(stderror);
  46. Chi_sta=size(Y,1)*fv(it);
  47. Pvalue=1-chi2cdf(Chi_sta,K-length(be0));



  48. %find the weight matrix using Newey and West method

  49. function W=gmmweightmatrix(mom,nlag)
  50. q=size(mom,2);T=size(mom,1);
  51. a2=zeros(q,q);a3=zeros(q,q);
  52. for j=1:nlag
  53.     a1=zeros(q,q);
  54.     for i=1:(T-j)
  55.        a1=mom(i+j,:)'*mom(i,:)+a1;
  56.     end
  57.     S(:,:,j)=1/T*a1;
  58.     a2=(1-j/(nlag+1))*S(:,:,j)+a2;
  59.     a3=(1-j/(nlag+1))*S(:,:,j)'+a3;
  60. end

  61. b1=zeros(q,q);
  62. for i=1:T
  63.     b1=mom(i,:)'*mom(i,:)+b1;
  64. end
  65. if nlag==0
  66.     newS=b1*1/T;
  67. else
  68.     newS=a2+a3+b1*1/T;
  69. end
  70. W=pinv(newS);


  71. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%moment conditions
  72. function f=linearmodel01(be,num,Y,X,Z,W)
  73. [T,q]=size(Y);
  74. alpha=be(1);beta=be(2);
  75. eta=[Y-(alpha+beta*X)];
  76. for i=1:T
  77.    m_t(i,:)=kron(eta(i,:),Z(i,:));
  78.     end
  79. m=mean(m_t)';
  80. obj=m'*W*m;
  81. if num==1
  82.     f=obj;
  83.     elseif num==2
  84.     f=m_t;
  85.     elseif num==3
  86.     f=m;
  87. end

  88. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%moment conditions
  89. function f=linearmodel02(be,num,Y,X,Z,W)
  90. [T,q]=size(Y);
  91. beta=be(1);
  92. eta=[Y-beta*X];
  93. for i=1:T
  94.    m_t(i,:)=kron(eta(i,:),Z(i,:));
  95.     end
  96. m=mean(m_t)';
  97. obj=m'*W*m;
  98. if num==1
  99.     f=obj;
  100.     elseif num==2
  101.     f=m_t;
  102.     elseif num==3
  103.     f=m;
  104. end
复制代码
上面是用(Generalized Method of Moments) 同时估计6个CAPM模型(6个 α's 和 6个β's) 及它们共同的market excess return(γ)的matlab程序,由于空间限制,最后一部分程序在下面第一个回帖,程序没有问题,求修改成一份或两份(最好两份,每份程序悬赏500金币,可追加悬赏)跟上面程序看起来不大一样的程序(比如修改一下函数的名字,变量的名称,顺序,matlab程序表达方式,甚至是逻辑思路比如把(a-b)/a趋于无限小改成a-b趋于无限小。。。),但最后求出来的结果要一样。


gmm_new.zip
下载链接: https://bbs.pinggu.org/a-1091868.html

54.89 KB

数据,matlab程序代码

FINAL PROJECT.pdf

1.24 MB

Instruction

关键词:重金悬赏 修改程序 求高手 Convergence Identifying standard matrix 金币 instrument function

沙发
Dylan890328 发表于 2012-4-16 09:07:52

接上面程序

  1. [R,rr]=xlsread('gmm_data.xls');
  2. a=size(R);
  3. for i=1:7
  4.     RR(:,i)=R(:,i+1)-R(:,9);
  5. end
  6. number=100;
  7. be0=[0;1];
  8. for i=1:6
  9.     Y=RR(:,i);
  10.     X=RR(:,7);
  11.     Z=[ones(a(1,1),1) RR(:,7)];
  12.     [beta(:,i),stderror(:,i),V(2*i-1:2*i,:),it(:,i),Chi_sta(:,i),Pvalue(:,i)]=gmmestimation('linearmodel01',be0,Y,X,Z,number,2);
  13. end

  14. be0=0;
  15. X=beta(2,:)';
  16. Y=mean(RR(:,1:6))';
  17. [beta0,stderror0,V0,it0,Chi_sta0,Pvalue0]=gmmestimation('linearmodel02',be0,Y,X,Z,number,2);

  18. A=NaN(8,7);

  19. A(1,1:6)=beta(1,:);
  20. A(3,1:6)=beta(2,:);
  21. A(2,1:6)=stderror(1,:);
  22. A(4,1:6)=stderror(2,:);
  23. A(5,7)=beta0;
  24. A(6,7)=stderror0;
  25. A(7,7)=Chi_sta0;
  26. A(8,7)=Pvalue0;


  27. plot(beta(2,:),mean(RR(:,1:6)),'.');
  28. hold on;
  29. xx=[0 1 1.5];
  30. yy=[0 mean(RR(:,7)) 1.5*mean(RR(:,7))];
  31. plot(xx,yy,'k');
复制代码

藤椅
mj2012 发表于 2012-4-16 09:17:21
作业?

板凳
Dylan890328 发表于 2012-4-16 09:25:53
mj2012 发表于 2012-4-16 09:17
作业?
差不多是

报纸
epoh 发表于 2012-4-16 10:05:54
Dylan890328 发表于 2012-4-16 09:25
差不多是
哈哈,巧,这个程序我曾贴过
也跟R,TSP作过比较
   https://bbs.pinggu.org/thread-1217747-1-1.html
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
ywh19860616 + 1 + 1 + 1 热心

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

地板
Dylan890328 发表于 2012-4-17 01:01:55
问题已自我解决

7
博学之梦 在职认证  发表于 2012-8-20 17:17:14
Dylan890328 发表于 2012-4-17 01:01
问题已自我解决
同学你好,请问只要把你上下这两个程序文件连在一起,创立一个M文件,并运行就能得到估计结果吗?

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

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