Matlabでベータ二項モデルを推定しようとしています(データセットはhereです)。Matlabの最適化:パラメータの制約を定義する方法
私の尤度関数:
function out= log_Lik(x,Data);
ms=Data(:,1);
xs=Data (:,2);
alpha=x(1)
beta=x(2)
P12=exp(gammaln(ms+1)-gammaln(xs+1)-gammaln(ms- xs+1)).*exp(gammaln(alpha+xs)+gammaln(beta+ms-xs)-gammaln(alpha+beta+ms));
P3= exp(gammaln(alpha+beta)-gammaln(alpha)-gammaln(beta));
P=P12.*P3;
Like=log(P);
out= -sum(Like);
私の最尤推定コード:
Data=readtable('prob3.xls');
ms=Data.m_s;
xs=Data.x_s;
%% Data parsed to optimisation function
Data = [ms xs ];
f = @(x)log_Lik(x, Data);
%%
options = optimoptions('fminunc','Display','iter','Algorithm','quasi- newton','MaxIter',10000,'TolX',10^-30,'TolFun',10^-30);
alpha0 = 1;
beta0=1;
x0 = [alpha0 beta0];
[x,fval,exitflag,output,grad,hessian] = fminunc(f,x0,options)
私は上記のコードを実行したときしかし、私はというエラーを取得:
Error using gammaln
Input must be nonnegative.
私は、ランダムな負の値をalpha
に渡すことから来ていると信じています尤度関数。最適化コマンドを実行しているときに、パラメータ(alpha
とbeta
)として渡された値の制約を定義する方法があるかどうかは疑問でした。どんなヒントも高く評価されます。
。documentation for fminconは、私がここに書く時間を持っている何より明確になるだろう。使用のfminconを
を空の配列
[]
を渡し、アルファ正 –おかげでマシューを維持するための制約を追加あなたが私のコードでどのようにこれを収容することができるのか教えていただけますか?申し訳ありませんが、私はmatlab – AliCivil