Matlab:使用gammaln时出错...同时绘制心理测量功能

时间:2018-01-09 19:38:34

标签: matlab matlab-figure gamma-function log-likelihood

我正在使用工具箱psignifit来绘制数据集中的心理测量功能。我的代码看起来基本如下:

load data.mat
options = struct; 
options.sigmoidname = 'logistic';
result = psignifit(data,options);  % this is where the error occurs
result.Fit
result.conf_Intervals
plotPsych(result)

我的数据与工具箱中提供的示例数据基本相同,

data =    [...
0.0010,   45.0000,   90.0000;...
0.0015,   50.0000,   90.0000;...
0.0020,   44.0000,   90.0000;...
0.0025,   44.0000,   90.0000;...
0.0030,   52.0000,   90.0000;...
0.0035,   53.0000,   90.0000;...
0.0040,   62.0000,   90.0000;...
0.0045,   64.0000,   90.0000;...
0.0050,   76.0000,   90.0000;...
0.0060,   79.0000,   90.0000;...
0.0070,   88.0000,   90.0000;...
0.0080,   90.0000,   90.0000;...
0.0100,   90.0000,   90.0000];

当我运行演示时,plotPsych函数返回一个应该的图形,但是当我执行我的脚本时,我得到以下一系列错误。我的问题是为什么我得到关于使用gammaln的错误以及可能是正确的修复方法?

Error using gammaln
Input must be nonnegative.

Error in logLikelihood (line 75)
    p     = p + gammaln(n - k + b);

Error in psignifitCore>@(X)-logLikelihood(data,options,X(1),X(2),X(3),X(4),X(5)) (line 80)
fun = @(X) -logLikelihood(data, options, X(1), X(2), X(3), X(4), X(5));

Error in fminsearch (line 325)
x(:) = xr; fxr = funfcn(x,varargin{:});

Error in psignifitCore (line 97)
  Fit = fminsearch(fun, x0,optimiseOptions); %MATLAB standard choice

Error in psignifit (line 242)
result = psignifitCore(data, options);

Error in signifit_myscript (line 31)
result = psignifit(data,HDDV);

我过去在我的数据上运行了工具箱并取得了成功,所以我首先尝试重新启动Matlab,但无济于事。然后我尝试删除并将psignifit-master添加回路径,但这似乎也没有解决问题。

提前致谢。

1 个答案:

答案 0 :(得分:0)

在使用2AFC数据运行psignifit函数时遇到相同的问题。

原因很简单,如果您尝试处理超出0到1限制(例如1.0000000001)的数据,则psignifit函数会导致此错误消息。