Statistical Reliability and Psychological Reliability
Discussion and Programs
Yasuharu Okamoto, 2018, 2022
Discussion
Two types of reliability of a psychological scale of categorical items should be distinguished. One is statistical reliability and the other is psychological reliability. In the case of continuous items, values of statistical reliability and psychological reliability coincide. However, in general, in the case of categorical items, statistical reliability coefficients, among which the coefficient alpha is the most common, overestimate psychological reliability. In the case of categorical items, the two types of reliability are defined on essentially different kinds of models. This difference would be considered to concern the problem of realism in the philosophy of science.
Statistical reliability is based on the same kind of model as is used for continuous items. That is, an observed value on categorical item of person is represented as the sum of a true value and an error , that is,
The true value of categorical response is defined as expectation of ,
These formulations (1) and (2) well correspond to those of classical test theory for continuous items. But, for categorical items, a response is assumed to take an integer value. So, it seems natural to think that the true value of a categorical item be also an integer value. It seems statistical convenience to define the true value as expectation of the observed value. By defining the true value as expectation of a categorical variable, statistical argument on reliability can be done as in the case of continuous items, although the true value may not be integer. The common coefficient alpha can be considered to be calculated based on this framework where the true value is defined statistically as expectation of categorical variable .
Researchers who employ this definition of the true value as the statistical expectation seem to deny the true value of the concept to be measured as Platonic one.
On the other hand, psychological reliability is based on a psychological model, which is called Thurstonian model, or is known as Samejimafs model in item response theory (IRT). According to Thurstonian modeling, categorical response on item of person is generated by categorizing a latent continuous response on item of person (Okamoto, 2017). The latent continuous response consists of a true value and an error , that is,
Strength of the psychological concept of person is represented by . For model (3), the true value is defined as that of the psychological concept to be measured. That is, the true value is not a mere statistical value, but the real value of the concept.
Godfrey-Smith (2021) says:
I think that scientific theories, when things go well, can in principle and often do in fact tell us about how the world works and what it contains, including some of its deeply hidden structure. (p. 236)
He says more:
I think that phenomenal-realism, metaphysical constructivism, and other standard views that oppose realism are false.(ibid. p.236)
If we adopt Godfrey-Smithfs view of the realism, we should consider that the statistical definition of real value is false. Analysis of psychological scale must be based on realism of the true value, that is, eq.(3). When factor analysis of categorical items is done with polychoric or tetrachoric correlation coefficients, continuous latent variables are assumed.
Under the model (3), the observed categorical score on categorical item of person is given by categorization of , that is,
where is a category boundary.
A score of a psychological scale of categorical items of person is given by the sum , where
For the model given by Equations (3) to (5), relation of a true value , more specifically , and the observed scale score can be represented by the following regression models:
or
Reliability of the scale, which represents the strength of relation between the observed score and the true value , can be given by the coefficient of determination -index, which is given by squared correlation of and , the common value for regression models (6) and (7). This coefficient of reliability given by -index is denoted by (Okamoto (2016)) or (Okamoto (2017)), and given by
Reliability coefficient or represents the strength of relation between an observed score and the true value of the psychological concept to measure. The popular coefficient of reliability , which can be considered to be a coefficient of statistical reliability, tends to overestimate or (Okamoto, 2016, 2017).
Python scripts to estimate (that is, ) were developed and can be downloaded from this website. Formulae of the calculation are given in appendix of Okamoto (2017) and rather complex. However, it should be noted that in general, the following simpler equation is wrong:
where denotes covariance of and conditional on , and is a probability density function of .
The following example shows that Equation (9) is wrong.
Set two variables and as follows:
Then, denoting expectations of and by and , we have
Since
we have
We also have
Hence, we have
On the other hand, denoting expectations of and conditional on by and , and variables and conditional on by and , we have
where denotes expectation conditional on .
Hence, we have
where is a density function of .
Equations (10) and (11) shows that Equation (9) does not hold.
Programs for Estimating the Coefficient of
Reliability of Categorical Items
Python scripts using Stan scripts were developed. The models (3) and (4) give probabilities of categorical responses as follows:
Equation (12) shows that an origin and a unit of the scale are arbitrary. To identify parameter values, some restrictions of parameters are needed (Okamoto, 2017). The following programs were developed with these restrictions for model identification, which produced three Stan scripts corresponding to number of item categories: (A) More than three categories, (B) Three categories, and (C) Two categories (i.e., Binary items). These Stan scripts are essentially the same as those for item response theory (IRT), so the approach in this website may be called sum of item responses theory (SIRT).
The Stan scripts estimate parameter values, with which coefficient of reliability is calculated by the class CalcRhoPreRhoYYP declared in the module CalcRho_cat.py. All the files of Stan script and Python scripts are archived in a zip file with (a) sample data file(s), and can be downloaded from this website.
The programs (scripts) can analyze data with missing values. For details on missing values, see the documents on gHow to useh, which can be downloaded from this website.
(A)
Items with more than three categories
The following condition
is set. The origin and unit are set indirectly by restriction (13). The Stan script for condition (13) is shown below (Listing 1). The Stan script file and Python files are archived in a zip file with sample data files. How to use is explained in a document of a pdf file.
Run the Python main script (Figure 1). The name of input data file will be asked. After typing in the input data file name, an output file name will be required.
Figure 1
After typing in a output file name, the Stan script will be run, and the point estimates will be calculated. The medians of the distributions are used as the point estimates (Figure 2).
Figure 2
After displaying the point estimate of , which was calculated using the medians by the class CalcRhoPreRhoYYP, a message which asks whether estimation of a distribution of is needed or not will be displayed.
If you do not want to estimate the distribution, type in the character eNf. The program will end.
If you type in the character eYf, estimation of a distribution of 100 samples, which will be calculated by four parallel processes, each of which displays the current state (Figure 3).
Figure 3
After calculation of the samples, a histogram of the samples will be displayed (Figure 4).
Figure 4
Close this window, the program ends. The results of the calculations are printed out in the output file.
The content of the output file is as follows (Figures 5 to 8):
Figure 5
.
.
.
Figure 6
.
.
.
Figure 7
.
.
.
Figure 8
How to use the program is explained in detail with a sample output of the calculation in this document (a pdf file).
The program files and sample data files are archived in this file (a zip file), which can be downloaded.
Listing 1. Stan script for items of more than three categories
// Yasuharu
Okamoto, 2017.07
data {
int <lower = 4>
K;
//
Number of categories > 3
int Npsn;
//
Number of persons
int Nitm;
//
Number of items
int Ntot;
// Number of
data, Ntot <= Nprn * Nitm
int<lower = 1, upper =
Npsn> IDpsn[Ntot]; // Person ID
int<lower = 1, upper =
Nitm> IDitm[Ntot]; // Item ID
int<lower = 1, upper =
K> Res[Ntot];
//
Response-> An integer value between 1 and K
}
parameters {
real<lower = 0.0> Lambda[Nitm];
real
mu[Nitm];
simplex[K - 2] w_c;
real<lower = 0.0> psi[Nitm];
real
F[Npsn];
}
transformed parameters
{
vector[K] p[Ntot];
real C[K - 1];
C[1] = -1.0;
for (k in 2:(K - 1)){
C[k]
= C[k - 1] + w_c[k - 1] * 2.0;
}
for (i in 1:Ntot){
p[i][K] = Phi(((mu[IDitm[i]] + (Lambda[IDitm[i]] * F[IDpsn[i]])) - C[K -
1]) /
psi[IDitm[i]]);
p[i][1] =1.0 -
Phi(((mu[IDitm[i]] + (Lambda[IDitm[i]] * F[IDpsn[i]])) - C[1]) /
psi[IDitm[i]]);
for
(k in 2:(K - 1)){
p[i][k] = Phi(((mu[IDitm[i]] + (Lambda[IDitm[i]] * F[IDpsn[i]])) - C[k -
1]) /
psi[IDitm[i]])
- Phi(((mu[IDitm[i]] + (Lambda[IDitm[i]] * F[IDpsn[i]])) - C[k]) /
psi[IDitm[i]]);
}
}
}
model {
for (i in 1:Npsn)
F[i]
~ normal(0.0, 1.0);
for (i in 1:Ntot)
Res[i] ~ categorical(p[i]);
}
(B)
Items with three
categories
This case is the same as that of more than three categories, except that only two category boundaries and are used, so free category boundary does not exist. The Stan script for items of three categories is shown in Listing 2. Complete set of the scripts is archived in this zip file with a sample data file, and How to use the script are explained in this document (a pdf file).
The way how to use the scripts is the same as in the case of items of more than three categories, which is explained above.
Run the Python script as follows (Figure 9):
Figure 9
Listing 2. Stan script for items of three categories
// Yasuharu
Okamoto, 2017.07
data {
int <lower = 3, upper =
3> K;
//
Number of categories = 3
int Npsn;
//
Number of persons
int Nitm;
//
Number of items
int Ntot;
//
Number of data, Ntot <=
Nprn * Nitm
int<lower = 1, upper =
Npsn> IDpsn[Ntot]; // Person ID
int<lower = 1, upper =
Nitm> IDitm[Ntot]; // Item ID
int<lower = 1, upper =
K> Res[Ntot];
//
Response-> An integer value between 1 and K
}
parameters {
real<lower = 0.0> Lambda[Nitm];
real
mu[Nitm];
real<lower = 0.0> psi[Nitm];
real
F[Npsn];
}
transformed parameters
{
vector[K] p[Ntot];
real C[K - 1];
C[1] = -1.0;
C[2] = 1.0;
for (i in 1:Ntot){
p[i][K] = Phi(((mu[IDitm[i]] + (Lambda[IDitm[i]] * F[IDpsn[i]])) - C[K -
1]) /
psi[IDitm[i]]);
p[i][1] =1.0 - Phi(((mu[IDitm[i]] + (Lambda[IDitm[i]] * F[IDpsn[i]])) -
C[1]) /
psi[IDitm[i]]);
for (k
in 2:(K - 1)){
p[i][k] = Phi(((mu[IDitm[i]] + (Lambda[IDitm[i]] * F[IDpsn[i]])) - C[k -
1]) /
psi[IDitm[i]])
- Phi(((mu[IDitm[i]] + (Lambda[IDitm[i]] * F[IDpsn[i]])) - C[k]) /
psi[IDitm[i]]);
}
}
}
model {
for (i in 1:Npsn)
F[i]
~ normal(0.0, 1.0);
for (i in 1:Ntot)
Res[i] ~ categorical(p[i]);
}
(C)
Items
with two categories (Binary items)
For binary items, there is only one category boundary. So, restriction (13) cannot be used. In this case, the origin is set by the following condition
Under this condition (14), we have
where
Equation (15) shows that for binary items, parameters can be estimated under condition (14) and
Condition (16) sets the units of the items (Okamoto, 2017).
The Stan script for binary items is shown in Listing 3. The Stan script file and the Python script files are archived in a zip file with a sample data file. Hot to use the script is explained by a document (a pdf file).
The Python scripts can be run in the same way as in the case of items of more than three categories (see Figure 10).
Figure 10
Listing 3. Stan script for binary items
// Yasuharu
Okamoto, 2017.07
data {
int <lower = 2, upper =
2> K;
//
Number of categories = 2
int Npsn;
//
Number of persons
int Nitm;
//
Number of items
int Ntot;
//
Number of data, Ntot <=
Nprn * Nitm
int<lower = 1, upper =
Npsn> IDpsn[Ntot]; // Person ID
int<lower = 1, upper =
Nitm> IDitm[Ntot]; // Item ID
int<lower = 1, upper =
K> Res[Ntot];
//
Response-> An integer value between 1 and K
}
parameters {
real<lower
= 0.0> Lambda[Nitm];
real
mu[Nitm];
real
F[Npsn];
}
transformed parameters
{
vector[K] p[Ntot];
real C[K - 1];
real psi[Nitm];
C[1] = 0.0;
for (j in 1:Nitm){
psi[j] = 1.0;
}
for (i in 1:Ntot){
p[i][K] = Phi(((mu[IDitm[i]] + (Lambda[IDitm[i]] * F[IDpsn[i]])) - C[K -
1]) /
psi[IDitm[i]]);
p[i][1] =1.0 - p[i][K];
}
}
model {
for (i in 1:Npsn)
F[i]
~ normal(0.0, 1.0);
for (i in 1:Ntot)
Res[i] ~ categorical(p[i]);
}
Godfrey-Smith, P. (2021). Theory and reality: An introduction to the philosophy of science, second edition. The University of Chicago Press.