Norms and Standardized Scores

The following inputs raw scores from Table 2.1 of the text.

# dput({set.seed(1421); sample(rep(25:36, c(3, 8, 7, 5, 5, 7, 3, 2, 2, 6, 2, 2)))})
raw_score <- c(26, 25, 33, 31, 26, 34, 29, 36, 25, 29, 28, 32, 25,
               30, 27, 31, 30, 30, 35, 30, 27, 26, 34, 32, 26, 34,
               30, 28, 28, 31, 30, 27, 26, 29, 29, 33, 27, 35, 26,
               27, 28, 29, 28, 27, 34, 36, 26, 26, 34, 30, 34, 27)

Frequency Distribution

The following recreates Table 2.1 using R.

freq <- table(raw_score)  # frequency
cumfreq <- cumsum(freq)  # cumulative frequency
perc <- prop.table(freq) * 100  # percentage  
cumperc <- cumsum(perc)  # cumulative percentage
pr <- (cumperc - 0.5 * perc)  # percentile rank
cbind(freq, cumfreq, perc, cumperc, pr)
   freq cumfreq      perc    cumperc        pr
25    3       3  5.769231   5.769231  2.884615
26    8      11 15.384615  21.153846 13.461538
27    7      18 13.461538  34.615385 27.884615
28    5      23  9.615385  44.230769 39.423077
29    5      28  9.615385  53.846154 49.038462
30    7      35 13.461538  67.307692 60.576923
31    3      38  5.769231  73.076923 70.192308
32    2      40  3.846154  76.923077 75.000000
33    2      42  3.846154  80.769231 78.846154
34    6      48 11.538462  92.307692 86.538462
35    2      50  3.846154  96.153846 94.230769
36    2      52  3.846154 100.000000 98.076923

Percentile Points

Score points for a particular percentile ranks

# P74
quantile(raw_score, .74)
  74% 
31.74 
# Use a different type (see https://en.wikipedia.org/wiki/Quantile#Estimating_quantiles_from_a_sample)
quantile(raw_score, .74, type = 6)
74% 
 32 

Standardized Scores

\(z\)-score

z_score <- (raw_score - mean(raw_score)) / sd(raw_score)
c(mean = mean(z_score), sd = sd(z_score))
         mean            sd 
-4.937123e-16  1.000000e+00 

\(T\)-score

T_score <- z_score * 10 + 50
c(mean = mean(T_score), sd = sd(T_score))
mean   sd 
  50   10 
Important

Standardization does not change the shape of the distribution.

hist(raw_score)

hist(z_score)

hist(T_score)

However, the histograms may look slightly different as each plot uses somewhat different ways to bin the values. But if you compute the skewness and the kurtosis, they should not be affected by the transformation.

Normalized Scores

Normalized \(z\)-score

# Using normal quantile
qnorm_pr <- qnorm(pr / 100)
# Convert raw scores
normalized_zscore <- as.vector(qnorm_pr[as.character(raw_score)])
hist(normalized_zscore)  # the shape will be closer to normal