gpt4 book ai didi

matlab - MatLab:胆碱必须是正定的

转载 作者:行者123 更新时间:2023-12-04 22:35:39 28 4
gpt4 key购买 nike

我正在尝试将MatLab中的t copula适配到我的数据,并且我的功能是:

u = ksdensity(range_1,  range_1,'function','cdf');
v = ksdensity(range_2, range_2,'function','cdf');
%fit a t-copula to returns
rng default ; % For reproducibility
[Rho,nu] = copulafit('t',[u v],'Method','ApproximateML');

我收到一条错误消息:

Error using chol
Matrix must be positive definite.
Error in copulafit/approxProfileNLL_t (line 314)
nll = negloglike_t(nu,chol(Rho),t_);
Error in copulafit>bracket1D (line 494)
oldnll = nllFun(bound);
Error in copulafit (line 126)
[lowerBnd,upperBnd] = bracket1D(profileFun,lowerBnd,5); % 'upper', search ascending from 5



我知道它是由于 chol()分解而发生的,但是我不知道应该更改哪些参数来克服此问题。任何帮助,将不胜感激。

我使用的数据如下所示:
 range_1         range_2
-0.639388612 -0.639388612
1.029603565 1.029603565
1.273883288 1.273883288
0.754717135 0.754717135
1.747817835 1.747817835
1.717787291 1.717787291
-0.120625114 -0.120625114
2.173913469 2.173913469
2.836879977 2.836879977
-0.804601995 -0.804601995
0 0

最佳答案

实际上,您的range1range2变量绝对相同。在命令窗口中进行简单检查即可确认:

eq = (range1 == range2)

eq =

11×1 logical array

1
1
1
1
1
1
1
1
1
1
1

由于 copulafit函数的目标是为高斯Copula计算线性相关参数矩阵的估计,因此整个过程将失败,除非输入变量之间的相关性太高:
c = corr(range1,range2); % 1

实际上,我们正面临 range1range2之间的完美正相关。引发异常的函数 chol(引用 here)只是生成高斯Copula拟合的过程的一部分,并且由 copulafit函数在内部进行调用。

您唯一的解决方案是:
  • 更改变量
  • 向变量添加随机噪声(如果允许)

  • 让我们使用第二个选项作为示例:
    range1 = [
    -0.639388612
    1.029603565
    1.273883288
    0.754717135
    1.747817835
    1.717787291
    -0.120625114
    2.173913469
    2.836879977
    -0.804601995
    0
    ];

    % just an example, I'm tired of using rand function xD
    range2 = awgn(range1,1,'measured');

    u = ksdensity(range1, range1,'function','cdf');
    v = ksdensity(range2, range2,'function','cdf');
    rng default ;
    [Rho,nu] = copulafit('t',[u v],'Method','ApproximateML');

    这将正常工作。

    关于matlab - MatLab:胆碱必须是正定的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46132290/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com