Below is a comparison of the commands used to perform various statistical analyses in R, SAS, SPSS, and Stata. For R functions that are not included in base R, the library() function loads the package that contains the function right before it is used. The variables gender and workshop are categorical factors, and q1 to q4, pretest and posttest are considered continuous and normally distributed.
The practice data set is shown here. The programs and the data they use are also available for download here. Detailed step-by-step explanations are in the books, along with the output of each analysis.
Analysis of Variance
R
myModel <- aov(posttest ~ workshop, data = mydata100) summary(myModel) pairwise.t.test(posttest, workshop) TukeyHSD(myModel, "workshop") plot(TukeyHSD(myModel, "workshop"))SAS
PROC GLM; CLASS workshop; MODEL posttest = workshop; MEANS workshop / TUKEY; RUN;SPSS
UNIANOVA posttest BY workshop /POSTHOC = workshop ( TUKEY ) /PRINT = ETASQ HOMOGENEITY /DESIGN = workshop.Stata
anova posttest workshopCorrelate, Pearson
cor( mydata[3:6], method = "pearson", use = "pairwise") cor.test(mydata$q1, mydata$q2, use = "pairwise") # Again, adjusting p-values for multiple testing. library("Rcmdr") rcorr.adjust( mydata[3:6] )SAS
PROC CORR; VAR q1-q4; RUN;SPSS
CORRELATIONS /VARIABLES=q1 TO q4.Stata
correlate q*Correlate, Spearman
R
cor( mydata[3:6], method = "spearman", use = "pairwise") cor.test(mydata$q1, mydata$q2, use = "pairwise") # Again, adjusting p-values for multiple testing. library("Rcmdr") rcorr.adjust(mydata[3:6], type = "spearman")SAS
PROC CORR SPEARMAN; VAR q1-q4; RUN;SPSS
NONPAR CORR /VARIABLES=q1 to q4 /PRINT=SPEARMAN.Stata
spearman q*Crosstabulation & Chi-squared
R
myWG <- table(workshop, gender) chisq.test(myWG) library("gmodels") CrossTable(workshop, gender, chisq = TRUE, format = "SAS")SAS
PROC FREQ; TABLES workshop*gender / CHISQ; RUN;SPSS
CROSSTABS /TABLES=workshop BY gender /FORMAT= AVALUE TABLES /STATISTIC=CHISQ /CELLS= COUNT ROW /COUNT ROUND CELLStata
tab gender workshop, row col exactDescriptive Statistics
R
summary(mydata) library("Hmisc") describe(mydata)SAS
PROC MEANS; VAR q1--posttest; PROC UNIVARIATE; VAR q1--posttest;SPSS
DESCRIPTIVES VARIABLES=q1 to posttest /STATISTICS=MEAN STDDEV VARIANCE MIN MAX SEMEAN. EXAMINE VARIABLES=q1 to posttest /PLOT BOXPLOT STEMLEAF NPPLOT /COMPARE GROUP /STATISTICS DESCRIPTIVES EXTREME /MISSING PAIRWISE.Stata
summary q* summary q*, detailFrequencies
R
summary(mydata) library("Deducer") frequencies(mydata)SAS
PROC FREQ; TABLES workshop--q4; RUN;SPSS
FREQUENCIES VARIABLES= workshop TO q4.Stata
tab1 workshop gender q*Kruskal-Wallis
R
kruskal.test(posttest ~ workshop) pairwise.wilcox.test(posttest, workshop)SAS
PROC npar1way; CLASS workshop; VAR posttest;SPSS
NPAR TESTS /K-W=posttest BY workshop(1 3).Stata
kwallis q1, by(gender)Linear Regression
R
myModel <- lm(q4 ~ q1 + q2 + q3, data = mydata100) summary(myModel) plot(myModel)SAS
PROC REG; MODEL q4 = q1-q3;SPSS
REGRESSION /MISSING LISTWISE /STATISTICS COEFF OUTS R ANOVA /CRITERIA=PIN(.05) POUT(.10) /NOORIGIN /DEPENDENT q4 /METHOD=ENTER q1 q2 q3.Stata
regress q4 q1-q3 lvr2plotSign Test
R
library("PASWR") SIGN.test(posttest, pretest, conf.level = .95)SAS
myDiff=posttest-pretest; PROC UNIVARIATE; VAR myDiff; RUN;SPSS
NPTESTS /RELATED TEST(q1 q2) SIGN /MISSING SCOPE=ANALYSIS USERMISSING=EXCLUDE /CRITERIA ALPHA=0.05 CILEVEL=95.Stata
bitest posttest &gt;; pretestt-Test, Independent
R
t.test(q1 ~ gender, data = mydata100)SAS
PROC TTEST; CLASS gender; VAR q1; RUN;SPSS
T-TEST GROUPS = gender('m' 'f') /VARIABLES = q1.Stata
ttest gender=q1, unpair unequt-Test, Paired
R
t.test(posttest, pretest, paired = TRUE)SAS
PROC TTEST; PAIRED pretest*posttest; RUN;SPSS
T-TEST PAIRS=pretest WITH posttest (PAIRED).Stata
anova posttest workshopVariance Test
R
t.test(posttest, pretest, paired = TRUE)SAS
It’s built into other procedures, such as GLM.
SPSS
It’s built into other procedures, such as GLM.
Stata
robvar posttest, by(gender) * Or... sdtest posttest = genderWilcoxon Rank Sum (Mann-Whitney)
R
wilcox.test(q1 ~ gender, data = mydata100)SAS
PROC NPAR1WAY; CLASS gender; VAR q1; RUN;SPSS
NPTESTS /RELATED TEST(pretest posttest) SIGN WILCOXON.Stata
ranksum posttest, by(gender)Wilcoxon Signed Rank (Paired)
R
wilcox.test(posttest, pretest, paired = TRUE)SAS
myDiff=posttest-pretest; PROC UNIVARIATE; VAR myDiff; RUN;SPSS
NPTESTS /RELATED TEST(q1 q2) WILCOXON /MISSING SCOPE=ANALYSIS USERMISSING=EXCLUDE /CRITERIA ALPHA=0.05 CILEVEL=95.Stata
signrank q1 = gender