| Title: | Computing Subscores in Classical Test Theory and Item Response Theory |
| Version: | 3.3 |
| Author: | Shenghai Dai [aut, cre], Xiaolin Wang [aut], Dubravka Svetina [aut] |
| Maintainer: | Shenghai Dai <s.dai@wsu.edu> |
| Description: | Functions for computing test subscores using different methods in both classical test theory (CTT) and item response theory (IRT). This package enables three types of subscoring methods within the framework of CTT and IRT, including (1) Wainer's augmentation method (Wainer et. al., 2001) <doi:10.4324/9781410604729>, (2) Haberman's subscoring methods (Haberman, 2008) <doi:10.3102/1076998607302636>, and (3) Yen's objective performance index (OPI; Yen, 1987) https://www.ets.org/research/policy_research_reports/publications/paper/1987/hrap. It also includes functions to compute Proportional Reduction of Mean Squared Errors (PRMSEs) in Haberman's methods which are used to examine whether test subscores are of added value. In addition, the package includes a function to assess the local independence assumption of IRT with Yen's Q3 statistic (Yen, 1984 <doi:10.1177/014662168400800201>; Yen, 1993 <doi:10.1111/j.1745-3984.1993.tb00423.x>). |
| Depends: | R (≥ 3.4.0), CTT, stats, irtoys, sirt, ltm |
| Imports: | cocor, boot |
| NeedsCompilation: | no |
| LazyData: | true |
| Encoding: | UTF-8 |
| License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| RoxygenNote: | 7.2.0 |
| Packaged: | 2022-05-20 15:33:36 UTC; daish |
| Repository: | CRAN |
| Date/Publication: | 2022-05-24 11:00:07 UTC |
This main function estimates true subscores using different methods based on original CTT scores.
Description
This function estimates true subscores using methods introduced in studies of Haberman (2008) <doi:10.3102/1076998607302636> and Wainer et al. (2001) <doi:10.4324/9781410604729>. Hypothesis tests (i.e., Olkin' Z,Williams's t, and Hedges-Olkin's Z) are used to determine whether a subscore or an augmented subscore has added value. Codes for the hypothesis tests are from Sinharay (2019) <doi: 10.3102/1076998618788862>.
Usage
CTTsub(test.data, method = "Haberman")
Arguments
test.data |
A list that contains item responses of all subtests and the entire test, which can be obtained using function 'data.prep'. |
method |
Subscore estimation methods. method="Haberman" (by default) represents the three methods proposed by Haberman (2008) <doi:10.3102/1076998607302636>. method="Wainer" represents Wainer's augmented method. |
Value
summary |
Summary of estimated subscores (e.g., mean, sd). |
PRMSE |
(a) PRMSE values of estimated subscores (for Haberman's methods only).(b) Decisions on whether subscores have added value - added.value.s (or added.value.sx) = 1 means subscore.s (or subscore.sx) has added value, and added.value.s (or added.value.sx) = 0 vice versa. |
PRMSE.test |
All information in PRMSE plus results of hypopthesis testing based on Sinharay (2019) <doi:10.3102/1076998618788862>. |
subscore.original |
Original subscores and total score. |
estimated.subscores |
Subscores computed using selected method. Three sets of subscores will be returned if method = "Haberman". |
References
Haberman, S. J. (2008). "When can subscores have value?." Journal of Educational and Behavioral Statistics, 33(2), 204-229. doi:10.3102/1076998607302636.
Sinharay, S. (2019). "Added Value of Subscores and Hypothesis Testing." Journal of Educational and Behavioral Statistics, 44(1), 25-44. doi:10.3102/1076998618788862.
Wainer, H., Vevea, J., Camacho, F., Reeve, R., Rosa, K., Nelson, L., Swygert, K., & Thissen, D. (2001). "Augmented scores - "Borrowing strength" to compute scores based on small numbers of items." In Thissen, D. & Wainer, H. (Eds.), Test scoring (pp.343 - 387). Mahwah, NJ: Lawrence Erlbaum Associates, Inc. doi:10.4324/9781410604729.
Examples
# Transferring original scored data to a list format
# that can be used in other functions.
test.data<-data.prep(scored.data,c(3,15,15,20),
c("Algebra","Geometry","Measurement", "Math"))
#----------------------------------------------
# Estimating subscores using Haberman's methods
CTTsub(test.data,method="Haberman") # Estimating subscores using Haberman's methods
# Obtaining original correlation for the three methods
CTTsub(test.data,method="Haberman")$Correlation
# Obtaining disattenuated correlation for the three methods
CTTsub(test.data,method="Haberman")$Disattenuated.correlation
# Obtaining PRMSEs for the three methods
CTTsub(test.data,method="Haberman")$PRMSE
# Obtaining descriptive statistics summary for estimated subscores
CTTsub(test.data,method="Haberman")$summary
# Obtaining raw subscores
CTTsub(test.data,method="Haberman")$subscore.original
# Obtaining subscores that are estimated as a function of the observed subscores
CTTsub(test.data,method="Haberman")$subscore.s
# Obtaining subscores that are estimated as a function of the observed total score
CTTsub(test.data,method="Haberman")$subscore.x
# Obtaining subscores that are estimated as a function of
# both the observed subscores and the observed total score.
CTTsub(test.data,method="Haberman")$subscore.sx
#-------------------------------------------
# Estimating subscores using Wainer's method
CTTsub(test.data,method="Wainer")
# Obtaining descriptive statistics summary for subscores
CTTsub(test.data,method="Wainer")$summary
# Obtaining original subscores
CTTsub(test.data,method="Wainer")$subscore.original
# Obtaining subscores that are estimated using Wainer's augmentation method
CTTsub(test.data,method="Wainer")$subscore.augmented
The 2011 TIMSS Grade 8 Mathematics Assessment Dataset
Description
The TIMSS dataset used in Dai, Svetina, and Wang (2017) (doi:10.3102/1076998617716462). It contained responses from 765 students to 32 items with 6 to 9 items on each of the subscales of (1) number (Q1 to Q9), (2) algebra (Q10 to Q18), (3) geometry (Q19 to Q24), and (4) data and chance (Q25 to Q30). Omitted responses were treated as incorrect.
Usage
data("TIMSS11G8M.data")
Format
A data frame with 765 observations on the following 32 variables.
Q1a numeric vector
Q2a numeric vector
Q3a numeric vector
Q4a numeric vector
Q5a numeric vector
Q6a numeric vector
Q7a numeric vector
Q8a numeric vector
Q9a numeric vector
Q10a numeric vector
Q11a numeric vector
Q12a numeric vector
Q13a numeric vector
Q14a numeric vector
Q15a numeric vector
Q16a numeric vector
Q17a numeric vector
Q18a numeric vector
Q19a numeric vector
Q20a numeric vector
Q21a numeric vector
Q22a numeric vector
Q23a numeric vector
Q24a numeric vector
Q25a numeric vector
Q26a numeric vector
Q27a numeric vector
Q28a numeric vector
Q29a numeric vector
Q30a numeric vector
Q31a numeric vector
Q32a numeric vector
Source
Dai, S., Svetina, D., & Wang, X. (2017). "Reporting subscores using R: A software review." Journal of Educational and Behavioral Statistics. 42(2), 617-638. doi: 10.3102/1076998617716462.
Examples
data(TIMSS11G8M.data)
# maybe str(TIMSS11G8M.data); plot(TIMSS11G8M.data) ...
Estimating true subscores using Yen's OPI
Description
This function estimates subscores using Yen's Objective Performance Index (OPI; Yen, 1987) <https://www.ets.org/research/policy_research_reports/publications/paper/1987/hrap>. Yen's OPI (Yen, 1987) is a procedure combining Bayesian method and item response theory (IRT; Embretson & Reise, 2000 <https://psycnet.apa.org/record/2000-03918-000>; Reckase, 1997 <doi: 10.1177/0146621697211002>). This method pulls an examinee's performance on a certain objective (i.e., subscale) towards his/her total test performance in order to get a more stable and precise objective subscore estimate.
Usage
Yen.OPI(test.data)
Arguments
test.data |
A list that contains item responses of all subtests and the entire test, which can be obtained using function 'data.prep'. |
Value
summary |
It contains statistical summary of OPI (mean & sd). |
OPI |
Estimated OPI values |
References
Embretson, S. E., & Reise, S. P. (2013). "Item response theory". Mahwah, NJ: Lawrence Erlbaum Associates, Inc. https://psycnet.apa.org/record/2000-03918-000.
Reckase, M. D. (1997). "The past and future of multidimensional item response theory". Applied Psychological Measurement, 21(1), 25-36. doi: 10.1177/0146621697211002.
Yen, W. M. (1987, June). "A Bayesian/IRT index of objective performance". Paper presented at annual meeting of the Psychometric Society, Montreal, Quebec, Canada. https://www.ets.org/research/policy_research_reports/publications/paper/1987/hrap.
Examples
test.data<-data.prep(scored.data,c(3,15,15,20),
c("Algebra","Geometry","Measurement", "Math"))
Yen.OPI(test.data)
Computing Yen's Q3 statistic for unidimensional Rasch, 1-, 2-, and 3-PL logistic IRT models
Description
This function calculates Yen's Q3 statistics as introduced in Yen (1984) <doi: 10.1177/014662168400800201> and Yen (1993) <doi: 10.1111/j.1745-3984.1993.tb00423.x> for unidimensional Rasch, 1-, 2-, and 3-PL logistic IRT models to assess the local independence assumption.
Usage
Yen.Q3(scored.data, IRT.model = "2pl")
Arguments
scored.data |
Item response data with rows as individuals and columns as items. |
IRT.model |
IRT model ('Rasch', '1pl', '2pl', or '3pl') to be used.The default option is 2pl. |
Value
Q3 |
A matrix of Q3 statistics |
Q3.weighted |
A matrix of Q3 statistics as obtained by weighting the residual values to reflect the number of examinees with each response pattern. |
References
Yen, W. M. (1984). "Effects of local item dependence on the fit and equating performance of the three-parameter logistic model." Applied Psychological Measurement, 8(2), 125-145. doi: 10.1177/014662168400800201.
Yen, W. M. (1993). "Scaling performance assessments: Strategies for managing local item dependence. " ournal of educational measurement, 30(3), 187-213. doi: 10.1111/j.1745-3984.1993.tb00423.x.
Examples
Yen.Q3(scored.data,IRT.model="2pl")
Yen.Q3(scored.data)$Q3
Yen.Q3(scored.data)$Q3.weighted
This function prepares data into a required list format
Description
This function generates a list of data sets using the scored original data set, which can be used as objects in subscore computing functions.
Usage
data.prep(scored.data, subtest.infor, subtest.names = NULL)
Arguments
scored.data |
Original scored data set with rows as individuals and columns as items. |
subtest.infor |
A numerical vector. The first number indicates the number of subtests, followed by numbers of items on each subscale. |
subtest.names |
Names of the subscales AND the entire test. The default is NULL. If not provided, names of "subtest.1", "subtest.2",..., will be assigned. |
Value
A list that contains item responses of all subtests and the entire test. The list is then used by other functions (e.g., CTTsub) in the package to obtain subscores.
Examples
subtest.infor<-c(3,15,15,20)
subtest.names<-c("Algebra","Geometry","Measurement", "Math")
# This math test consists of 3 subtests, which have 15 algebra
# items, 15 geometry items, and 20 measurement items.
test.data<-data.prep(scored.data, subtest.infor, subtest.names)
Sample scored data
Description
This dataset contains responses of 150 examinees to three subscales. These subscales consist of 15, 15, and 20 items respectively.
Usage
data("scored.data")
Format
A data frame with 150 observations on the following 50 variables.
V1Item 1
V2Item 2
V3Item 3
V4Item 4
V5Item 5
V6Item 6
V7Item 7
V8Item 8
V9Item 9
V10Item 10
V11Item 11
V12Item 12
V13Item 13
V14Item 14
V15Item 15
V16Item 16
V17Item 17
V18Item 18
V19Item 19
V20Item 20
V21Item 21
V22Item 22
V23Item 23
V24Item 24
V25Item 25
V26Item 26
V27Item 27
V28Item 28
V29Item 29
V30Item 30
V31Item 31
V32Item 32
V33Item 33
V34Item 34
V35Item 35
V36Item 36
V37Item 37
V38Item 38
V39Item 39
V40Item 40
V41Item 41
V42Item 42
V43Item 43
V44Item 44
V45Item 45
V46Item 46
V47Item 47
V48Item 48
V49Item 49
V50Item 50
Details
A dataset containing responses of 150 examinees to a total number of 50 items on three subscales (15, 15, and 20 items respectively).
Examples
data(scored.data)
# maybe str(scored.data); plot(scored.data) ...
Estimating true subscores using Wainer's augmentation method
Description
This function estimates subscores using Wainer's augmentation method (Wainer et. al., 2001) <doi:10.4324/9781410604729>. The central idea of this procedure is that, the estimation of subscores will be improved by shrinking the individual observed subscores towards some aggregate values (i.e., group mean subscores). The extent of the shrinkage depends on the closeness of the subscale being estimated with other subscales as well as reliabilities of all the subscales. Wainer's augmentation is a multivariate version of Kelly's formula (Kelly, 1947) <https://www.hup.harvard.edu/catalog.php?isbn=9780674330009>. For details of Wainer's augmentation subscoring method, please refer to Wainer et al. (2001) <doi:10.4324/9781410604729>.
Usage
subscore.Wainer(test.data)
Arguments
test.data |
A list that contains item responses of all subtests and the entire test, which can be obtained using function 'data.prep'. |
Value
summary |
It contains statistical summary of the augmented subscores (mean, sd, and reliability). |
Augmented.subscores |
It contains augmented subscores that are obtained using Wainer's method. |
References
Wainer, H., Vevea, J., Camacho, F., Reeve, R., Rosa, K., Nelson, L., Swygert, K., & Thissen, D. (2001). "Augmented scores - "Borrowing strength" to compute scores based on small numbers of items" In Thissen, D. & Wainer, H. (Eds.), Test scoring (pp.343 - 387). Mahwah, NJ: Lawrence Erlbaum Associates, Inc. doi:10.4324/9781410604729.
Kelley, T. L. (1947). Fundamentals of statistics. Harvard University Press. https://www.hup.harvard.edu/catalog.php?isbn=9780674330009.
Examples
test.data<-data.prep(scored.data,c(3,15,15,20),
c("Algebra","Geometry","Measurement", "Math"))
subscore.Wainer(test.data)
subscore.Wainer(test.data)$summary
subscore.Wainer(test.data)$subscore.augmented
Computing correlation indices for subscores and the total score.
Description
This function computes Cronbach's Alpha and Stratified Alpha (Cronbach et al., 1965) <doi: 10.1177/001316446502500201>. Disattenuated correlations are also provided.
Usage
subscore.corr(test.data)
Arguments
test.data |
A list that contains item responses of all subtests and the entire test, which can be obtained using function ’data.prep’. |
Value
summary |
Summary of obtained subscores (e.g., mean, sd). |
correlation |
Correlation indices as indicated above. |
References
Cronbach, L., Schonenman, P., & McKie, D. (1965). "Alpha coefficients for stratified-parallel tests." Educational and Psychological Measurement, 25, 291-282. doi: 10.1177/001316446502500201.
Examples
# Transferring scored response data to the required list format
test.data<-data.prep(scored.data,c(3,15,15,20),
c("Algebra","Geometry","Measurement", "Math"))
#Estimate true subscores using Haberman's method based on observed subscores
subscore.corr(test.data)
subscore.s(test.data)$summary
subscore.s(test.data)$correlation
Computing subscores using Haberman's method based on observed subscores.
Description
This function estimate true subscores based on observed subscores, using the method introduced by Haberman (2008) <doi:10.3102/1076998607302636>.
Usage
subscore.s(test.data)
Arguments
test.data |
A list that contains item responses of all subtests and the entire test, which can be obtained using function 'data.prep'. |
Value
summary |
Summary of obtained subscores (e.g., mean, sd). |
PRMSE |
PRMSEs of obtained subscores (for Haberman's methods only). |
subscore.original |
Original subscores and total score. |
subscore.s |
Subscores that are estimated based on the observed subscore. |
References
Haberman, S. J. (2008). "When can subscores have value?." Journal of Educational and Behavioral Statistics, 33(2), 204-229. doi:10.3102/1076998607302636.
Examples
# Transferring scored response data to the required list format
test.data<-data.prep(scored.data,c(3,15,15,20),
c("Algebra","Geometry","Measurement", "Math"))
# Estimate true subscores using Haberman's method based on observed subscores
subscore.s(test.data)
subscore.s(test.data)$summary
subscore.s(test.data)$Correlation
subscore.s(test.data)$Disattenuated.correlation
subscore.s(test.data)$PRMSE
subscore.s(test.data)$subscore.s
Computing subscores using Haberman's method based on both observed total scores and observed subscores.
Description
This function estimate true subscores based on both observed total scores and observed subscores using the method introduced by Haberman (2008) <doi:10.3102/1076998607302636>.
Usage
subscore.sx(test.data)
Arguments
test.data |
A list that contains item responses of all subtests and the entire test, which can be obtained using function 'data.prep'. |
Value
summary |
Summary of obtained subscores (e.g., mean, sd). |
PRMSE |
PRMSEs of obtained subscores (for Haberman's methods only). |
subscore.original |
Original observed subscores and total score. |
subscore.sx |
Subscores that are estimated based on both the observed total score and observed subscore. |
References
Haberman, S. J. (2008). "When can subscores have value?." Journal of Educational and Behavioral Statistics, 33(2), 204-229. doi:10.3102/1076998607302636.
Examples
test.data<-data.prep(scored.data,c(3,15,15,20),
c("Algebra","Geometry","Measurement", "Math"))
subscore.sx(test.data)
subscore.s(test.data)$Correlation
subscore.s(test.data)$Disattenuated.correlation
subscore.sx(test.data)$summary
subscore.sx(test.data)$PRMSE
subscore.sx(test.data)$subscore.sx
Computing subscores using Haberman's method based on observed total scores.
Description
This function estimates true subscores based on observed total scores using the method introduced by Haberman (2008) <doi:10.3102/1076998607302636>.
Usage
subscore.x(test.data)
Arguments
test.data |
A list that contains item responses of all subtests and the entire test, which can be obtained using function 'data.prep'. |
Value
summary |
Summary of obtained subscores (e.g., mean, sd). |
PRMSE |
PRMSEs of obtained subscores (for Haberman's methods only). |
subscore.original |
Original observed subscores and total score. |
subscore.x |
Subscores that are estimated based on the observed total score. |
References
Haberman, S. J. (2008). "When can subscores have value?." Journal of Educational and Behavioral Statistics, 33(2), 204-229.doi:10.3102/1076998607302636
Examples
test.data<-data.prep(scored.data,c(3,15,15,20),
c("Algebra","Geometry","Measurement", "Math"))
subscore.x(test.data)
subscore.x(test.data)$summary
subscore.x(test.data)$PRMSE
subscore.x(test.data)$Correlation
subscore.x(test.data)$Disattenuated.correlation
subscore.x(test.data)$subscore.x
A list of objects that include both test information and subscores.
Description
This list consists of four objects. The first three objects are item responses on the three subscales (algebra, geometry, and measurement). The fourth object is the response data on the total test.
Usage
data("test.data")
Format
The format is: A list with 4 objects:
$ Algebra :'data.frame': 150 obs. of 15 variables:
$ Geometry :'data.frame': 150 obs. of 15 variables:
$ Measurement:'data.frame': 150 obs. of 20 variables:
$ Math :'data.frame': 150 obs. of 50 variables:
Details
Algebra: Responses of 150 participants to 15 items; Geometry: Responses of 150 participants to 15 items. Measurement: Responses of 150 participants to 20 items; Math: Responses of 150 participants to 20 items.
Examples
data(test.data)
# maybe str(test.data); plot(test.data) ...