Up

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]);

}

 

 

References

Godfrey-Smith, P. (2021). Theory and reality: An introduction to the philosophy of science, second edition. The University of Chicago Press.

Okamoto, Y. (2016). Reliability coefficients for ordinal categorical items: Actual relation of observed and true scores. Japan Womenfs University Journal: Faculty of Integrated Arts and Social Sciences, 2016, 27, 113-122.

Okamoto, Y. (2017). Bayesian estimation of ordinal categorical itemsf reliability coefficients: Relationship between true values and observed values. Japan Womenfs University Journal: Faculty of Integrated Arts and Social Sciences, 2017, 28, 59-78.

 

 

Up