ACTUALIZADO
Estoy tratando de encontrar el máximo de estimación de la probabilidad de una función de distribución de probabilidad dada a continuación
\begin{equation} g(x)=\frac{1}{\Gamma \left( \alpha \right)\gamma^{2\alpha}2^{\alpha-1}}x^{2\alpha-1}\exp\left\{{-\frac{x^2}{2\gamma^{2}}}\right\}I_{{\rm I\!R}^{+}}(x) \end{equation}
donde $\alpha >0$ es la forma de parámetros, $\sigma >0$ es el parámetro de escala.
La función de probabilidad está dada entonces por
\begin{equation} L(\alpha,\gamma/x)=\prod\limits_{i=1}^{n}\frac{1}{\Gamma \left( \alpha \right)\gamma^{2\alpha}2^{\alpha-1}}x_i^{2\alpha-1}\exp\left\{{-\frac{x_i^2}{2\gamma^{2}}}\right\} \end{equation}
Por lo tanto, la probabilidad de la función es entonces \begin{equation} L(\alpha,\gamma/x)=\frac{1}{[\Gamma \left( \alpha \right)]^{n}\gamma^{2\alpha n}{2^{n\alpha-n}}} \exp\left\{{-\frac{1}{2\gamma^{2}}\sum\limits_{i=1}^{n}x_{i}^{2}}\right\}\left(\prod\limits_{i=1}^{n}x_{i}\right)^{2\alpha-1} \end{equation}
Ahora, la función de verosimilitud logarítmica denotado por $\ell$ es
\begin{equation} \begin{aligned} \ell &=\log[L(\alpha,\gamma/x)]\\ &=-n\log(\Gamma \left( \alpha \right))-2\alpha n \log(\gamma)-n(\alpha-1)\log(2)-\frac{1}{2\gamma^{2}}\sum\limits_{i=1}^{n}x_{i}^{2}+(2\alpha-1)\sum\limits_{i=1}^{n}\log(x_{i}) \end{aligned} \end{equation}
Las entradas de la puntuación de la función está dada por
\begin{equation} \begin{aligned} \frac{\partial \ell}{\partial \alpha}=-n\psi(\alpha)-2n\log(\gamma)-n\log(2)+2\sum\limits_{i=1}^{n}\log(x_{i}) \end{aligned} \end{equation} donde $\psi(\alpha)$ es la función digamma y
\begin{equation} \begin{aligned} \frac{\partial \ell}{\partial \gamma}=-\frac{2\alpha n}{\gamma}+\frac{\sum\limits_{i=1}^{n}x_{i}^{2}}{\gamma^{3}} \end{aligned} \end{equation}
La configuración de estas dos ecuaciones a cero y resolver simultáneamente los resultados en un máximo de estimaciones de probabilidad (MLE) de los parámetros, $\hat{\alpha}$$\hat{\gamma}$. Sin embargo, las ecuaciones obtenidas mediante la configuración de las anteriores derivadas parciales a cero no son en forma cerrada y los valores de los parámetros de $\alpha$ $\gamma$ debe encontrarse mediante métodos iterativos.
Matriz de información de Fisher se define como $I_{ij}=-E\left\{\frac{\partial^{2} \ell}{\partial \tau_i \partial \tau_j} \log[L(x_i, \vec{\tau})]\ \right\}$ donde$\tau_1=\alpha$$\tau_2=\gamma$. Por lo tanto, la matriz de información para la gamma-distribución de rayleigh es dada por,
\begin{equation} I=n \left[ \begin{array}{cc} \psi_{1}(\alpha) & 2/\gamma\\ 2/\gamma & 4\alpha/\gamma^2 \end{array} \right] \end{equation}
Estoy tratando de usar Fisher Scoring para encontrar Emv de los parámetros. Aquí está mi código de MATLAB. Yo primero generar 1000 observaciones aleatorias a partir de la gamma-distribución y de ejecutar este código. Mis valores de partida y el resto se da en el código.
clear all;
clc;
%Simulate 1000 sample from Gamma Distribution
n=1000;
alpha=3;
lambda=0.05;
x=gamrnd(alpha,1/lambda,1,n);
figure(1)
histfit(x,8,'gam');
sumlogx=sum(log(x)); sumxsquare=sum(x.^2);
%Initial Values
alpha=mean(x)^2/var(x);
gam=mean(x)/var(x);
theta=[alpha; gam];
S=Inf;
while sum(abs(S) > 10^(-5)) > 0
S=[-n*psi(theta(1))-2*n*log(theta(2))-n*log(2)+2*sumlogx;...
(-2*theta(1)*n/theta(2))+(sumxsquare/(theta(2)^3))];
FIM=n*[psi(1, theta(1)), 2/theta(2);...
2/theta(2), 4*theta(1)/(theta(2)^2)];
theta=theta + FIM\S;
end
alpha_hat=theta(1)
gam_hat=theta(2)
fprintf('alpha_hat=%g, gamma_hat=%g \n', theta(1),theta(2))
Pero por algunas razones que no puedo entender, me estoy poniendo "Error en la utilización de psi X debe ser no negativo." error. Mi $\alpha$ de los valores están siendo negativa en la iteración de alguna manera, y no sé cómo solucionarlo!
Yo también soy ejecución de Newton-Raphson cuyo código de MATLAB es la siguiente
clear all;
clc;
%Simulate 100 sample from Gamma Distribution
n=1000;
alpha=3;
lambda=0.05;
x=gamrnd(alpha,1/lambda,1,n);
figure(1)
histfit(x,8,'gam');
sumlogx=sum(log(x)); sumxsquare=sum(x.^2);
%tuning parameters scale=gamma; shape=alpha
itermin=10^-7;
maxiter=10^7;
sc_init=0.000001;
sh_init=0.000001;
converged=[0;0;sc_init;sh_init];
% pdf
pdf=@(x,gam,alpha) 1/(gamma(alpha)*(gam^(2*alpha))*(2^(alpha-1)))*(x^(2*alpha-1))*exp(-(x^2)/(2*(gam^2)));
%score function is the first partial derivative of the log likelihood function
score=@(gam,alpha) -n*psi(alpha)-2*n*log(gam)-n*log(2)+2*sumlogx;
%Hessian function is the negative of the 2nd
hessian=@(gam,alpha) psi(1, alpha);
sc_loop=2;
scale_hat=zeros(1,maxiter);
scale_hat(1)=sc_init;
while 1==1
sh_loop=2;
shape_hat=zeros(1,maxiter);
shape_hat(1)=sh_init;
while 1==1
%calculate chat as chat_prev+score(chat_prev)/hessian(chat_prev)
shape_hat(sh_loop)=shape_hat(sh_loop-1)+score(scale_hat(sc_loop-1),shape_hat(sh_loop-1))/hessian(scale_hat(sc_loop-1),shape_hat(sh_loop-1));
%test for a convergence
if abs(shape_hat(sh_loop)-shape_hat(sh_loop-1))<itermin
break %the process converged to a c value
elseif sh_loop>maxiter
disp(['max iteration on \alpha achieved:', num2str(maxiter)]);
return
end
sh_loop=sh_loop+1;
end
scale_hat(sc_loop)=(sum(x.^shape_hat(sh_loop-1))/n)^(1/shape_hat(sh_loop-1));
%test for a convergence
if abs(scale_hat(sc_loop)-scale_hat(sc_loop-1))<itermin
break %the process converged to a gamma value
end
converged=[converged,[sc_loop-1;sh_loop-1;scale_hat(sc_loop);shape_hat(sh_loop)]];
sc_loop=sc_loop+1;
end
%final display
disp(repmat('-',[1,30])),disp(' Iteration Scale Shape'),disp(repmat('-',[1,30]))
disp(num2str(converged','%6.4f')),disp(repmat('-',[1,30]))
disp(['Real values: gamma=', num2str(gam),',alpha=',num2str(alpha)])
Estoy recibiendo el mismo "Error en la utilización de psi, X debe ser no negativo." error.
Podría usted ayudarme? Algo está mal con psi función y no sé. Tal vez debería usar la aproximación, pero no estoy seguro de cuánta de la información que voy a perder!