fitnlm之后MATLAB R2017B LogLikelihood中的小错误?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了fitnlm之后MATLAB R2017B LogLikelihood中的小错误?相关的知识,希望对你有一定的参考价值。

Background:我正在研究与链接[1]中描述的非线性逻辑回归相似的问题(我的问题更为复杂,但是链接[1]对于本文的下一部分来说就足够了)。将我的结果与使用R包并行获得的结果进行比较,我得到了相似的系数结果,但是(非常近似)相反的对数似然。

假设: fitnlm在Matlab中给出的logLikelihood实际上是负LogLikelihood。 (请注意,这因此削弱了Matlab的BIC和AIC计算)

Reasonning:在[1]中,通过两种不同的方法解决了相同的问题。 ML方法/通过定义否定LogLikelihood并使用fminsearch进行优化。 GLS方法/使用fitnlm。

最大似然法之后的负对数似然是:380

GLS方法之后的负对数似然是:-406

我想第二个应该至少乘以(-1)?

问题:我错过了什么吗? (-1)系数是否足够,或者这种简单的校正不够吗?

自包含代码:

%copy-pasting code from [1]
        myf = @(beta,x) beta(1)*x./(beta(2) + x);
        mymodelfun = @(beta,x) 1./(1 + exp(-myf(beta,x)));
        rng(300,'twister');
        x    = linspace(-1,1,200)';
        beta = [10;2];
        beta0=[3;3];
        mu = mymodelfun(beta,x);
        n = 50;
        z = binornd(n,mu);
        y = z./n;
%ML Approach
        mynegloglik = @(beta) -sum(log(binopdf(z,n,mymodelfun(beta,x))));
        opts = optimset('fminsearch');
        opts.MaxFunEvals = Inf;
        opts.MaxIter = 10000;
        betaHatML = fminsearch(mynegloglik,beta0,opts)
        neglogLH_MLApproach = mynegloglik(betaHatML);

%GLS Approach
        wfun = @(xx) n./(xx.*(1-xx));
        nlm = fitnlm(x,y,mymodelfun,beta0,'Weights',wfun)      
        neglogLH_GLSApproach = - nlm.LogLikelihood;

来源:

[1] https://uk.mathworks.com/help/stats/examples/nonlinear-logistic-regression.html

答案

基本上,fitnlm.m是对NonLinearModel.fit的调用。

以上是关于fitnlm之后MATLAB R2017B LogLikelihood中的小错误?的主要内容,如果未能解决你的问题,请参考以下文章

matlab r2017b 安装出现这个问题?解压后有两个文件夹,分别包含.dvd1和.dvd2

MATLAB | 面积图饼状图水平柱状图的斜线填充(阴影填充)

MATLAB | 面积图饼状图水平柱状图的斜线填充(阴影填充)

MATLAB分布拟合工具箱distributionFitter

Matlab中NaN的值似乎是错误的

MATLAB | 世界杯来用MATLAB画个足球玩叭~