J'essaie d'ajuster les données d'histogramme qui semblent suivre une distribution poisson. Je déclare la fonction comme suit et essaie de l'ajuster en utilisant la méthode des moindres carrés.Estimation des paramètres PDF de Poisson à l'aide de l'ajustement de courbe dans MATLAB
xdata; ydata; % Arrays in which I have stored the data.
%Ydata tell us how many times the xdata is repeated in the set.
fun= @(x,xdata) (exp(-x(1))*(x(1).^(xdata)))./(factorial(xdata)) %Function I
% want to use in the fit. It is a poisson distribution.
x0=[60]; %Approximated value of the parameter lambda to help the fit
p=lsqcurvefit(fun,x0,xdata,ydata); % Fit in the least square sense
je rencontre cependant le problème suivant
Error using snls (line 48)
Objective function is returning undefined values at initial point.
lsqcurvefit cannot continue.
Je l'ai vu en ligne qu'il avait parfois de le faire avec une division par zéro par exemple. Cela peut être résolu en ajoutant une petite quantité dans le dénominateur afin que cette indétermination n'arrive jamais. Cependant, ce n'est pas mon cas. Quel est le problème alors?
Je ne savais pas que c'était pas la bonne façon de le faire. Merci pour le commentaire! Quoi qu'il en soit, lsqcurvefit devrait être capable de me donner un résultat pour le paramètre. J'ai essayé avec un pdf poisson connu et ça m'a donné un résultat. Quel est le problème alors? –
Je n'ai pas compris votre commentaire. Pourquoi n'utilisez-vous pas ce que j'ai suggéré? – Royi
Je vois maintenant que la méthode MLE est meilleure. Cependant, je me demandais encore pourquoi la méthode des moindres carrés ne fonctionnait pas. –