5
$\begingroup$

I have a set of z-scores corresponding to different tests taken by the same subjects. Can i take the average of the z-scores for each subject and compare the average z-scores as it was actual z-scores? (i.e. can I calculate a percentile for each subject based on the average of the set of z-scores?)

EDIT:

My goal is to calculate percentiles for a subject based on a set of z-scores for that subject. So far my approach has been to take the average of the z-scores of a subject, and then treat that average as a z-score and calculate the percentile based on that. I wonder if there is any problem with that approach?

$\endgroup$
  • $\begingroup$ Could you tell us more on your actual problem (what is your data, what are you trying to achieve)? In general, after converting to z-scores your samples have the same mean (=0) and standartd deviation (=1), so they are on the same scale, but it is hard to comment since your question is very vague. $\endgroup$ – Tim Nov 8 '17 at 10:18
  • $\begingroup$ Thanks! I tried to be as concise as possible, but maybe that made it vague. I edited the question now. Is it clearer? $\endgroup$ – Frank5000 Nov 8 '17 at 15:21
  • $\begingroup$ What is your data? Why do you want to use z-scores at all? $\endgroup$ – Tim Nov 8 '17 at 15:24
  • $\begingroup$ My input data consists of z-scores from different tests testing the same latent variable. I have no further control over the data at this point. I want to divide the subjects in groups based on a normal distribution of the population, where the group is determined by different percentile levels. The groups will make more sense to practitioners looking at the data. So I want to present a group for each subject based on their aggregated z-scores. And the group is based on percentile-levels. $\endgroup$ – Frank5000 Nov 8 '17 at 15:31
  • $\begingroup$ I would NOT make any statistical inferences based off of doing this, but for rhetorical value, you could do a median split and show mean levels for “low” and “high”? $\endgroup$ – Mark White Nov 9 '17 at 14:25
5
$\begingroup$

Maybe someone else can explain the math behind it, but consider this quick demonstration: I generate five vectors, each 100 numbers long. Each of these vectors is on a different scale, so I standardize them (i.e., create z-scored variables). That is, the mean is zero and the standard deviation is 1 for each of these five latent construct variables:

set.seed(1839)

## create five different z-score variables that represent latent constructs
data <- data.frame(
  latent_construct_1 = scale(rnorm(100, 10, 4)),
  latent_construct_2 = scale(rnorm(100, 3, 18)),
  latent_construct_3 = scale(rnorm(100, -5, 7)),
  latent_construct_4 = scale(rnorm(100, 0, 8)),
  latent_construct_5 = scale(rnorm(100, 20, 20))
)

Let's check to make sure they are actually z-scores:

> sapply(data, mean)
latent_construct_1 latent_construct_2 latent_construct_3 latent_construct_4 latent_construct_5 
     -2.203951e-16       1.634435e-17       1.400464e-17      -1.449145e-17       7.852226e-17 
> 
> sapply(data, sd)
latent_construct_1 latent_construct_2 latent_construct_3 latent_construct_4 latent_construct_5 
                 1                  1                  1                  1                  1 

So, now let's say we average all five of these together:

## make a mean of all of these latent constructs
data$mean_latent_construct <- rowMeans(data)

Is this new variable a z-score? We can check to see if the mean is zero and standard deviation is one:

> ## is the mean zero?
> mean(data$mean_latent_construct)
[1] -2.436148e-17
> 
> ## is the standard deviation one?
> sd(data$mean_latent_construct)
[1] 0.4599126

The variable is not a z-score, because the standard deviation is not one. However, we could now z-score this mean variable. Let's do that and compare the distributions:

## z-score the mean latent construct
data$mean_latent_construct_z <- scale(data$mean_latent_construct)

## compare distributions
library(tidyverse)
data <- data %>% 
  select(mean_latent_construct, mean_latent_construct_z) %>% 
  gather(variable, value)

ggplot(data, aes(x = value, fill = variable)) +
  geom_density(alpha = .7) +
  theme_light()

enter image description here

The z-scored aggregate variable of z-scores looks a lot different from the aggregate variable of z-scores.

In short: No, a mean of z-scored variables is not a z-score itself.

$\endgroup$
  • $\begingroup$ Thank you! I will ask you the same question as I asked AdamO below. Looking at those two distributions in your plot, calculating a percentile for each subject in both of those should yield the exact same result right? So even if it is not formally a z-score, the percentile value might be the same? $\endgroup$ – Frank5000 Nov 9 '17 at 12:24
  • $\begingroup$ If you really want a percentile, you could just rank people from low to high, and then take someone’s rank and divide it by the number of people you have? Or you could just z-score what you have and get percentiles from z-scores. $\endgroup$ – Mark White Nov 9 '17 at 14:23
  • $\begingroup$ Perfect! My customers will understand percentiles, that's why I want to present the results in percentiles. $\endgroup$ – Frank5000 Nov 10 '17 at 9:13
1
$\begingroup$

Nope. The central limit theorem should provide some insight. Or you can appeal to the variance of a sum. If $X_1, X_2, \ldots, X_p$ comprise your $p$ independent z-scores to average together, (mean 0, variance 1), then the mean has variance:

$$\mbox{var} (\bar{X}) = \frac{1}{p^2} \sum_{i=1}^p \mbox{var}(X_i) = 1/p$$

This quantity could be scaled, however, since the sum of normals is normal, and this would meet the criteria of a Z-score.

$\endgroup$
  • 1
    $\begingroup$ Thanks! So the distribution of the mean would be similar to z-scores in all regards except the scale? In that case, as it is still normal and the scale shouldn't affect the percentiles, it should be possible to calculate a percentile for each subject anyway? $\endgroup$ – Frank5000 Nov 9 '17 at 12:22
  • $\begingroup$ @Frank5000 Yes, if you center/scale the grand mean, you can apply percentiles or rank based comparisons. Inspect a QQ-plot, however, to verify the normality, however. Measurement invariance is a big deal. $\endgroup$ – AdamO Nov 9 '17 at 16:40
  • $\begingroup$ Alright! When you say measurement invariance is a big deal, what do you mean in this context? $\endgroup$ – Frank5000 Nov 10 '17 at 9:11
  • $\begingroup$ @Frank5000 I'll leave it to you to do more thorough investigation. Measurement invariance is a whole field of methods. When you create a new scale, the properties of that scale should be investigated for measurement invariance. $\endgroup$ – AdamO Nov 10 '17 at 18:09
  • $\begingroup$ @Frank5000 have a look here: stats.stackexchange.com/questions/348192/… $\endgroup$ – Marouen Apr 24 '19 at 22:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.