Learn R Programming

REdaS (version 0.9.1)

Bartlett-Sphericity: Bartlett's Test of Sphericity

Description

Implements Barlett's Test of Sphericity which tests whether a matrix is significantly different from an identity matrix.

Usage

bart_spher(x, use = c("everything", "all.obs", "complete.obs",
                      "na.or.complete", "pairwise.complete.obs"))

## S3 method for class 'bart_spher': print(x, \ldots)

Arguments

x
a data matrix or the object to be printed.
use
defines the method to use if missing values are present (see Examples and cor).
...
further arguments for the print method.

Value

  • A list object of class 'bart_spher'
  • callthe issued function call
  • xthe original data
  • cormatthe correlation matrix computed from the data
  • usetreatment of NAs
  • nthe number of used observations
  • kthe number of variables/items
  • X2the computed $X^2$ value
  • dfdegrees of freedom
  • p.valuethe $p$-value
  • warnlogical value indicating whether a warning regarding missing values will be issued (see Details)

encoding

UTF-8

Details

The test statistic $X^2$ as defined in Eq. (3) in Bartlett (1951) is $X^2=-[(n-1)-(2k+5)/6]\cdot\log(\left|\mathbf{R}\right|)$ where $n$ is the number of observations, $k$ the number of variables, and $\mathbf{R}$ the correlation matrix of the data supplied in x. $\left|\mathbf{R}\right|$ is the determinant of $\mathbf{R}$.

Bartlett's $X^2$ is asymptotically $\chi^2$-distributed with $\mathit{df}=k(k-1)/2$ under the null hypothesis.

Note that, because the bias-corrected correlation matrix is used, $(n-1)$ is employed instead of $n$, as in the paper. Treatment of Missing Values{

If no missing values are present in the data matrix x, use will work with any setting and no adjustments are necessary. In this case, $n$ is the number of rows in x.

For listwise deletion (use = "complete.obs" or "na.or.complete"), $n$ is the number of remaining rows in x.

When use = "pairwise.complete.obs", $n$ is approximated as the sum of relative non-missing responses for all observations with 2 or more valid responses.

If listwise/pairwise methods are used to compute the correlation matrix and the test statistic, a warning will be issued when printing the object. }

References

Bartlett, M. S. (1951). The Effect of Standardization on a $\chi^2$ Approximation in Factor Analysis. Biometrika 38(3/4), 337--344.

See Also

cor() and KMOS()

Examples

Run this code
# generate a data frame with 3 variables and 100 observations
set.seed(5L)
datamatrix <- data.frame("A" = rnorm(100), "B" = rnorm(100), "C" = rnorm(100))
head(datamatrix)

# correlation matrix
cor(datamatrix)


# bartlett's test
bart_spher(datamatrix)


# effects of missing observations on correlations: to illustrate this, the first
# observation on variable A is set to NA
datamatrix[1, 1] <- NA
head(datamatrix)

# "everything" (the default) causes all correlations involving a variable with
# missing values to be NA (in this case, all pairwise correlations with the
# variable "A")
cor(datamatrix)

# "all.obs" generates an error if missing values are present.
cor(datamatrix, use = "all.obs")

# "complete.obs" and "na.or.complete" delete complete observations if there are
# NA (in this case, the first case would be deleted). If there are no complete
# cases left after the listwise deletion, "complete.obs" results in an error
# while "na.or.complete" returns a matrix with all elements being NA.
cor(datamatrix, use = "complete.obs")
cor(datamatrix, use = "na.or.complete")

# "pairwise.complete.obs" uses all non-missing pairwise values. If there are no
# non-missing value pairs in two variables, the results will be NA.
# It is possible that correlation matrices are not positive semi-definite.
cor(datamatrix, use = "pairwise.complete.obs")


# with the missing value in the first cell, the test does not work anymore:
bart_spher(datamatrix)

# deleting the whole first observation (listwise) gives
bart_spher(datamatrix, use = "na.or.complete")

# using pairwise-correlation, the result is
bart_spher(datamatrix, use = "pairwise.complete.obs")

Run the code above in your browser using DataLab