data x; input c x; cards; 1 1 1 2 1 3 1 4 1 5 2 3 2 3 2 3 2 4 2 5 2 6 2 7 2 8 ; proc means data = x noprint; where c = 1; var x; output out = s1 mean = m1 std = s1 n = n1; proc means data = x noprint; where c = 2; var x; output out = s2 mean = m2 std = s2 n = n2; data out; merge s1 s2; alpha = 0.05; v1 = s1**2/n1; v2 = s2**2/n2; za = quantile('Normal', 1-alpha/2)**2; r = m1/m2; LCLZ = (2*m1*m2 - sqrt((-2*m1*m2)**2 - 4*(m1**2 - v1*za)*(m2**2 - v2*za))) / (2 * (m2**2 - v2 * za)); UCLZ = (2*m1*m2 + sqrt((-2*m1*m2)**2 - 4*(m1**2 - v1*za)*(m2**2 - v2*za))) / (2 * (m2**2 - v2 * za)); Z = (m1 - m2) / sqrt(v1 + v2); ProbZ = 2*cdf("Normal", -abs(Z)); proc print; var R LCLZ UCLZ Z ProbZ; run; proc ttest data = x dist = normal test = ratio; class c; var x; run;