楼主: jinghua3427875
11601 11

[实际应用] copula的极大似然估计 [推广有奖]

  • 1关注
  • 1粉丝

讲师

18%

还不是VIP/贵宾

-

TA的文库  其他...

管理学

威望
0
论坛币
758 个
通用积分
0
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
14137 点
帖子
280
精华
0
在线时间
125 小时
注册时间
2011-9-13
最后登录
2016-10-29

3论坛币
请教高手啊,copula 的极大似然估计怎么用matlab实现?

最佳答案

yucongy 查看完整内容

u,v为服从0,1均匀分布序列,'tcopulaCL'等等为编写好copula似然函数
关键词:Copula 极大似然估计 opula 极大似然 似然估计 matlab

本帖被以下文库推荐

沙发
yucongy 发表于 2011-11-24 21:43:26 |只看作者 |坛友微信交流群
  1. u=data(:,1);
  2. v=data(:,2);
  3. T=length(u);
  4. options = optimset('Algorithm','interior-point','Display','iter','TolCon',10^-12,'TolFun',10^-4,'TolX',10^-6); %优化条件


  5. % 1. Normal Copula
  6. kappa1 = corrcoef12(norminv(u),norminv(v));
  7. LL1 = NormalCopula_CL(kappa1,[u,v]);          

  8. % 2. Clayton's copula
  9. lower = 0.0001;
  10. theta0 = 1;
  11. [ kappa2 LL2] = fmincon('claytonCL',theta0,[],[],[],[],lower,[],[],options,[u,v]); %参数约束非线性优化方法估计clayton copula函数的参数

  12. % 3. Rotated Clayton copula (with tail dep in upper tail instead of lower)
  13. lower = 0.0001;
  14. theta0 = 1;
  15. [ kappa3 LL3] = fmincon('claytonCL',theta0,[],[],[],[],lower,[],[],options,1-[u,v]);

  16. % 4. Plackett copula
  17. lower = 0.0001;
  18. theta0 = 1;
  19. [ kappa4 LL4] = fmincon('plackettCL',theta0,[],[],[],[],lower,[],[],options,[u,v]);
  20. % LL5 = -3.2721

  21. % 5. Frank copula
  22. theta0 = 1;
  23. [ kappa5 LL5] = fmincon('frankCL',theta0,[],[],[],[],lower,[],[],options,[u,v]);

  24. % 6. Gumbel copula
  25. lower = 1.1;
  26. theta0 = 2;
  27. [ kappa6 LL6] = fmincon('gumbelCL',theta0,[],[],[],[],lower,[],[],options,[u,v]);

  28. % 7. Rotated Gumbel copula
  29. lower = 1.1;
  30. theta0 = 2;
  31. [ kappa7 LL7] = fmincon('gumbelCL',theta0,[],[],[],[],lower,[],[],options,1-[u,v]);

  32. % 8. Student's t copula
  33. lower = [-0.999 , 2.1 ];
  34. upper = [ 0.999 , 100 ];
  35. theta0 = [kappa1;10];
  36. [ kappa8 LL8] = fmincon('tcopulaCL',theta0,[],[],[],[],lower,upper,[],options,[u,v]);

  37. % 9. Symmetrised Joe-Clayton copula
  38. lower = [0 , 0 ];
  39. upper = [ 1 , 1];
  40. theta0 = [0.25;0.25];
  41. [ kappa9 LL9] = fmincon('sym_jc_CL',theta0,[],[],[],[],lower,upper,[],options,[u,v]);

  42. LL = [LL1;LL2;LL3;LL4;LL5;LL6;LL7;LL8;LL9];
复制代码
u,v为服从0,1均匀分布序列,'tcopulaCL'等等为编写好copula似然函数
不经意间一年过去了,发现学到的东西不少,但是要学的东西却越来越多
若有问题咨询,请邮件联系:yucong134@163.com

使用道具

藤椅
jinghua3427875 发表于 2011-12-7 12:56:41 |只看作者 |坛友微信交流群
怎么没有回复的啊 。。。。

使用道具

板凳
jcx350 发表于 2011-12-13 00:06:04 |只看作者 |坛友微信交流群
[程序问答] 请高手看看,matlab 极大似然估计程序哪出错了 [复制链接]  
  

tiaotiaotang tiaotiaotang 当前离线
当日剩余下载次数23 次阅读权限20论坛币7 个经验330 点威望0 级帖子47精华0学术水平1 点热心指数1 点信用等级1 点在线时间143 小时注册时间2007-12-14最后登录2011-12-12
加关注
0
关注 0
粉丝 高中生



高中生, 积分 47, 距离下一级还需 3 积分论坛币7 个经验330 点威望0 级帖子47精华0学术水平1 点热心指数1 点信用等级1 点在线时间143 小时注册时间2007-12-14最后登录2011-12-12串个门 加好友 打招呼 发消息  电梯直达   楼主
发表于 昨天 10:56 |只看该作者 |倒序浏览 |推荐到门户首页
我做的过程是:
将y.xls导入matlab
将skewtdis_LL.m, my_mle.m加入MATLAB.然后在命令窗口输入
[para,standard_deviation]=my_mle('skewtdis_LL',[5;0.02],y)
结果显示:
??? Error using ==> skewtdis_LL
Too many input arguments.
Error in ==> fminsearch at 195
fv(:,1) = funfcn(x,varargin{:});
Error in ==> my_mle at 3
[para,fv]=fminsearch(fun,para0,[],2,varargin{:});


程序如下:
function LL = skewtdis_LL(theta,x)
% PURPOSE: returns the log-likelihood at x of Hansen's (1994) 'skewed t' distribution
%---------------------------------------------------
% USAGE: LL = skewtdis_LL(x,nu,lambda)
% where: x  = a vector of data
%        theta = [nu;lambda]
%     nu = degrees of freedom parameter
%       lambda = skewness parameter
%---------------------------------------------------
% RETURNS:
%        a matrix of log-likelihood at each element of x
% --------------------------------------------------
% SEE ALSO: tdis_cdf, tdis_rnd, tdis_inv, tdis_prb, skewtdis_pdf
%---------------------------------------------------
%
%  Andrew Patton
%
%  25 June, 2001
% This code was used in:
%
% Patton, Andrew J., 2002, "On the Out-of-Sample
% Importance of Skewness and Asymmetric Dependence for
% Asset Allocation", working paper, Department of Economics,
% University of California, San Diego.
nu = theta(1);
lambda = theta(2);
[T,k] = size(x);
nu = nu(1)*ones(T,1);     % can make this time-varying, but needs to be >2
lambda = lambda(1)*ones(T,1); % can make this time-varying, but needs to be in (-1,1)
   
c = gamma((nu+1)/2)./(sqrt(pi*(nu-2)).*gamma(nu/2));
a = 4*lambda.*c.*((nu-2)./(nu-1));
b = sqrt(1 + 3*lambda.^2 - a.^2);
logc = gammaln((nu+1)/2) - gammaln(nu/2) - 0.5*log(pi*(nu-2));
logb = 0.5*log(1 + 3*lambda.^2 - a.^2);
find1 = (x<(-a./b));
find2 = (x>=(-a./b));
LL1   = logb + logc - (nu+1)/2.*log(1+1./(nu-2).*((b.*x+a)./(1-lambda)).^2);
LL2   = logb + logc - (nu+1)/2.*log(1+1./(nu-2).*((b.*x+a)./(1+lambda)).^2);
LL    = sum(LL1(find1)) + sum(LL2(find2));
LL    = -LL;
function [para,standard_deviation,fv]=my_mle(fun,para0,varargin)
para0=para0(:);
[para,fv]=fminsearch(fun,para0,[],2,varargin{:});
fv=-fv;
d=numericalfirstderivative(fun,para,1,varargin{:});
standard_deviation=sqrt(diag(pinv(d'*d)));
function f=numericalfirstderivative(fun,parameter,varargin)
n=length(parameter);
for i=1:n
a=zeros(n,1);
a(i)=min(parameter(i)*1e-6,1e-5);
y1(:,i)=feval_r(fun,parameter+a,varargin{:});
y2(:,i)=feval_r(fun,parameter-a,varargin{:});
f(:,i)=(y1(:,i)-y2(:,i))/2/a(i);
end



淘宝网购物自动返论坛币  
skewtdis_LL.doc
昨天 10:56 上传

21.5 KB


回帖推荐epoh 发表于2楼  查看完整内容

% skewtdis_rnd.m need Ucsd_garch toolbox x=skewtdis_rnd(8.1,-0.09,10000); init=[8.5;-0.2] lb=[0,-1] ub= =fmincon(@(theta)skewtdis_LL(theta,x),init,[],[],[],[],lb,ub) para = 8.3054 -0.0837
分享到: QQ空间 腾讯微博 腾讯朋友 收藏0 评分  
回复 使用道具 举报
提升卡

变色卡
  
  

epoh epoh 当前离线
当日剩余下载次数29 次阅读权限30论坛币4908 个经验3574 点威望1 级帖子739精华0学术水平1478 点热心指数1483 点信用等级1432 点在线时间2 小时注册时间2006-11-26最后登录2011-12-12
加关注
0
关注 24
粉丝 副教授



副教授, 积分 739, 距离下一级还需 151 积分论坛币4908 个经验3574 点威望1 级帖子739精华0学术水平1478 点热心指数1483 点信用等级1432 点在线时间2 小时注册时间2006-11-26最后登录2011-12-12串个门 加好友 打招呼 发消息  沙发
发表于 昨天 16:05 |只看该作者
% skewtdis_rnd.m need Ucsd_garch toolbox
x=skewtdis_rnd(8.1,-0.09,10000);
init=[8.5;-0.2]
lb=[0,-1]
ub=[Inf,0]

[para,llf,exitflag]=fmincon(@(theta)skewtdis_LL(theta,x),init,[],[],[],[],lb,ub)
para =

    8.3054
   -0.0837

已有 3 人评分 学术水平 热心指数 信用等级 收起 理由  
zhangtao  + 5 + 5 + 5 精彩帖子
tiaotiaotang  + 1 + 1  热心,水平高
liuxin9023  + 1   分析的有道理
总评分: 学术水平 + 7  热心指数 + 6  信用等级 + 5   查看全部评分


回复  评分 举报

  

tiaotiaotang tiaotiaotang 当前离线
当日剩余下载次数23 次阅读权限20论坛币7 个经验330 点威望0 级帖子47精华0学术水平1 点热心指数1 点信用等级1 点在线时间143 小时注册时间2007-12-14最后登录2011-12-12
加关注
0
关注 0
粉丝 高中生



高中生, 积分 47, 距离下一级还需 3 积分论坛币7 个经验330 点威望0 级帖子47精华0学术水平1 点热心指数1 点信用等级1 点在线时间143 小时注册时间2007-12-14最后登录2011-12-12串个门 加好友 打招呼 发消息  藤椅
发表于 昨天 22:37 |只看该作者
epoh 发表于 2011-12-11 16:05
% skewtdis_rnd.m need Ucsd_garch toolbox
x=skewtdis_rnd(8.1,-0.09,10000);
init=[8.5;-0.2]太感谢了,解决我的大问题了


本文来自: 人大经济论坛 Matlab及其他计量软件专版 版,详细出处参考: https://bbs.pinggu.org/forum.php? ... &from^^uid=140024

使用道具

报纸
jinghua3427875 发表于 2011-12-13 22:55:39 |只看作者 |坛友微信交流群
谢了。。

使用道具

地板
hanjiaxixi 在职认证  发表于 2012-1-30 23:15:17 |只看作者 |坛友微信交流群
同求
既然我敢来到这个世界,我就绝不活着离开!

使用道具

7
sisters 发表于 2013-1-16 16:21:17 |只看作者 |坛友微信交流群
yucongy 发表于 2011-11-24 21:43
u,v为服从0,1均匀分布序列,'tcopulaCL'等等为编写好copula似然函数
你好 ,还在弄'tcopulaCL'等等为编写好copula似然函数相关文章么,我也在弄。我的程序运行到

41.% 8. Student's t copula

42.lower = [-0.999 , 2.1 ];

43.upper = [ 0.999 , 100 ];

44.theta0 = [kappa1;10];

45.[ kappa8 LL8] = fmincon('tcopulaCL',theta0,[],[],[],[],lower,[],[],options,1-[u,v]);


之后就提示出错了,不知道错在哪里?谢谢额,希望给与指点!

使用道具

8
yucongy 发表于 2013-4-21 13:43:59 |只看作者 |坛友微信交流群
sisters 发表于 2013-1-16 16:21
你好 ,还在弄'tcopulaCL'等等为编写好copula似然函数相关文章么,我也在弄。我的程序运行到

41.% 8.  ...
写上错误的提示说明,这样才方便解答
不经意间一年过去了,发现学到的东西不少,但是要学的东西却越来越多
若有问题咨询,请邮件联系:yucong134@163.com

使用道具

9
敢爷 发表于 2013-6-9 20:37:47 |只看作者 |坛友微信交流群
yucongy 发表于 2013-4-21 13:43
写上错误的提示说明,这样才方便解答
Your initial point x0 is not between bounds lb and ub; FMINCON
shifted x0 to satisfy the bounds.
Undefined function 'tdis_inv' for input arguments of type 'double'.

Error in tcopulaCL (line 33)
   x = tdis_inv(data(:,1),nu);

Error in fmincon (line 631)
      initVals.f = feval(funfcn{3},X,varargin{:});

Caused by:
    Failure in initial user-supplied objective function evaluation. FMINCON cannot contin
我也遇到同样的问题,错误提示是上面所写的,请问怎么解决?谢谢~

使用道具

10
gssdzc 在职认证  发表于 2014-4-12 11:42:23 |只看作者 |坛友微信交流群
非常感谢分享

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 17:57