/* Macro for univariate zero truncated poisson model; Written by Zheng Sun */ %macro zero_trun_p(indata=,y=); proc iml; use &indata; read all var{&y} into m; mean=sum(m)/nrow(m); diff=1; initial=mean; lambda_old=initial; iters=0; do while(diff>.0000005); lambda_new=lambda_old - (lambda_old - mean*(1-exp(-lambda_old)))/(1-mean*exp(-lambda_old)); diff = abs(lambda_old - lambda_new); lambda_old = lambda_new; iters = iters + 1; end; mju_hat=lambda_new; ods output mju_hat=mju_hat; print mju_hat; %mend zero_trun_p;