author: Michael A. Erickson date: 27 September 2014
(I apologize for this week. I thought because it was Spring Break that I’d have plenty of free time, but I got caught up in recruiting for the MA-CMHC program with Susan.) Here is where I am at.
Resp and SeltDet subscales do not appear to change linearly as a function of years of experience, Social and IndFree do.The general tack I am taking follows from Maxwell and Delaney (2004, I think). In it, you start with your highest order interaction or interactions, and work backwards from them to understand each one. Their Chapter 7 covers nonorthogonal designs and applies to this work. Their Chapter 9 covers designs with Covariates, and I am checking it over to check that I am doing okay with treating years of experience as a continuous variable. I am also using Cohen, Cohen, West, and Aiken’s (2003) Chapter 8 that covers categorical or nominal independent variables. It also covers ANCOVA after a fashion, but is relevant when you are not just interested in pulling out the effect of a continuous covariate, but want to understand the effect of the covariate in the context of categorical variables.
For collaborating, I suppose it is good to figure out how to deal with SPSS files. They can be accessed via .csv files, but then a lot of the information about variables is lost.
I have used the foreign library in the past, but it looks like memisc is actually really well set up to do this and to do and report regression analyses.
## read.spss() is from the foreign library -- note the errors
## rto.raw <- read.spss("../TRAUMA_FEB_25_2014_final merge_Edman_WATSON.sav", to.data.frame=TRUE, use.value.labels=TRUE)
## rm(rto.raw)
## spss.system.file() is from the memisc library
pos <- spss.system.file("POSbyRacewithYrsExperienceDatabase.Cleaned2.12.2015.sav")
pos.ds <- as.data.set(pos)
pos.df <- as.data.frame(pos.ds)
## This has the whole names --
(ntrans <- t(matrix(strsplit(pos@data.spec$auxiliaries$longVariableNames, "=|\t")[[1]], nrow=2)))
## [,1] [,2]
## [1,] "NUMBER" "Number"
## [2,] "YRSEXPGR" "YrsExpGrpd"
## [3,] "YRSEXP" "YrsExp"
## [4,] "RACE" "Race"
## [5,] "POSMEAN" "POSMean"
## [6,] "POSSUBRE" "POSSubResp"
## [7,] "POSSUBSE" "POSSubSelfDet"
## [8,] "POSSUBSO" "POSSubSocial"
## [9,] "POSSUBIN" "POSSubIndFree"
names(pos.df) <- ntrans[,2]
## overview
description(pos.ds)
##
## number 'Survey Number'
## yrsexpgr (none)
## yrsexp 'Years of Experience'
## race 'Race/Ethnicity'
## posmean (none)
## possubre (none)
## possubse (none)
## possubso (none)
## possubin (none)
describe(pos.df[,-4], na.rm=TRUE)
## vars n mean sd median trimmed mad min max range skew kurtosis se
## Number 1 527 264.00 152.28 264.00 264.00 195.70 1.00 527.00 526.0 0.00 -1.21 6.63
## YrsExpGrpd 2 512 2.82 1.21 3.00 2.79 1.48 1.00 7.00 6.0 0.29 -0.30 0.05
## YrsExp 3 513 22.05 11.69 21.00 21.73 13.34 0.00 67.00 67.0 0.31 -0.28 0.52
## POSMean 4 517 3.98 0.38 3.98 3.98 0.41 2.55 4.85 2.3 -0.20 -0.18 0.02
## POSSubResp 5 517 4.36 0.45 4.40 4.39 0.44 2.70 5.00 2.3 -0.63 0.02 0.02
## POSSubSelfDet 6 517 4.32 0.44 4.40 4.34 0.44 2.80 5.00 2.2 -0.54 0.12 0.02
## POSSubSocial 7 517 3.75 0.59 3.80 3.78 0.59 1.50 5.00 3.5 -0.46 0.16 0.03
## POSSubIndFree 8 517 3.47 0.58 3.50 3.49 0.59 1.40 5.00 3.6 -0.33 0.13 0.03
describeBy(pos.df[,-4], group = pos.df$Race)
## group: Caucasian
## vars n mean sd median trimmed mad min max range skew kurtosis se
## Number 1 175 255.05 150.09 249.00 253.25 201.63 1.00 523.00 522.0 0.07 -1.26 11.35
## YrsExpGrpd 2 169 2.94 1.25 3.00 2.91 1.48 1.00 7.00 6.0 0.18 -0.46 0.10
## YrsExp 3 169 23.46 12.12 25.00 23.27 14.83 1.00 60.00 59.0 0.17 -0.60 0.93
## POSMean 4 172 4.04 0.39 4.05 4.06 0.37 2.55 4.85 2.3 -0.51 0.60 0.03
## POSSubResp 5 172 4.45 0.43 4.50 4.49 0.44 2.80 5.00 2.2 -1.00 1.12 0.03
## POSSubSelfDet 6 172 4.37 0.43 4.40 4.39 0.44 2.80 5.00 2.2 -0.64 0.57 0.03
## POSSubSocial 7 172 3.74 0.62 3.80 3.78 0.59 1.90 4.90 3.0 -0.50 -0.16 0.05
## POSSubIndFree 8 172 3.60 0.55 3.60 3.62 0.44 1.90 5.00 3.1 -0.34 0.49 0.04
## ---------------------------------------------------------------------------
## group: AA
## vars n mean sd median trimmed mad min max range skew kurtosis se
## Number 1 66 254.76 152.42 230.50 251.94 180.14 15.00 525.00 510.00 0.15 -1.08 18.76
## YrsExpGrpd 2 64 2.83 1.30 3.00 2.75 1.48 1.00 7.00 6.00 0.53 0.03 0.16
## YrsExp 3 64 22.50 12.54 21.50 21.90 12.60 4.00 67.00 63.00 0.66 0.73 1.57
## POSMean 4 64 3.94 0.34 3.96 3.94 0.35 2.98 4.65 1.68 -0.17 -0.24 0.04
## POSSubResp 5 64 4.36 0.45 4.40 4.38 0.44 3.30 5.00 1.70 -0.46 -0.60 0.06
## POSSubSelfDet 6 64 4.17 0.46 4.10 4.19 0.44 2.80 5.00 2.20 -0.51 0.37 0.06
## POSSubSocial 7 64 3.84 0.55 3.90 3.89 0.44 1.50 4.60 3.10 -1.52 4.02 0.07
## POSSubIndFree 8 64 3.39 0.57 3.40 3.41 0.44 1.60 4.50 2.90 -0.39 0.49 0.07
## ---------------------------------------------------------------------------
## group: Chicano/Mexican
## vars n mean sd median trimmed mad min max range skew kurtosis se
## Number 1 53 297.25 147.63 293.00 301.63 209.05 4.00 521.00 517.00 -0.11 -1.18 20.28
## YrsExpGrpd 2 50 2.92 1.12 3.00 2.98 1.48 1.00 5.00 4.00 -0.27 -0.96 0.16
## YrsExp 3 51 22.31 11.22 24.00 22.34 13.34 0.00 47.00 47.00 -0.05 -0.91 1.57
## POSMean 4 53 3.96 0.33 3.97 3.96 0.37 3.31 4.53 1.22 -0.03 -1.05 0.04
## POSSubResp 5 53 4.33 0.44 4.30 4.36 0.44 3.11 5.00 1.89 -0.42 -0.23 0.06
## POSSubSelfDet 6 53 4.24 0.44 4.30 4.26 0.44 2.90 5.00 2.10 -0.64 0.75 0.06
## POSSubSocial 7 53 3.78 0.53 3.80 3.80 0.53 2.60 4.70 2.10 -0.12 -0.66 0.07
## POSSubIndFree 8 53 3.47 0.56 3.50 3.47 0.59 2.30 4.50 2.20 -0.05 -0.95 0.08
## ---------------------------------------------------------------------------
## group: Puerto Rican
## vars n mean sd median trimmed mad min max range skew kurtosis se
## Number 1 62 257.73 161.53 255.50 257.18 197.19 7.00 526.00 519.00 -0.08 -1.31 20.51
## YrsExpGrpd 2 62 2.90 1.18 3.00 2.90 1.48 1.00 5.00 4.00 0.01 -1.05 0.15
## YrsExp 3 62 22.61 11.09 21.50 22.42 14.08 5.00 45.00 40.00 0.08 -1.12 1.41
## POSMean 4 60 4.06 0.34 4.09 4.07 0.44 3.35 4.75 1.40 -0.12 -0.81 0.04
## POSSubResp 5 60 4.33 0.47 4.40 4.37 0.44 2.70 5.00 2.30 -0.92 1.01 0.06
## POSSubSelfDet 6 60 4.44 0.39 4.40 4.45 0.59 3.50 5.00 1.50 -0.22 -1.09 0.05
## POSSubSocial 7 60 3.89 0.47 3.80 3.88 0.52 3.10 4.90 1.80 0.31 -0.89 0.06
## POSSubIndFree 8 60 3.60 0.51 3.60 3.61 0.30 2.10 4.78 2.68 -0.29 0.48 0.07
## ---------------------------------------------------------------------------
## group: Hispanic Other
## vars n mean sd median trimmed mad min max range skew kurtosis se
## Number 1 15 300.07 153.64 320.00 304.23 145.29 29.00 517.00 488.00 -0.46 -1.03 39.67
## YrsExpGrpd 2 15 2.33 1.05 2.00 2.31 1.48 1.00 4.00 3.00 0.41 -1.16 0.27
## YrsExp 3 15 18.20 9.52 15.00 17.77 10.38 7.00 35.00 28.00 0.42 -1.48 2.46
## POSMean 4 15 3.79 0.26 3.82 3.79 0.14 3.25 4.33 1.08 -0.25 -0.08 0.07
## POSSubResp 5 15 4.27 0.40 4.22 4.28 0.26 3.40 5.00 1.60 -0.09 -0.30 0.10
## POSSubSelfDet 6 15 4.17 0.34 4.20 4.18 0.44 3.60 4.70 1.10 -0.06 -1.24 0.09
## POSSubSocial 7 15 3.48 0.32 3.60 3.48 0.30 3.00 3.90 0.90 -0.37 -1.52 0.08
## POSSubIndFree 8 15 3.25 0.53 3.20 3.28 0.44 2.10 4.00 1.90 -0.48 -0.64 0.14
## ---------------------------------------------------------------------------
## group: Asian/Pacific Islander
## vars n mean sd median trimmed mad min max range skew kurtosis se
## Number 1 60 262.20 150.49 274.00 260.02 189.77 5.00 527.00 522.0 0.06 -1.17 19.43
## YrsExpGrpd 2 58 2.86 1.21 3.00 2.85 1.48 1.00 6.00 5.0 0.20 -0.83 0.16
## YrsExp 3 58 22.35 12.00 25.00 22.46 14.83 1.00 50.00 49.0 -0.05 -1.10 1.58
## POSMean 4 58 3.87 0.35 3.84 3.85 0.43 3.33 4.72 1.4 0.36 -0.75 0.05
## POSSubResp 5 58 4.19 0.48 4.20 4.21 0.59 3.10 5.00 1.9 -0.17 -0.78 0.06
## POSSubSelfDet 6 58 4.32 0.40 4.40 4.33 0.52 3.30 5.00 1.7 -0.26 -1.02 0.05
## POSSubSocial 7 58 3.69 0.58 3.75 3.70 0.59 2.40 5.00 2.6 -0.06 -0.57 0.08
## POSSubIndFree 8 58 3.26 0.57 3.25 3.27 0.67 2.00 4.40 2.4 -0.06 -0.64 0.07
## ---------------------------------------------------------------------------
## group: American Indian/Alaskan Native
## vars n mean sd median trimmed mad min max range skew kurtosis se
## Number 1 48 291.31 157.44 312.00 298.68 200.15 3.00 506.00 503.00 -0.39 -1.35 22.72
## YrsExpGrpd 2 48 2.42 1.01 2.00 2.38 1.48 1.00 5.00 4.00 0.22 -0.60 0.15
## YrsExp 3 48 18.83 9.62 19.00 18.48 8.90 1.00 48.00 47.00 0.41 0.21 1.39
## POSMean 4 47 3.87 0.43 3.92 3.88 0.41 2.92 4.65 1.73 -0.26 -0.62 0.06
## POSSubResp 5 47 4.42 0.41 4.50 4.45 0.44 3.40 5.00 1.60 -0.69 -0.51 0.06
## POSSubSelfDet 6 47 4.25 0.50 4.30 4.28 0.44 3.20 5.00 1.80 -0.57 -0.64 0.07
## POSSubSocial 7 47 3.48 0.66 3.50 3.49 0.59 2.20 4.60 2.40 -0.19 -0.71 0.10
## POSSubIndFree 8 47 3.34 0.64 3.50 3.38 0.59 1.40 4.60 3.20 -0.80 0.84 0.09
## ---------------------------------------------------------------------------
## group: "other"
## NULL
## ---------------------------------------------------------------------------
## group: Mixed
## vars n mean sd median trimmed mad min max range skew kurtosis se
## Number 1 41 244.24 146.46 198.00 237.58 133.43 17.00 524.00 507.00 0.41 -1.11 22.87
## YrsExpGrpd 2 41 2.54 1.05 2.00 2.52 1.48 1.00 5.00 4.00 0.22 -0.81 0.16
## YrsExp 3 41 18.68 10.34 19.00 18.27 13.34 2.00 42.00 40.00 0.34 -0.75 1.61
## POSMean 4 41 3.94 0.41 3.92 3.93 0.48 3.33 4.69 1.37 0.10 -1.11 0.06
## POSSubResp 5 41 4.28 0.47 4.20 4.29 0.74 3.60 5.00 1.40 0.04 -1.49 0.07
## POSSubSelfDet 6 41 4.34 0.47 4.40 4.37 0.44 3.30 5.00 1.70 -0.39 -0.81 0.07
## POSSubSocial 7 41 3.78 0.56 3.70 3.80 0.59 2.30 4.60 2.30 -0.34 -0.54 0.09
## POSSubIndFree 8 41 3.37 0.62 3.40 3.38 0.74 2.20 4.44 2.24 -0.01 -1.09 0.10
pos.df$YrsExpC <- cut(pos.df$YrsExp, c(seq(0, 40, by=10), 100) - 1, labels=c(paste(seq(0, 30, by=10), seq(9, 39, by=10), sep="-"), "40+"))
with(pos.df, table(YrsExp, YrsExpC, exclude=FALSE))
## YrsExpC
## YrsExp 0-9 10-19 20-29 30-39 40+
## 1 3 0 0 0 0
## 1.5 1 0 0 0 0
## 2 6 0 0 0 0
## 3 4 0 0 0 0
## 4 7 0 0 0 0
## 5 17 0 0 0 0
## 6 8 0 0 0 0
## 7 11 0 0 0 0
## 8 11 0 0 0 0
## 9 9 0 0 0 0
## 10 0 30 0 0 0
## 11 0 16 0 0 0
## 12 0 11 0 0 0
## 13 0 9 0 0 0
## 14 0 11 0 0 0
## 15 0 21 0 0 0
## 16 0 5 0 0 0
## 17 0 15 0 0 0
## 18 0 14 0 0 0
## 19 0 12 0 0 0
## 20 0 0 33 0 0
## 21 0 0 6 0 0
## 22 0 0 9 0 0
## 23 0 0 7 0 0
## 24 0 0 6 0 0
## 25 0 0 25 0 0
## 26 0 0 11 0 0
## 27 0 0 8 0 0
## 28 0 0 13 0 0
## 29 0 0 12 0 0
## 30 0 0 0 39 0
## 31 0 0 0 12 0
## 32 0 0 0 7 0
## 33 0 0 0 9 0
## 34 0 0 0 7 0
## 35 0 0 0 23 0
## 36 0 0 0 11 0
## 37 0 0 0 8 0
## 38 0 0 0 6 0
## 39 0 0 0 4 0
## 40 0 0 0 0 12
## 41 0 0 0 0 5
## 42 0 0 0 0 3
## 43 0 0 0 0 3
## 45 0 0 0 0 2
## 46 0 0 0 0 3
## 47 0 0 0 0 1
## 48 0 0 0 0 1
## 50 0 0 0 0 1
## 57 0 0 0 0 1
## 60 0 0 0 0 2
## 67 0 0 0 0 1
## <NA> 0 0 0 0 0
with(pos.df, table(YrsExpC, YrsExpGrpd, exclude=FALSE))
## YrsExpGrpd
## YrsExpC 1 2 3 4 5 6 7 <NA>
## 0-9 77 0 0 0 0 0 0 1
## 10-19 0 144 0 0 0 0 0 0
## 20-29 0 0 130 0 0 0 0 0
## 30-39 0 0 0 126 0 0 0 0
## 40+ 0 0 0 0 30 2 3 0
We need to deal with unequal \(n\). It looks like Type~II ANOVA makes the most sense. I just need to be clear with the sums of squares are testing. It is well described by Fox and Weiseberg (2011, pp. 192–197).
pos.lm <- lm(as.matrix(pos.df[,6:9]) ~ YrsExp*Race, data=pos.df)
idata <- data.frame(subscale=names(pos.df[6:9]))
pos.Anova.ii <- Anova(pos.lm, idata=idata, idesign=~subscale, type="II")
summary(pos.Anova.ii, multivariate=FALSE)
##
## Univariate Type II Repeated-Measures ANOVA Assuming Sphericity
##
## SS num Df Error SS den Df F Pr(>F)
## (Intercept) 31404.8 1 257.58 482 58766.0825 < 2.2e-16 ***
## YrsExp 6.2 1 257.58 482 11.5537 0.0007322 ***
## Race 10.8 7 257.58 482 2.8845 0.0058302 **
## YrsExp:Race 5.2 7 257.58 482 1.3967 0.2044612
## subscale 286.5 3 230.54 1446 599.0335 < 2.2e-16 ***
## YrsExp:subscale 2.8 3 230.54 1446 5.8771 0.0005496 ***
## Race:subscale 9.0 21 230.54 1446 2.6737 6.088e-05 ***
## YrsExp:Race:subscale 2.6 21 230.54 1446 0.7737 0.7547266
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
##
## Mauchly Tests for Sphericity
##
## Test statistic p-value
## subscale 0.79798 8.5725e-22
## YrsExp:subscale 0.79798 8.5725e-22
## Race:subscale 0.79798 8.5725e-22
## YrsExp:Race:subscale 0.79798 8.5725e-22
##
##
## Greenhouse-Geisser and Huynh-Feldt Corrections
## for Departure from Sphericity
##
## GG eps Pr(>F[GG])
## subscale 0.89034 < 2.2e-16 ***
## YrsExp:subscale 0.89034 0.0009477 ***
## Race:subscale 0.89034 0.0001383 ***
## YrsExp:Race:subscale 0.89034 0.7384358
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## HF eps Pr(>F[HF])
## subscale 0.8957643 5.519641e-227
## YrsExp:subscale 0.8957643 9.223794e-04
## Race:subscale 0.8957643 1.327887e-04
## YrsExp:Race:subscale 0.8957643 7.392840e-01
Analytically, it is nice that there is not any YrsExp x Race or YrsExp x Race x subscale interaction.
YrsExp x subscale InteractionThe nature of the interaction is pretty clear in the following plot.
(ss.exp <- summary(as.matrix(pos.df[,5:9]) ~ YrsExpC, data=pos.df))
## as.matrix(pos.df[, 5:9]) N=517, 10 Missing
##
## +-------+-------+---+--------+----------+-------------+------------+-------------+
## | | |N |POSMean |POSSubResp|POSSubSelfDet|POSSubSocial|POSSubIndFree|
## +-------+-------+---+--------+----------+-------------+------------+-------------+
## |YrsExpC|0-9 | 76|3.902857|4.348428 |4.310526 |3.638012 |3.313121 |
## | |10-19 |142|3.913709|4.298298 |4.308115 |3.662561 |3.380438 |
## | |20-29 |127|3.981986|4.406649 |4.283371 |3.727997 |3.504812 |
## | |30-39 |124|4.063031|4.403239 |4.350000 |3.889068 |3.607773 |
## | |40+ | 34|4.057919|4.373529 |4.349673 |3.907190 |3.601307 |
## | |Missing| 14|3.949396|4.269841 |4.343651 |3.791468 |3.395238 |
## +-------+-------+---+--------+----------+-------------+------------+-------------+
## |Overall| |517|3.975151|4.361630 |4.316132 |3.748932 |3.470546 |
## +-------+-------+---+--------+----------+-------------+------------+-------------+
(ss.exp.mat <- t(matrix(unlist(as.list(ss.exp)), nrow=7)[1:5,-c(1,2)]))
## [,1] [,2] [,3] [,4] [,5]
## [1,] 4.348428 4.298298 4.406649 4.403239 4.373529
## [2,] 4.310526 4.308115 4.283371 4.350000 4.349673
## [3,] 3.638012 3.662561 3.727997 3.889068 3.907190
## [4,] 3.313121 3.380438 3.504812 3.607773 3.601307
## matplot(ss.exp.mat, type="b")
matplot(t(ss.exp.mat), type="b")
Each of the four subscales can be tested to see whether the increase per year of service is significant. Note that although the figure above is generated by decade, the analysis is regresion by year. It may be best to make the figure linear regression for each of the four subscales.
resp.lm <- lm(POSSubResp ~ YrsExp, data=pos.df)
Anova(resp.lm, type="II")
## Anova Table (Type II tests)
##
## Response: POSSubResp
## Sum Sq Df F value Pr(>F)
## YrsExp 0.554 1 2.8268 0.09333 .
## Residuals 98.221 501
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(resp.lm) # which is better??
##
## Call:
## lm(formula = POSSubResp ~ YrsExp, data = pos.df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.63849 -0.31405 0.07004 0.34627 0.68708
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.301556 0.042158 102.033 <2e-16 ***
## YrsExp 0.002841 0.001690 1.681 0.0933 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.4428 on 501 degrees of freedom
## (24 observations deleted due to missingness)
## Multiple R-squared: 0.005611, Adjusted R-squared: 0.003626
## F-statistic: 2.827 on 1 and 501 DF, p-value: 0.09333
selfdet.lm <- lm(POSSubSelfDet ~ YrsExp, data=pos.df)
Anova(selfdet.lm, type="II")
## Anova Table (Type II tests)
##
## Response: POSSubSelfDet
## Sum Sq Df F value Pr(>F)
## YrsExp 0.152 1 0.7863 0.3756
## Residuals 96.849 501
social.lm <- lm(POSSubSocial ~ YrsExp, data=pos.df)
Anova(social.lm, type="II")
## Anova Table (Type II tests)
##
## Response: POSSubSocial
## Sum Sq Df F value Pr(>F)
## YrsExp 6.102 1 18.571 1.971e-05 ***
## Residuals 164.629 501
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
indfree.lm <- lm(POSSubIndFree ~ YrsExp, data=pos.df)
Anova(indfree.lm, type="II")
## Anova Table (Type II tests)
##
## Response: POSSubIndFree
## Sum Sq Df F value Pr(>F)
## YrsExp 5.738 1 17.643 3.155e-05 ***
## Residuals 162.939 501
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
The results make sense visually. The only possible modification that jumps out is to pool the residual (error) variance if it makes sense.
I need to also check to make sure that there is no problem with the ever present unequal _n_s.
Race x subscale Interaction(ss.race <- summary(as.matrix(pos.df[,5:9]) ~ Race, data=pos.df))
## as.matrix(pos.df[, 5:9]) N=517, 10 Missing
##
## +-------+------------------------------+---+--------+----------+-------------+------------+-------------+
## | | |N |POSMean |POSSubResp|POSSubSelfDet|POSSubSocial|POSSubIndFree|
## +-------+------------------------------+---+--------+----------+-------------+------------+-------------+
## |Race |Caucasian |172|4.041475|4.447571 |4.365079 |3.743494 |3.604167 |
## | |AA | 64|3.939425|4.355339 |4.168056 |3.841493 |3.392057 |
## | |Chicano/Mexican | 53|3.958092|4.334591 |4.237736 |3.782809 |3.469969 |
## | |Puerto Rican | 60|4.064235|4.332037 |4.436058 |3.892917 |3.595000 |
## | |Hispanic Other | 15|3.790897|4.268148 |4.173333 |3.480000 |3.246667 |
## | |Asian/Pacific Islander | 58|3.867166|4.194061 |4.317625 |3.691379 |3.262452 |
## | |American Indian/Alaskan Native| 47|3.873103|4.418913 |4.252128 |3.476359 |3.339007 |
## | |Mixed | 41|3.943477|4.283333 |4.344444 |3.777642 |3.372358 |
## | |Missing | 7|4.197924|4.428571 |4.590476 |4.260714 |3.504762 |
## +-------+------------------------------+---+--------+----------+-------------+------------+-------------+
## |Overall| |517|3.975151|4.361630 |4.316132 |3.748932 |3.470546 |
## +-------+------------------------------+---+--------+----------+-------------+------------+-------------+
(ss.race.mat <- t(matrix(unlist(as.list(ss.race)), nrow=10)[1:8,-c(1,2)]))
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
## [1,] 4.447571 4.355339 4.334591 4.332037 4.268148 4.194061 4.418913 4.283333
## [2,] 4.365079 4.168056 4.237736 4.436058 4.173333 4.317625 4.252128 4.344444
## [3,] 3.743494 3.841493 3.782809 3.892917 3.480000 3.691379 3.476359 3.777642
## [4,] 3.604167 3.392057 3.469969 3.595000 3.246667 3.262452 3.339007 3.372358
matplot(ss.race.mat, type="b")
matplot(t(ss.race.mat), type="b")
Each of the four subscales can be tested to see whether the overall effect of race is significant.
summary(resp.aov <- aov(POSSubResp ~ Race, data=pos.df))
## Df Sum Sq Mean Sq F value Pr(>F)
## Race 7 3.53 0.5041 2.568 0.0132 *
## Residuals 502 98.55 0.1963
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 17 observations deleted due to missingness
print((resp.thsd <- TukeyHSD(resp.aov)), digits=4)
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = POSSubResp ~ Race, data = pos.df)
##
## $Race
## diff lwr upr p adj
## AA-Caucasian -0.092232 -0.28969 0.10523 0.8470
## Chicano/Mexican-Caucasian -0.112979 -0.32485 0.09889 0.7362
## Puerto Rican-Caucasian -0.115534 -0.31773 0.08667 0.6615
## Hispanic Other-Caucasian -0.179422 -0.54249 0.18365 0.8051
## Asian/Pacific Islander-Caucasian -0.253509 -0.45828 -0.04874 0.0045
## American Indian/Alaskan Native-Caucasian -0.028658 -0.25062 0.19331 0.9999
## Mixed-Caucasian -0.164237 -0.39861 0.07014 0.3951
## Chicano/Mexican-AA -0.020747 -0.27121 0.22972 1.0000
## Puerto Rican-AA -0.023302 -0.26564 0.21904 1.0000
## Hispanic Other-AA -0.087190 -0.47405 0.29967 0.9973
## Asian/Pacific Islander-AA -0.161277 -0.40576 0.08321 0.4775
## American Indian/Alaskan Native-AA 0.063574 -0.19549 0.32263 0.9955
## Mixed-AA -0.072005 -0.34177 0.19776 0.9924
## Puerto Rican-Chicano/Mexican -0.002554 -0.25677 0.25166 1.0000
## Hispanic Other-Chicano/Mexican -0.066443 -0.46085 0.32797 0.9996
## Asian/Pacific Islander-Chicano/Mexican -0.140530 -0.39679 0.11573 0.7073
## American Indian/Alaskan Native-Chicano/Mexican 0.084321 -0.18588 0.35453 0.9809
## Mixed-Chicano/Mexican -0.051258 -0.33174 0.22923 0.9993
## Hispanic Other-Puerto Rican -0.063889 -0.45319 0.32541 0.9997
## Asian/Pacific Islander-Puerto Rican -0.137976 -0.38631 0.11035 0.6931
## American Indian/Alaskan Native-Puerto Rican 0.086875 -0.17582 0.34957 0.9734
## Mixed-Puerto Rican -0.048704 -0.32196 0.22455 0.9994
## Asian/Pacific Islander-Hispanic Other -0.074087 -0.46473 0.31656 0.9991
## American Indian/Alaskan Native-Hispanic Other 0.150764 -0.24916 0.55069 0.9458
## Mixed-Hispanic Other 0.015185 -0.39176 0.42213 1.0000
## American Indian/Alaskan Native-Asian/Pacific Islander 0.224851 -0.03982 0.48952 0.1635
## Mixed-Asian/Pacific Islander 0.089272 -0.18589 0.36444 0.9761
## Mixed-American Indian/Alaskan Native -0.135579 -0.42377 0.15261 0.8421
plot(resp.thsd)
summary(selfdet.aov <- aov(POSSubSelfDet ~ Race, data=pos.df))
## Df Sum Sq Mean Sq F value Pr(>F)
## Race 7 3.53 0.5040 2.661 0.0104 *
## Residuals 502 95.10 0.1894
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 17 observations deleted due to missingness
print((selfdet.thsd <- TukeyHSD(selfdet.aov)), digits=4)
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = POSSubSelfDet ~ Race, data = pos.df)
##
## $Race
## diff lwr upr p adj
## AA-Caucasian -0.197024 -0.39100 -0.003046 0.0435
## Chicano/Mexican-Caucasian -0.127344 -0.33548 0.080789 0.5776
## Puerto Rican-Caucasian 0.070979 -0.12766 0.269613 0.9592
## Hispanic Other-Caucasian -0.191746 -0.54841 0.164919 0.7280
## Asian/Pacific Islander-Caucasian -0.047455 -0.24861 0.153702 0.9965
## American Indian/Alaskan Native-Caucasian -0.112952 -0.33100 0.105100 0.7642
## Mixed-Caucasian -0.020635 -0.25088 0.209607 1.0000
## Chicano/Mexican-AA 0.069680 -0.17637 0.315726 0.9892
## Puerto Rican-AA 0.268003 0.02994 0.506068 0.0152
## Hispanic Other-AA 0.005278 -0.37476 0.385317 1.0000
## Asian/Pacific Islander-AA 0.149569 -0.09061 0.389743 0.5546
## American Indian/Alaskan Native-AA 0.084072 -0.17042 0.338563 0.9735
## Mixed-AA 0.176389 -0.08862 0.441399 0.4653
## Puerto Rican-Chicano/Mexican 0.198322 -0.05141 0.448055 0.2352
## Hispanic Other-Chicano/Mexican -0.064403 -0.45186 0.323052 0.9996
## Asian/Pacific Islander-Chicano/Mexican 0.079889 -0.17186 0.331633 0.9789
## American Indian/Alaskan Native-Chicano/Mexican 0.014392 -0.25105 0.279830 1.0000
## Mixed-Chicano/Mexican 0.106709 -0.16883 0.382248 0.9377
## Hispanic Other-Puerto Rican -0.262725 -0.64516 0.119712 0.4222
## Asian/Pacific Islander-Puerto Rican -0.118434 -0.36238 0.125517 0.8192
## American Indian/Alaskan Native-Puerto Rican -0.183931 -0.44199 0.074128 0.3722
## Mixed-Puerto Rican -0.091614 -0.36005 0.176824 0.9683
## Asian/Pacific Islander-Hispanic Other 0.144291 -0.23946 0.528044 0.9466
## American Indian/Alaskan Native-Hispanic Other 0.078794 -0.31408 0.471667 0.9987
## Mixed-Hispanic Other 0.171111 -0.22866 0.570878 0.8977
## American Indian/Alaskan Native-Asian/Pacific Islander -0.065497 -0.32550 0.194508 0.9947
## Mixed-Asian/Pacific Islander 0.026820 -0.24349 0.297130 1.0000
## Mixed-American Indian/Alaskan Native 0.092317 -0.19079 0.375424 0.9754
plot(selfdet.thsd)
summary(social.aov <- aov(POSSubSocial ~ Race, data=pos.df))
## Df Sum Sq Mean Sq F value Pr(>F)
## Race 7 6.64 0.9479 2.874 0.00597 **
## Residuals 502 165.59 0.3299
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 17 observations deleted due to missingness
print((social.thsd <- TukeyHSD(social.aov)), digits=4)
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = POSSubSocial ~ Race, data = pos.df)
##
## $Race
## diff lwr upr p adj
## AA-Caucasian 0.097999 -0.1580 0.35397 0.9413
## Chicano/Mexican-Caucasian 0.039315 -0.2353 0.31396 0.9999
## Puerto Rican-Caucasian 0.149423 -0.1127 0.41153 0.6641
## Hispanic Other-Caucasian -0.263494 -0.7341 0.20715 0.6847
## Asian/Pacific Islander-Caucasian -0.052115 -0.3176 0.21333 0.9989
## American Indian/Alaskan Native-Caucasian -0.267135 -0.5549 0.02060 0.0910
## Mixed-Caucasian 0.034148 -0.2697 0.33797 1.0000
## Chicano/Mexican-AA -0.058684 -0.3834 0.26599 0.9994
## Puerto Rican-AA 0.051424 -0.2627 0.36557 0.9997
## Hispanic Other-AA -0.361493 -0.8630 0.13999 0.3570
## Asian/Pacific Islander-AA -0.150114 -0.4670 0.16681 0.8374
## American Indian/Alaskan Native-AA -0.365134 -0.7010 -0.02932 0.0222
## Mixed-AA -0.063851 -0.4135 0.28585 0.9993
## Puerto Rican-Chicano/Mexican 0.110107 -0.2194 0.43965 0.9718
## Hispanic Other-Chicano/Mexican -0.302809 -0.8141 0.20846 0.6185
## Asian/Pacific Islander-Chicano/Mexican -0.091430 -0.4236 0.24076 0.9909
## American Indian/Alaskan Native-Chicano/Mexican -0.306450 -0.6567 0.04381 0.1366
## Mixed-Chicano/Mexican -0.005167 -0.3688 0.35843 1.0000
## Hispanic Other-Puerto Rican -0.412917 -0.9176 0.09173 0.2018
## Asian/Pacific Islander-Puerto Rican -0.201537 -0.5234 0.12037 0.5477
## American Indian/Alaskan Native-Puerto Rican -0.416557 -0.7571 -0.07603 0.0053
## Mixed-Puerto Rican -0.115274 -0.4695 0.23895 0.9757
## Asian/Pacific Islander-Hispanic Other 0.211379 -0.2950 0.71777 0.9093
## American Indian/Alaskan Native-Hispanic Other -0.003641 -0.5221 0.51478 1.0000
## Mixed-Hispanic Other 0.297642 -0.2299 0.82516 0.6759
## American Indian/Alaskan Native-Asian/Pacific Islander -0.215020 -0.5581 0.12807 0.5463
## Mixed-Asian/Pacific Islander 0.086263 -0.2704 0.44296 0.9959
## Mixed-American Indian/Alaskan Native 0.301283 -0.0723 0.67486 0.2177
plot(social.thsd)
summary(indfree.aov <- aov(POSSubIndFree ~ Race, data=pos.df))
## Df Sum Sq Mean Sq F value Pr(>F)
## Race 7 8.87 1.2666 3.961 0.000317 ***
## Residuals 502 160.55 0.3198
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 17 observations deleted due to missingness
print((indfree.thsd <- TukeyHSD(indfree.aov)), digits=4)
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = POSSubIndFree ~ Race, data = pos.df)
##
## $Race
## diff lwr upr p adj
## AA-Caucasian -0.212109 -0.4641 0.03993 0.1727
## Chicano/Mexican-Caucasian -0.134198 -0.4046 0.13623 0.8017
## Puerto Rican-Caucasian -0.009167 -0.2673 0.24892 1.0000
## Hispanic Other-Caucasian -0.357500 -0.8209 0.10591 0.2698
## Asian/Pacific Islander-Caucasian -0.341715 -0.6031 -0.08035 0.0020
## American Indian/Alaskan Native-Caucasian -0.265160 -0.5485 0.01815 0.0857
## Mixed-Caucasian -0.231809 -0.5310 0.06734 0.2644
## Chicano/Mexican-AA 0.077911 -0.2418 0.39760 0.9957
## Puerto Rican-AA 0.202943 -0.1064 0.51226 0.4849
## Hispanic Other-AA -0.145391 -0.6392 0.34839 0.9863
## Asian/Pacific Islander-AA -0.129605 -0.4417 0.18245 0.9115
## American Indian/Alaskan Native-AA -0.053050 -0.3837 0.27761 0.9997
## Mixed-AA -0.019700 -0.3640 0.32463 1.0000
## Puerto Rican-Chicano/Mexican 0.125031 -0.1994 0.44951 0.9393
## Hispanic Other-Chicano/Mexican -0.223302 -0.7267 0.28012 0.8790
## Asian/Pacific Islander-Chicano/Mexican -0.207516 -0.5346 0.11957 0.5301
## American Indian/Alaskan Native-Chicano/Mexican -0.130961 -0.4758 0.21392 0.9438
## Mixed-Chicano/Mexican -0.097611 -0.4556 0.26040 0.9914
## Hispanic Other-Puerto Rican -0.348333 -0.8452 0.14856 0.3946
## Asian/Pacific Islander-Puerto Rican -0.332548 -0.6495 -0.01558 0.0320
## American Indian/Alaskan Native-Puerto Rican -0.255993 -0.5913 0.07930 0.2826
## Mixed-Puerto Rican -0.222642 -0.5714 0.12614 0.5219
## Asian/Pacific Islander-Hispanic Other 0.015785 -0.4828 0.51439 1.0000
## American Indian/Alaskan Native-Hispanic Other 0.092340 -0.4181 0.60280 0.9994
## Mixed-Hispanic Other 0.125691 -0.3937 0.64511 0.9958
## American Indian/Alaskan Native-Asian/Pacific Islander 0.076555 -0.2613 0.41438 0.9972
## Mixed-Asian/Pacific Islander 0.109906 -0.2413 0.46112 0.9805
## Mixed-American Indian/Alaskan Native 0.033351 -0.3345 0.40119 1.0000
plot(indfree.thsd)
Cohen, J., Cohen, P., West, S. G., & Aiken, L. S. (2003). Applied multiple regression/correlation analysis for the behavioral sciences (3rd ed.). Mahwah, NJ, Lawrence Erlbaum Associates.
Fox, J., & Weisberg, S. (2011). An R Companion to Applied Regression (2nd ed.). Thousand Oaks, CA: Sage.
Maxwell, S. E., & Delaney, H. D. (2004). Designing experiments and analyzing data: A model comparison perspective (2nd ed.). Mahwah, NJ, Lawrence Erlbaum Associates.