The following PROC OPTMODEL code matches your results for fixed Z = 0.89:
proc optmodel;
set ROWS;
num jmax = 6;
set COLS = 1..jmax;
num cat_c {ROWS, COLS};
num num_rat {ROWS};
read data test into ROWS=[_N_] {j in COLS} <cat_c[_N_,j]=col('cat'||j+2)> num_rat;
print cat_c;
var Z init 0.89;
impvar P {i in ROWS, j in COLS diff {jmax}} = CDF('Normal', Cat_C[i,j+1]) - CDF('NORMAL', Cat_C[i,j]);
impvar Phi {i in ROWS, j in COLS} = CDF('Normal', (Cat_C[i,j]-sqrt(&rho)*Z)/sqrt(1-&rho));
impvar Delta {i in ROWS, j in COLS diff {jmax}} = Phi[i,j+1] - Phi[i,j];
impvar ObjectiveSummand {i in ROWS, j in COLS diff {jmax}} = (num_rat[i] * (P[i,j] - Delta[i,j])**2 / (Delta[i,j] * (1 - Delta[i,j])));
min Objective = sum {i in ROWS, j in COLS diff {jmax}} ObjectiveSummand[i,j];
fix Z;
solve;
print Objective Z;
print P Phi Delta;
print ObjectiveSummand;
quit;
Uncomment the FIX statement to let the solver find Z.
... View more