POS by Race

author: Michael A. Erickson date: 27 September 2014

Introduction

13 March 2015

(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.

  • There is a interaction between years of experience and subscale. Whereas the Resp and SeltDet subscales do not appear to change linearly as a function of years of experience, Social and IndFree do.
  • There is an interaction that I am trying to figure out between race and subscale. This is what I did not make progress on this week. I took the easy way out and just did pairwise comparisons of means among the different races for each subscale. That was not very instructive. I wanted to look at different orderings to see if anything pops out.

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.

Read in the Data

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

Anova

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 Interaction

The 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)

References

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.