Title: | Congeneric Normal-Ogive Model |
---|---|
Description: | The congeneric normal-ogive model is a popular model for psychometric data (McDonald, R. P. (1997) <doi:10.1007/978-1-4757-2691-6_15>). This model estimates the model, calculates theoretical and concrete reliability coefficients, and predicts the latent variable of the model. This is the companion package to Moss (2020) <doi:10.31234/osf.io/nvg5d>. |
Authors: | Jonas Moss [aut, cre] |
Maintainer: | Jonas Moss <[email protected]> |
License: | MIT + file LICENSE |
Version: | 1.0.0 |
Built: | 2024-11-23 04:02:42 UTC |
Source: | https://github.com/jonasmoss/conogive |
conogive
is used to estimate congeneric normal-ogive models
(McDonald, R. P. (1997)).
conogive(data, use = "complete.obs", ...)
conogive(data, use = "complete.obs", ...)
data |
A data frame of observations or a named list with elements
|
use |
Passed to |
... |
Passed to |
The data
argument can be either a list containing the parameters of
a normal-ogive model, or raw data. If actual data is passed to data
,
it is passed to psych::polychoric
to estimate its polychoric correlation
matrix and cutoffs. This is passed to psych::fa
to do a barebones
multivariate normal-ogive model. The ...
arguments are passed to
psych::fa
, which is called with fm = "ml"
by default.
Likert data should start with 1, not 0.
An object of class conogive
.
McDonald, R. P. (1997). Normal-ogive multidimensional model. In W. J. van der Linden & R. K. Hambleton (Eds.), Handbook of Modern Item Response Theory (pp. 257–269). Springer. https://doi.org/10.1007/978-1-4757-2691-6_15 Moss, J. (2020). Please avoid the standardized alpha and the ordinal alpha. https://psyarxiv.com/nvg5d
if(require("psychTools")) { extraversion = psychTools::bfi[c("E1", "E2", "E3", "E4", "E5")] extraversion[, "E1"] = 7 - extraversion[, "E1"] # Reverse-coded item. extraversion[, "E2"] = 7 - extraversion[, "E2"] # Reverse-coded item. fit = conogive(extraversion) }
if(require("psychTools")) { extraversion = psychTools::bfi[c("E1", "E2", "E3", "E4", "E5")] extraversion[, "E1"] = 7 - extraversion[, "E1"] # Reverse-coded item. extraversion[, "E2"] = 7 - extraversion[, "E2"] # Reverse-coded item. fit = conogive(extraversion) }
Massage Cuts to the Desired Shape
massage_cuts(cuts, k)
massage_cuts(cuts, k)
cuts |
A matrix, list, or vector of cuts |
k |
Optional |
Predict the latent variable in a congeneric normal-ogive model using the formula of ((arxiv ref.))
## S3 method for class 'conogive' predict(object, newdata, weights = c("optimal", "equal"), ...)
## S3 method for class 'conogive' predict(object, newdata, weights = c("optimal", "equal"), ...)
object |
An object of class " |
newdata |
An optional data frame with variables to predict with. The fitted values are used if omitted. |
weights |
Weights to use; choose between optimal weights and equal weights. |
... |
Ignored. |
if(require("psychTools")) { extraversion = psychTools::bfi[c("E1", "E2", "E3", "E4", "E5")] extraversion[, "E1"] = 7 - extraversion[, "E1"] # Reverse-coded item. extraversion[, "E2"] = 7 - extraversion[, "E2"] # Reverse-coded item. object = conogive(extraversion) hist(predict(object, extraversion)) # Plot distribution of predictions. }
if(require("psychTools")) { extraversion = psychTools::bfi[c("E1", "E2", "E3", "E4", "E5")] extraversion[, "E1"] = 7 - extraversion[, "E1"] # Reverse-coded item. extraversion[, "E2"] = 7 - extraversion[, "E2"] # Reverse-coded item. object = conogive(extraversion) hist(predict(object, extraversion)) # Plot distribution of predictions. }
The function ordinal_r
calculates the concrete ordinal reliability.
The functions theoretical_ordinal_r
and theoretical_ordinal_alpha
calculates the theoretical ordinal reliability and alpha based on the
polychoric correlation matrix.
ordinal_r( object, xi = c("sample", "theoretical"), weights = c("optimal", "equal") ) theoretical_ordinal_r(object, weights = c("optimal", "equal", "sigma")) theoretical_ordinal_alpha(object)
ordinal_r( object, xi = c("sample", "theoretical"), weights = c("optimal", "equal") ) theoretical_ordinal_r(object, weights = c("optimal", "equal", "sigma")) theoretical_ordinal_alpha(object)
object |
An object of class |
xi |
How to calculate the Xi matrix. Option |
weights |
The weights used to calculate the ordinal reliability.
Option |
The population value of theoretical ordinal alpha equals the theoretical ordinal reliability when the underlying multivariate normal is parallel. The concrete ordinal reliability is the sqaured correlation between the true latent variable and the best linear predictor of the observed Likert-type data. See ((ref)) for definitions.
The concrete ordinal reliability, theoretical ordinal reliability, or theoretical ordinal alpha.
if(require("psychTools")) { agreeableness = psychTools::bfi[c("A1", "A2", "A3", "A4", "A5")] agreeableness[, "A1"] = 7 - agreeableness[, "A1"] # Reverse-coded item. object = conogive(agreeableness) ordinal_r(object, weights = "equal") # 0.6394087 theoretical_ordinal_alpha(object) # 0.7589922 theoretical_ordinal_r(object, weights = "equal") # 0.7689878 ordinal_r(object, weights = "optimal") # 0.6763742 theoretical_ordinal_r(object) # 0.8101108 }
if(require("psychTools")) { agreeableness = psychTools::bfi[c("A1", "A2", "A3", "A4", "A5")] agreeableness[, "A1"] = 7 - agreeableness[, "A1"] # Reverse-coded item. object = conogive(agreeableness) ordinal_r(object, weights = "equal") # 0.6394087 theoretical_ordinal_alpha(object) # 0.7589922 theoretical_ordinal_r(object, weights = "equal") # 0.7689878 ordinal_r(object, weights = "optimal") # 0.6763742 theoretical_ordinal_r(object) # 0.8101108 }