% file to generate normal data from a regression with only a contact. % John Rust University of Maryland, November 2011 global data sigmahat resids; truemu=4; truesig=1.5; nobs=1500; data=truemu+truesig*randn(nobs,1); sigmahat=std(data); muhat=mean(data); resids=data-muhat; % plot loglikelihood mu=(-4:.1:12)'; llf=zeros(size(mu,1),1); nllf=zeros(size(mu,1),1); for i=1:size(mu,1); llf(i)=lln(mu(i)); nllf(i)=nlln(mu(i)); end; % the functions lln and nlln compute the *negative* of the log-likelihood % because Matlab's optimization program, fminunc, is for *minimization* of % functions, not maximization. So to maximize, we minimize the negative of % the log-likelihood function llf=-llf; nllf=-nllf; figure(1); hold on; plot(mu,llf,'r-','LineWidth',2); plot(mu,nllf,'b--','LineWidth',2); title('Plot of Normal Log-Likelihood Function'); xlabel('Mu value'); ylabel('Log Likelihood value'); legend('Parametric loglikelihood','Semi-Parametric Loglikelihood','Location','Best'); hold off; muhat=mean(data); mu_pmle=fminunc(@lln,0); mu_npmle=fminunc(@nlln,0); fprintf('Sample Mean: %12.9f\n',muhat); fprintf('Parametric (gaussian) Maximum Likelihood Estimator: %12.9f\n',mu_pmle); fprintf('Semi-Parametric Adaptive Maximum Likelihood Estimator: %12.9f\n',mu_npmle);