楼主: tiaotiaotang
6084 9

[问答] 请高手看看,matlab 极大似然估计程序哪出错了 [推广有奖]

  • 1关注
  • 3粉丝

准贵宾(季)

博士生

37%

还不是VIP/贵宾

-

威望
0
论坛币
2945 个
通用积分
0
学术水平
2 点
热心指数
2 点
信用等级
2 点
经验
4186 点
帖子
119
精华
0
在线时间
378 小时
注册时间
2007-12-14
最后登录
2019-5-17

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我做的过程是:
将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
二维码

扫码加我 拉你入群

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

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

关键词:MATLAB 极大似然估计 atlab matla 似然估计 function returns matlab Error 程序

skewtdis_LL.doc

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

本帖被以下文库推荐

沙发
epoh 发表于 2011-12-11 16:05:36 |只看作者 |坛友微信交流群
% 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 发表于 2011-12-11 22:37:51 |只看作者 |坛友微信交流群
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]
太感谢了,解决我的大问题了

使用道具

板凳
jinghua3427875 发表于 2011-12-13 22:56:19 |只看作者 |坛友微信交流群
我也需要。。非常感谢

使用道具

报纸
dimyvan 在职认证  发表于 2012-6-20 14:04:04 |只看作者 |坛友微信交流群
请问LZ能否把你的my_mle.M文件借我参考下,现在写论文需要用到极大似然估计。

使用道具

地板
TenseAboy 发表于 2015-10-27 10:43:43 |只看作者 |坛友微信交流群
楼主你好,我在《金融计算与编程》一书中看到了与这个代码相似的代码,但是有许多部分不理解,苦于查不到资料,(ˇˍˇ) 想向你请教,关于my_mle部分中的LL=-LL是什么意思?[T,k] = size(x)中的T是从哪里来的?以及fminsearch函数输入中的[],2分别表示什么意思呢?

使用道具

7
syslon 发表于 2015-10-28 07:22:47 |只看作者 |坛友微信交流群
1、求最值时,一般取相反函数得最小值, 比如 求 x^2最大值,一般解法是求  -x^2的最小值
2、T是求 X的矩阵维数,即多少行,可以参考matlab的 size 函数
3、建议看看matlab的fminsearch帮助文件

使用道具

8
且将新火试新茶 学生认证  发表于 2016-6-19 15:40:05 |只看作者 |坛友微信交流群
楼主这个M文件有么

使用道具

9
hellen_dn 发表于 2017-1-16 12:12:00 |只看作者 |坛友微信交流群
请问负二项分布参数的极大似然估计用matlab该怎么写代码呢?

使用道具

10
四代火影91 学生认证  发表于 2018-6-25 15:36:49 |只看作者 |坛友微信交流群
请问LM检验完之后,继续做LR检验,接下来的代码楼主有吗?

微信截图_20180625152721.png (21.07 KB)

微信截图_20180625152721.png

使用道具

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

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

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

GMT+8, 2024-5-18 04:26