*Prodclin.sps - MacKinnon, Fritz, Williams, and Lockwood, 2005. *Dept. of Psychology, Arizona State University. *Necessary files: prodclin.sps, prodclin.exe. *The prodclin.sps program calculates asymmetric confidence intervals for. *the mediated effect using the distribution of the product of two. *random variables and the Fortran program Prodclin.exe. To run, open. *Prodclin.sps in SPSS or copy and paste the program into an SPSS syntax. *window. Then, the location of the Fortran program must be entered in four. *places (both files should be in the same location). Next, the values of. *the a path (a), the b path (b), the st. error of a (sea), the st. error of. *b (seb), the correlation between a and b (rho: usually set to zero), and. *the type 1 error rate (alpha) need to be input in two locations. The output. *consists of the user specified values of a, sea, b, seb, rho, alpha, ab, the first order standard. *error (sobelse) the standardized critical values from Prodclin [low,high], the asymmetric. *confidence limits [prodlow,produp] and the corresponding normal theory confidence limits. *[normlow,normup]. If either prodlow or produp is equal to 99999, there was a problem with. *convergence in the Fortran program. First, check the values you input and. * then, if the problem still occurs, try using fewer decimal places. *All places that need user input have been labeled with comments. *Input values for a, sea, b, seb, rho, and alpha. Data List free /a sea b seb rho alpha. Begin data. -0.09623 0.03889 0.9527 0.2259 0 0.05 End data. *Change file address to match the location of the file prodclin.exe. write outfile='G:/raw.txt'/a(F12.6) " " sea(F12.6) " " b(F12.6) " " seb(F12.6) " " rho(F8.6) " " alpha(F8.6). *Change file address to match the location of the file prodclin.exe. CD 'G:/'. execute. *Change file address to match the location of the file prodclin.exe. HOST Command=['G:/prodclin.exe']. *Change file address to match the location of the file prodclin.exe. Data List File='G:/critval.txt' Free /lcrit ucrit. execute. *Input values for a, sea, b, seb, rho, and alpha. compute a=-0.09623. compute sea=0.03889. compute b=0.9527. compute seb=0.2259. compute rho=0. compute alpha=0.05. compute ab=a*b. compute sobel=sqrt(a*a*seb*seb+b*b*sea*sea). compute da=a/sea. compute db=b/seb. compute dadb=da*db. compute sedadb=sqrt(da*da+db*db+1). compute low=(lcrit-dadb)/sedadb. compute high=(ucrit-dadb)/sedadb. compute prodlow=ab+low*sobel. compute produp=ab+high*sobel. compute nl=idf.normal((alpha/2),0,1). compute normlow=ab+nl*sobel. compute normup=ab-nl*sobel. if lcrit=99999 prodlow=99999. if ucrit=99999 produp=99999. Print / / /'OUTPUT:' /'a=' a(f12.6) ' sea=' sea(f12.6) ' b=' b(f12.6) ' seb=' seb(f12.6) /'ab=' ab(f12.6) ' sobelse=' sobel(f12.6) /'rho=' rho(f12.6) ' Type1 error=' alpha(f12.6) /'Normlow=' normlow(f12.6) ' Normup=' normup(f12.6) /'Prodclin lower critical value' low(f12.6) /'Prodclin upper critical value' high(f12.6) /'Prodlow=' prodlow(f12.6) ' Produp=' produp(f12.6). execute.