# skew: Calculate univariate or multivariate (Mardia's test) skew and... In psych: Procedures for Psychological, Psychometric, and Personality Research

## Description

Find the skew and kurtosis for each variable in a data.frame or matrix. Unlike skew and kurtosis in e1071, this calculates a different skew for each variable or column of a data.frame/matrix. mardia applies Mardia's tests for multivariate skew and kurtosis

## Usage

 ```1 2 3``` ```skew(x, na.rm = TRUE,type=3) kurtosi(x, na.rm = TRUE,type=3) mardia(x,na.rm = TRUE,plot=TRUE) ```

## Arguments

 `x` A data.frame or matrix `na.rm` how to treat missing data `type` See the discussion in describe

.

 `plot` Plot the expected normal distribution values versus the Mahalanobis distance of the subjects.

## Details

given a matrix or data.frame x, find the skew or kurtosis for each column (for skew and kurtosis) or the multivariate skew and kurtosis in the case of mardia.

As of version 1.2.3,when finding the skew and the kurtosis, there are three different options available. These match the choices available in skewness and kurtosis found in the e1071 package (see Joanes and Gill (1998) for the advantages of each one).

If we define m_r = [sum(X- mx)^r]/n then

Type 1 finds skewness and kurtosis by g_1 = m_3/(m_2)^{3/2} and g_2 = m_4/(m_2)^2 -3.

Type 2 is G1 = g1 * √{n *(n-1)}/(n-2) and G2 = (n-1)*[(n+1)g2 +6]/((n-2)(n-3)).

Type 3 is b1 = [(n-1)/n]^{3/2} m_3/m_2^{3/2} and b2 = [(n-1)/n]^{3/2} m_4/m_2^2).

For consistency with e1071 and with the Joanes and Gill, the types are now defined as above.

However, from revision 1.0.93 to 1.2.3, kurtosi by default gives an unbiased estimate of the kurtosis (DeCarlo, 1997). Prior versions used a different equation which produced a biased estimate. (See the kurtosis function in the e1071 package for the distinction between these two formulae. The default, type 1 gave what is called type 2 in e1071. The other is their type 3.) For comparison with previous releases, specifying type = 2 will give the old estimate. These type numbers are now changed.

## Value

 `skew` if input is a matrix or data.frame, skew is a vector of skews `kurtosi` if input is a matrix or data.frame, kurtosi is a vector of kurtosi `bp1` Mardia's bp1 estimate of multivariate skew `bp2` Mardia's bp2 estimate of multivariate kurtosis `skew` Mardia's skew statistic `small.skew` Mardia's small sample skew statistic `p.skew` Probability of skew `p.small` Probability of small.skew `kurtosis` Mardia's multivariate kurtosis statistic `p.kurtosis` Probability of kurtosis statistic `D` Mahalanobis distance of cases from centroid

## Note

The mean function supplies means for the columns of a data.frame, but the overall mean for a matrix. Mean will throw a warning for non-numeric data, but colMeans stops with non-numeric data. Thus, the function uses either mean (for data frames) or colMeans (for matrices). This is true for skew and kurtosi as well.

## Note

Probability values less than 10^-300 are set to 0.

William Revelle

## References

Joanes, D.N. and Gill, C.A (1998). Comparing measures of sample skewness and kurtosis. The Statistician, 47, 183-189.

L.DeCarlo. 1997) On the meaning and use of kurtosis, Psychological Methods, 2(3):292-307,

K.V. Mardia (1970). Measures of multivariate skewness and kurtosis with applications. Biometrika, 57(3):pp. 519-30, 1970.

`describe`, `describe.by`, mult.norm in QuantPsyc, Kurt in QuantPsyc

## Examples

 ```1 2 3 4 5 6 7 8 9``` ```round(skew(attitude),2) #type 3 (default) round(kurtosi(attitude),2) #type 3 (default) #for the differences between the three types of skew and kurtosis: round(skew(attitude,type=1),2) #type 1 round(skew(attitude,type=2),2) #type 2 mardia(attitude) x <- matrix(rnorm(1000),ncol=10) describe(x) mardia(x) ```

### Example output  ``` -0.36 -0.22  0.38 -0.05  0.20 -0.87  0.85
rating complaints privileges   learning     raises   critical    advance
-0.77      -0.68      -0.41      -1.22      -0.60       0.17       0.47
 -0.38 -0.23  0.40 -0.06  0.21 -0.91  0.89
 -0.40 -0.24  0.42 -0.06  0.22 -0.96  0.94
Call: mardia(x = attitude)

Mardia tests of multivariate skew and kurtosis
Use describe(x) the to get univariate tests
n.obs = 30   num.vars =  7
b1p =  20.09   skew =  100.45  with probability =  0.11
small sample skew =  113.23  with probability =  0.018
b2p =  61.91   kurtosis =  -0.27  with probability =  0.79    vars   n  mean   sd median trimmed  mad   min  max range  skew kurtosis
X1     1 100  0.20 1.09   0.12    0.14 1.17 -1.83 3.86  5.70  0.48     0.13
X2     2 100  0.01 1.08   0.05    0.01 1.13 -2.95 2.61  5.56 -0.02    -0.19
X3     3 100 -0.06 1.04  -0.14   -0.09 1.22 -2.73 2.30  5.03  0.11    -0.33
X4     4 100  0.22 1.06   0.17    0.20 0.94 -2.39 2.68  5.07  0.20    -0.22
X5     5 100  0.12 1.00   0.12    0.11 1.00 -2.61 2.85  5.46  0.03    -0.19
X6     6 100  0.08 0.88  -0.02    0.06 0.93 -2.26 2.51  4.78  0.16    -0.11
X7     7 100  0.11 0.99   0.14    0.14 1.06 -2.29 2.36  4.65 -0.21    -0.56
X8     8 100  0.03 0.95   0.13    0.06 0.94 -2.74 1.85  4.59 -0.29    -0.07
X9     9 100 -0.06 0.98   0.04   -0.03 1.07 -2.57 2.26  4.82 -0.28    -0.48
X10   10 100  0.07 1.05   0.13    0.07 1.21 -2.37 2.18  4.56 -0.06    -0.83
se
X1  0.11
X2  0.11
X3  0.10
X4  0.11
X5  0.10
X6  0.09
X7  0.10
X8  0.10
X9  0.10
X10 0.10
Call: mardia(x = x)

Mardia tests of multivariate skew and kurtosis
Use describe(x) the to get univariate tests
n.obs = 100   num.vars =  10
b1p =  11.6   skew =  193.36  with probability =  0.9
small sample skew =  200.24  with probability =  0.83
b2p =  109.51   kurtosis =  -3.39  with probability =  0.00071
```

psych documentation built on June 19, 2021, 1:06 a.m.