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"))

Arguments

x

Depending on the function, x may be a matrix as returned by the cor-function, or a data frame with items (e.g. from a test or questionnaire).

scale.items

Logical, if TRUE, the data frame's vectors will be scaled. Recommended, when the variables have different measures / scales.

digits

Amount of digits for returned values.

out

Character vector, indicating whether the results should be printed to console (out = "txt") or as HTML-table in the viewer-pane (out = "viewer") or browser (out = "browser"), of if the results should be plotted (out = "plot", only applies to certain functions). May be abbreviated.

cor.method

Correlation computation method. May be one of "spearman" (default), "pearson" or "kendall". You may use initial letter only.

Value

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.

Details

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.

Note

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)

References

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

Examples

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 &alpha;=%.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 &alpha;=%.2f", cronb(rel.df))) } } # }