* Encoding: UTF-8. *Simulation syntax for CuSum chart. DATASET CLOSE ALL. OUTPUT CLOSE ALL. FILE HANDLE save /NAME = "C:\Users\axw161530\Dropbox\Documents\BLOG\CuSum_Intervention". SET SEED 10. INPUT PROGRAM. LOOP #i = 1 TO 100. COMPUTE Step = #i. END CASE. END LOOP. END FILE. END INPUT PROGRAM. DATASET NAME Sim. COMPUTE #B = 10. COMPUTE #P = 0.8. COMPUTE Base = RV.POISSON(#B). COMPUTE Treat = RV.POISSON(#B*#P). COMPUTE Dif = Treat - Base. VECTOR Sim (100). VECTOR Dif (100). DO REPEAT S = Sim1 TO Sim100 /D = Dif1 TO Dif100. COMPUTE S = RV.POISSON(#B). COMPUTE D = S - Base. END REPEAT. EXECUTE. FORMATS ALL (F4.0). *Make a graph of treatment versus control. GGRAPH /GRAPHDATASET NAME="graphdataset" VARIABLES=Step Base Treat /GRAPHSPEC SOURCE=INLINE /FITLINE TOTAL=NO. BEGIN GPL SOURCE: s=userSource(id("graphdataset")) DATA: Step=col(source(s), name("Step")) DATA: Base=col(source(s), name("Base")) DATA: Treat=col(source(s), name("Treat")) GUIDE: axis(dim(1), label("Time")) GUIDE: axis(dim(2), label("Crime Counts")) ELEMENT: line(position(Step*Base), color(color.black), size(size."1.5")) ELEMENT: line(position(Step*Treat), color(color.red), size(size."2.5")) END GPL. *Reshape wide to long. VARSTOCASES /MAKE Dif FROM Dif Dif1 TO Dif100 /MAKE Sim FROM Treat Sim1 TO Sim100 /INDEX SimNum. *Calculate CuSum. COMPUTE Treat = (SimNum = 1). FORMATS Treat (F1.0). SORT CASES BY SimNum Step. SPLIT FILE BY SimNum. CREATE CumDif = CSUM(Dif). SPLIT FILE OFF. *Now create a chart of the treated series versus the others. *Cumulative difference over time. *This is so I can put the treated line on top. DO IF Treat = 1. COMPUTE TreatDif = CumDif. COMPUTE CumDif = $SYSMIS. END IF. FORMATS CumDif TreatDif (F4.0). EXECUTE. TEMPORARY. SELECT IF Step <= 25. GGRAPH /GRAPHDATASET NAME="graphdataset" VARIABLES=Step CumDif SimNum TreatDif MISSING=VARIABLEWISE /GRAPHSPEC SOURCE=INLINE /FITLINE TOTAL=NO. BEGIN GPL SOURCE: s=userSource(id("graphdataset")) DATA: Step=col(source(s), name("Step")) DATA: CumDif=col(source(s), name("CumDif")) DATA: SimNum=col(source(s), name("SimNum"), unit.category()) DATA: TreatDif=col(source(s), name("TreatDif")) GUIDE: axis(dim(1), delta(5)) GUIDE: axis(dim(2), label("Cumulative Differences")) GUIDE: text.title(label("Base 10 Crimes, 20% reduction")) ELEMENT: line(position(Step*CumDif), split(SimNum), color(color.black), transparency(transparency."0.8"), size(size."0.8")) ELEMENT: line(position(Step*TreatDif), color(color.red), size(size."2")) END GPL. EXECUTE. OUTPUT EXPORT /PNG IMAGEROOT="save\Base10_20red.png".