# dput({set.seed(1421); sample(rep(25:36, c(3, 8, 7, 5, 5, 7, 3, 2, 2, 6, 2, 2)))})
<- c(26, 25, 33, 31, 26, 34, 29, 36, 25, 29, 28, 32, 25,
raw_score 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)
Norms and Standardized Scores
The following inputs raw scores from Table 2.1 of the text.
Frequency Distribution
The following recreates Table 2.1 using R.
<- table(raw_score) # frequency
freq <- cumsum(freq) # cumulative frequency
cumfreq <- prop.table(freq) * 100 # percentage
perc <- cumsum(perc) # cumulative percentage
cumperc <- (cumperc - 0.5 * perc) # percentile rank
pr 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
<- (raw_score - mean(raw_score)) / sd(raw_score)
z_score c(mean = mean(z_score), sd = sd(z_score))
mean sd
-4.937123e-16 1.000000e+00
\(T\)-score
<- z_score * 10 + 50
T_score 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 / 100)
qnorm_pr # Convert raw scores
<- as.vector(qnorm_pr[as.character(raw_score)])
normalized_zscore hist(normalized_zscore) # the shape will be closer to normal