全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件
1568 1
2020-05-13
哪位大神能帮着看一下对不对
用最大似然法求CIR参数
Model.dett = 1/360;
Nobs = length (Model.Data);
r = Model.Data(1:Nobs-1);
dr = diff(Model.Data)./r.^0.5;
reg = [Model.dett./r.^0.5, Model.dett.*r.^0.5];
drift = reg\dr;
res = reg*drift-dr;
alpha = -drift(2);
mu = -drift(1)/drift(2);
sigma = sqrt(var(res, 1)/ Model.dett);
Params = [alpha mu sigma];

Data = Model.Data;
Nobs = length(Data);
DataA = Data(2:Nobs);
DataB = Data(1:Nobs-1);

dett=Model.dett;
alpha = Params(1);
mu = Params (2);
sigma = Params(3);
c=2*alpha/(sigma^2*(1-exp(-alpha*dett)));
q=2*alpha*mu/sigma^2-1;
u=c*exp(-alpha*dett)*DataB;
v=c*DataA;

nc=2*u;
df=2*q+2;
s=2*v;

gpdf = ncx2pdf(s, df, nc);
ppdf = 2*c*gpdf;
lnL = sum(-log(ppdf));

Nobs = length (Model.Data);
z=2*sqrt(u.*v);
bf=besseli(q,z,1);
lnM=-(Nobs-1)*log(c)+sum(u+v-0.5*q*log(v./u)-log(bf)-z);

InitialParams = Params;
if ~isfield(Model,'MatlabDisp'), Model.MatlabDisp = 'off';end;
options = optimset('LargeScale','off', 'MaxIter', 300, 'MaxFunEvals',300, 'Display', Model.MatlabDisp, 'TolFun', 1e-6, 'TolX', 1e-4, 'TolCon', 1e-6);
if ~isfield(Model,'Method'), Model.Method = 'besseli';end;
if strcmp(Model.Method, 'ncx2pdf')
    [Params, Fval, Exitflag] = fminsearch(@(Params) lnL, InitialParams,options);
else
    [Params, Fval, Exitflag] = fminsearch(@(Params) lnM, InitialParams,options);
end
Objvalue = [Fval, Exitflag];
outParams = [Params(1),Params(2),Params(3)];

二维码

扫码加我 拉你入群

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

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

全部回复
2024-9-29 08:41:04
您好,请问您有原始数据吗?
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群