R/internal_consistency.R
reliab_test.Rd
These function compute various measures of internal consistencies for tests or item-scales of questionnaires.
reliab_test(x, scale.items = FALSE, digits = 3, out = c("txt", "viewer", "browser")) split_half(x, digits = 3) cronb(x) mic(x, cor.method = c("pearson", "spearman", "kendall"))
x | Depending on the function, |
---|---|
scale.items | Logical, if |
digits | Amount of digits for returned values. |
out | Character vector, indicating whether the results should be printed
to console ( |
cor.method | Correlation computation method. May be one of
|
reliab_test()
A data frame with the corrected item-total correlations (item discrimination,
column item.discr
) and Cronbach's alpha (if item deleted, column
alpha.if.deleted
) for each item of the scale, or NULL
if data frame had too less columns.
split_half()
A list with two values: the split-half reliability splithalf
and
the Spearman-Brown corrected split-half reliability spearmanbrown
.
cronb()
The Cronbach's Alpha value for x
.
mic()
The mean inter-item-correlation value for x
.
reliab_test()
This function calculates the item discriminations (corrected item-total
correlations for each item of x
with the remaining items) and
the Cronbach's alpha for each item, if it was deleted from the scale.
split_half()
This function calculates the split-half reliability for items in
the data frame x
, including the Spearman-Brown adjustment.
Splitting is done by selecting odd versus even columns in x
.
cronb()
The Cronbach's Alpha value for x
.
mic()
This function calculates a mean inter-item-correlation, i.e.
a correlation matrix of x
will be computed (unless
x
is already a matrix as returned by the
cor
-function) and the mean
of the sum of all item's correlation values is returned.
Requires either a data frame or a computed cor
-object.
reliab_test()
is similar to a basic reliability test
in SPSS. The correlations in the Item-Total-Statistic are a computed
correlation of each item against the sum of the remaining items
(which are thus treated as one item).
For split_half()
and cronb()
, a value closer to 1 indicates
greater internal consistency.
For the mean inter-item-correlation:
“Ideally, the average inter-item correlation for a set of
items should be between .20 and .40, suggesting that while the
items are reasonably homogenous, they do contain sufficiently
unique variance so as to not be isomorphic with each other.
When values are lower than .20, then the items may not be
representative of the same content domain. If values are higher than
.40, the items may be only capturing a small bandwidth of the construct.”
(Piedmont 2014)
Spearman C. 1910. Correlation calculated from faulty data. British Journal of Psychology (3): 271–295. doi: 10.1111/j.2044-8295.1910.tb00206.x
Brown W. 1910. Some experimental results in the correlation of mental abilities. British Journal of Psychology (3): 296–322. doi: 10.1111/j.2044-8295.1910.tb00207.x
Piedmont RL. 2014. Inter-item Correlations. In: Michalos AC (eds) Encyclopedia of Quality of Life and Well-Being Research. Dordrecht: Springer, 3303-3304. doi: 10.1007/978-94-007-0753-5_1493
library(sjlabelled) # Data from the EUROFAMCARE sample dataset data(efc) # retrieve variable and value labels varlabs <- get_label(efc) # recveive first item of COPE-index scale start <- which(colnames(efc) == "c82cop1") # recveive last item of COPE-index scale end <- which(colnames(efc) == "c90cop9") # create data frame with COPE-index scale x <- efc[, c(start:end)] colnames(x) <- varlabs[c(start:end)] # reliability tests reliab_test(x)#> # A tibble: 9 x 3 #> term alpha.if.deleted item.discr #> <chr> <dbl> <dbl> #> 1 do you feel you cope well as caregiver? 0.539 -0.241 #> 2 do you find caregiving too demanding? 0.384 0.329 #> 3 does caregiving cause difficulties in your relat~ 0.339 0.408 #> 4 does caregiving have negative effect on your phy~ 0.324 0.441 #> 5 does caregiving cause difficulties in your relat~ 0.38 0.357 #> 6 does caregiving cause financial difficulties? 0.366 0.416 #> 7 do you feel trapped in your role as caregiver? 0.353 0.368 #> 8 do you feel supported by friends/neighbours? 0.534 -0.029 #> 9 do you feel caregiving worthwhile? 0.556 -0.112# split-half-reliability split_half(x)#> #> # Internal Consistency #> #> Split-Half Reliability: 0.410 #> Spearman-Brown Adjustment: 0.581# cronbach's alpha cronb(x)#> [1] 0.459369# mean inter-item-correlation mic(x)#> [1] 0.09176831# NOT RUN { library(sjPlot) sjt.df(reliab_test(x), describe = FALSE, show.cmmn.row = TRUE, string.cmmn = sprintf("Cronbach's α=%.2f", cronb(x))) # Compute PCA on Cope-Index, and perform a # reliability check on each extracted factor. factors <- sjt.pca(x)$factor.index findex <- sort(unique(factors)) library(sjPlot) for (i in seq_len(length(findex))) { rel.df <- subset(x, select = which(factors == findex[i])) if (ncol(rel.df) >= 3) { sjt.df(reliab_test(rel.df), describe = FALSE, show.cmmn.row = TRUE, use.viewer = FALSE, title = "Item-Total-Statistic", string.cmmn = sprintf("Scale's overall Cronbach's α=%.2f", cronb(rel.df))) } } # }