******************************************************************** Program Name: SCCsamplesize.SAS System: PC SAS v9.3 Purpose: Sample size calculation for Stratified Case-cohort design (SCC) in optimal, balanced, and proportional sampling methods ******************************************************************************* Notation: n = full cohort size, L = number of strata(l=1,2,...L) nl = size of stratum l in full cohort, vl = proportion of stratum l, pdl = event proportion in stratum l, rl = group 1 proportion, theta = 0.693 (log-hazard ratio), pl = sub-cohort sampling fraction in stratum l, nhat = Sub-cohort sample size, nhatl = Sub-cohort sample size in stratum l, (_OPT: by optimal sampling method, _BAL: by balanced method, _PROP: by proportional method) SCC = SCC sample size, Nonevent = number of subjects with non-event in SCC, Noneventl = number of subjects with non-event in stratum l, Eventl = number of subjects with event in SCC, Eventl = number of subjects with event in stratum l, z_a = 1.96 (two-sided with the Significant level alpha = 0.05), z_b = 0.842(Power = 80%) ******************************************************************************; dm "output;clear;log;clear"; *read in strata information; data file; input n n1 n2 event event1 event2 theta z_a z_b r1 r2 L ; datalines; 4559 2282 2277 120 96 24 0.693 1.96 0.842 0.4 0.4 2 ; run; *calculate the strata parameters; Data file; set file; v1 = n1/n; v2 = n2/n; pd1 = event1/n1; pd2 = event2/n2; run; *calculate sample size based on the optimal design; data OPT; set file; nhat_OPT = n* ( sqrt(r1*(1-r1)/(1-pd1/2))*pd1*v1 + sqrt(r2*(1-r2)/(1-pd2/2))*pd2*v2 )**2 * ( (z_a+z_b)**2/theta**2 )/ ( n*(r1*(1-r1)*pd1*v1+ r2*(1-r2)*pd2*v2 )**2 - (r1*(1-r1)*pd1*v1*(1-pd1/(1-pd1/2)) + r2*(1-r2)*pd2*v2*(1-pd2/(1-pd2/2)))*( (z_a+z_b)**2/theta**2 ) ); p1 = (nhat_OPT/n) * sqrt(r1*(1-r1)/(1-pd1/2))*pd1 / ( sqrt(r1*(1-r1)/(1-pd1/2))*pd1*v1 + sqrt(r2*(1-r2)/(1-pd2/2))*pd2*v2 ); p2 = (nhat_OPT/n) * sqrt(r2*(1-r2)/(1-pd2/2))*pd2 / ( sqrt(r1*(1-r1)/(1-pd1/2))*pd1*v1 + sqrt(r2*(1-r2)/(1-pd2/2))*pd2*v2 ); nhat1 = p1*v1*n; nhat2 = p2*v2*n; SCC = n*(v1*p1+(1-p1)*pD1*v1 +v2*p2 +(1-p2)*pD2*v2 ); nonevent = n*(v1*p1*(1-pd1) +v2*p2*(1-pd2) ); run; *calculate sample size based on the balanced design; data BAL; set file; nhat_BAL = n*L*( r1*(1-r1)*pd1*pd1*v1*v1/(1-pd1/2) + r2*(1-r2)*pd2*v2*pd2*v2/(1-pd2/2) )* ( (z_a+z_b)**2/theta**2 )/ ( n*(r1*(1-r1)*pd1*v1+ r2*(1-r2)*pd2*v2 )**2 - (r1*(1-r1)*pd1*v1*(1-pd1/(1-pd1/2)) + r2*(1-r2)*pd2*v2*(1-pd2/(1-pd2/2)))*( (z_a+z_b)**2/theta**2 ) ); nhat1 = nhat_BAL/L; nhat2 = nhat1; p1 = nhat1/(v1*n); p2 = nhat2/(v2*n); SCC = n*(v1*p1+(1-p1)*pD1*v1 +v2*p2 +(1-p2)*pD2*v2 ); nonevent = n*(v1*p1*(1-pd1) +v2*p2*(1-pd2) ); run; *calculate sample size based on the proportional design; data PROP; set file; b2 = n**(1/2)*theta*(r1*(1-r1)*pd1*v1+ r2*(1-r2)*pd2*v2 )/(z_a+z_b); *b2 = middle variable; nhat_PROP = n*(r1*(1-r1)/(1-pd1/2)*pd1*pd1*v1 + r2*(1-r2)/(1-pd2/2)*pd2*v2*pd2 )/ (b2**2-(r1*(1-r1)*pd1*v1+ r2*(1-r2)*pd2*v2 ) + (r1*(1-r1)*pd1*pd1/(1-pd1/2)*v1 + r2*(1-r2)*pd2*v2*pd2/(1-pd2/2) )); p = (r1*(1-r1)/(1-pd1/2)*pd1*pd1*v1 + r2*(1-r2)/(1-pd2/2)*pd2*v2*pd2 )/ (b2**2-(r1*(1-r1)*pd1*v1+ r2*(1-r2)*pd2*v2 ) + (r1*(1-r1)*pd1*pd1*v1/(1-pd1/2) + r2*(1-r2)*pd2*v2*pd2/(1-pd2/2) )); nhat1 = p*v1*n; nhat2 = p*v2*n; SCC = n*(v1*p+(1-p)*pD1*v1 +v2*p +(1-p)*pD2*v2 ); nonevent = n*(v1*p*(1-pd1) +v2*p*(1-pd2) ); run;