全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
1877 5
2012-04-26
我写了几个函数我贴在下面
NasdaqPdf与Sp500Pdf函数是变量的概率密度函数
相应的NasdaqCdf与Sp500Cdf是对应的累计概率函数
这几个函数应该没有问题,已经用几个值验证过。
最后一个函数是Copula函数,返回的值应该是一个实数,但是却返回一个复数,虽然虚部是零,但是在计算中却是一个问题,因为这个函数在后续研究中还要用。这个函数在运行中没有报错。

谁能帮我解释一下啊?感激不尽
——————————————————————————————————————————————————————————
function [ fnasdaq ] = NasdaqPdf( x )
%NASDAQPDF Summary of this function goes here
%   Detailed explanation goes here
load nasdaq1261.txt
N=1261;
t=0;
for i=1:1261
    t=t+exp(-0.5*((x-nasdaq1261(i))/0.0025).^2);
end
fnasdaq=1/(sqrt(2*pi)*N*0.0025)*t;
end
————————————————————————————————————————————————————————
function [ fsp500 ] = Sp500Pdf( x )
%SP500PDF Summary of this function goes here
%   Detailed explanation goes here
load sp5001261.txt;
N=1261;
t=0;
for i=1:1261
    t=t+exp(-0.5*((x-sp5001261(i))/0.0025).^2);
end
fsp500=1/(sqrt(2*pi)*N*0.0025)*t;
end
————————————————————————————————————————————————————
function [ y ] = NasdaqCdf( x )
%NASDAQCDF Summary of this function goes here
%   Detailed explanation goes here
y=quadgk(@(u) NasdaqPdf(u),-inf,x);
end
——————————————————————————————————————————————————————
function [ y ] = Sp500Cdf( x )
%SP500CDF Summary of this function goes here
%   Detailed explanation goes here
y=quadgk(@(u) Sp500Pdf(u),-inf,x);
end
————————————————————————————————————-————————————

function [ f ] = GumbleCopulaFunction( x , y )
%GUMBLECOPULAFUNCTION Summary of this function goes here
%   Detailed explanation goes here
a=3.6443;
f=exp(-((-log(NasdaqCdf(x))).^a+(-log(Sp500Cdf(y))).^a).^(1/a));
end
nasdaq1261.txt
大小:(12.71 KB)

 马上下载


sp5001261.txt
大小:(12.7 KB)

 马上下载






二维码

扫码加我 拉你入群

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

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

全部回复
2012-4-26 20:52:30
你r 把两个指数数据也贴上来,我帮你看看
copulaj是个0至1之间的实数,负数不对
二维码

扫码加我 拉你入群

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

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

2012-4-26 21:25:20
bobojin 发表于 2012-4-26 20:52
你r 把两个指数数据也贴上来,我帮你看看
copulaj是个0至1之间的实数,负数不对
已上传,不胜感激。
我帖子里面打错了,不是负数,是复数。有一个为零的虚部
二维码

扫码加我 拉你入群

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

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

2012-4-28 10:44:44
自己顶一下。求解啊
二维码

扫码加我 拉你入群

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

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

2012-4-29 20:44:55
yjhanywhere 发表于 2012-4-28 10:44
自己顶一下。求解啊
%% Gumbel copula

alpha = 2;
u=linspace(-4,4,100);
[x,y]=meshgrid(u);
u = normcdf(x,0,1);
v = tcdf(y,3);

% Compute copula cdf
a1 = (-log(u(:,1))).^alpha;
a2 = (-log(v(:,1))).^alpha;
a3 = 1./alpha;
c = exp(-(a1+a2).^a3);
二维码

扫码加我 拉你入群

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

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

2012-4-29 23:57:33
epoh 发表于 2012-4-29 20:44
%% Gumbel copula

alpha = 2;
谢谢你。我的原因我找到了,是matlab的原因。直接使用Gumble Copula的式子会有问题。参照matlab工具箱里面的copula函数,我对函数做了一个变形结果就没问题了。其实就是把其中一个cdf提出来就好了。呵呵
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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