Search All of the Math Forum:
Views expressed in these public forums are not endorsed by
NCTM or The Math Forum.


Paul
Posts:
517
Registered:
2/23/10


MLE of std dev for normal PDF skewed wrt confidence intervals
Posted:
Nov 12, 2012 5:36 PM


I am using the code below to get familiar with Maximum Likelihood Estimation. I am fitting to a normal distribution. Following the MLE estimate, comparison is made with (i) mean() & std(); (ii) normfit(); and (iii) MLE estimate of the error of the estimates.
I'd like to get the feedback of more experienced MLE users. For parameter 2 (sigma, or standard deviation), the estimate is 0.4684, with 95% confidence intervals at 0.3311 and 1.0192. The estimate is much closer to the lower end of the confidence interval. I understand that that PDF for the estimate of sigma may be heavily skewed. Would this be the explanation? The reason I ask is because a paper I am studying uses the MLE estimate of the error on sigma, which leads to a +/ delta_sigma, which basically pretends that the confidence intervals are symmetric around the estimate. The above skewing of estimated sigma relative to the confidence intervals means that I have to be careful and ensure that this assumption wasn't carried through to all the calculations that depend on confidence intervals.
Thanks.
Test code  data=[ 1.3088 3.8089 0.1314 1.8902 0.8760 0.5257 0.9971 0.2289 ]';
Ndata=length(data); disp(['data=' num2str(data)]); disp(['Ndata=' num2str(Ndata)]);
disp(' ')
% MLE of normal distribution parameters disp('Parameter_hat (''phat'' for mean, std dev) &') disp('95% parameter confidence intervals ''pci'':') [phat pci] = mle(data)
disp('Offsets, confidence interval bounds from estimate:') disp( pci  [phat; phat] )
disp(' ')
% Compare with 'usual' estimations disp('[ mean(data) & std(data,1) ]:') disp([ mean(data) std(data,1) ])
disp(' ')
% Compare with 'normfit' [mu,sigma,muci,sigmaci] = normfit(data)
disp(' ')
% Siegmund Brandt's 2nd derivative of loglikelihood wrt parameters disp('From MLE approach:') fprintf( 'std dev of Mu=%g\n', phat(2)/sqrt(Ndata) ); fprintf( 'std dev of StdDev=%g\n', phat(2)/sqrt(2*Ndata) );



