Matlab: ошибка при использовании gammaln... при построении психометрических функций
Я использую набор инструментов 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 к пути, но это также, похоже, не решило проблему.
Заранее спасибо.
0 ответов
У меня была такая же проблема при запуске функции psignifit с моими данными 2AFC.
Причина была очень проста: функция psignifit вызывает это сообщение об ошибке, если вы пытаетесь обработать данные, превышающие пределы от 0 до 1, например 1.0000000001