* touched NJC 1.1.0 7 January 2010 *! PAL 1.0.4 February 10 2010 program sixplot,sortpreserve /* sixplot for exploratory analysis of an input variable */ preserve version 8 syntax varlist(min=1 max=2 numeric) [if] [in] tokenize `varlist' quietly { marksample touse count if `touse' if r(N) == 0 error 2000 local N = r(N) tempname gr1 gr2 gr3 gr4 gr5 gr6 tempvar seq if "`2'"==""{ gen long `seq' = _n label var `seq' "Observation number" } else{ gen `seq'=`2' label var `seq' "`2'" } sort `seq' if `N' > 300 { local note "note(`N' observations: use batches of 300)" } /// scatter plot of varname vs observation number twoway (lfitci `1' `seq', stdf) /// (scatter `1' `seq', ms(oh)) if `touse', /// yla(, ang(h)) l1title(`1') title("Sequence plot", size(medsmall)) `note' /// nodraw legend(off) xla(,labels ang(45)) name(`gr1') reg `1' `seq' if `touse' rvfplot, nodraw name(`gr2') msymbol(oh) title("Residual vs fitted Plot", size(medsmall)) subtitle("Lines at 2*sd and -2*sd",size(medsmall)) yli(`=-2*e(rmse)' `=2*e(rmse)') ylabel(,angle(45)) xlabel(,angle(45)) /// boxplot of varname graph hbox `1' if `touse', title("Boxplot", size(medsmall)) nodraw name(`gr3') yla(,ang(45)) /// difference plot of varname vs observation number tempvar diff gen `diff' = `1' - `1'[_n-1] line `diff' `seq' if `touse', title("First difference plot", size(medsmall)) /// ms(oh) ytitle(Value - previous value) yla(, ang(h)) xla(,labels ang(45)) nodraw name(`gr4') /// histogram with 10 bins of varname if c(scheme) == "s1color" | c(scheme) == "s2color" | c(scheme) == "s2color8" { histogram `1' if `touse', bin(10) freq fcolor(green) lcolor(black) /// gap(2) addlabel yla(, ang(h)) xla(,ang(45)) title("Histogram", size(medsmall)) nodraw name(`gr5') } else { histogram `1' if `touse', bin(10) freq /// gap(2) addlabel yla(, ang(h)) xla(,ang(45)) title("Histogram", size(medsmall)) nodraw name(`gr5') } /* histogram `1' if `touse', bin(10) freq fcolor(green) lcolor(black) /// gap(2) addlabel yla(, ang(h)) xla(,ang(45)) title("Histogram", size(medsmall)) nodraw name(`gr5') */ /// normal quantile plot of varname qnorm `1' if `touse', ms(oh) yla(, ang(h)) /// title("Normal quantile plot", size(medsmall)) nodraw name(`gr6') yla(,ang(45)) xla(,ang(45)) } // combined graph graph combine `gr1' `gr2' `gr3' `gr4' `gr5' `gr6', /// title("Sixplot for `1'", size(medsmall) justification(center)) /// subtitle(`"`if' `in'"', size(medsmall) justification(center)) caption( data set: `c(filename)',position(6)) restore end