Cumulative Skewness

code
rtip
Author

Steven P. Sanderson II, MPH

Published

October 31, 2022

Function

In this post we will make a function `cum_skewness()` that will generate a vector output of the cumulative skewness of some given vector. The full function call is simply:

``cum_skewness(.x)``

It only takes in a numeric vector, we are not going to write type checks in the function as it won’t be necessary for this post.

``````cum_skewness <- function(.x){
skewness <- function(.x){
sqrt(length(.x)) * sum((.x - mean(.x))^3 / (sum((.x))^2)^(3/2))
}
sapply(seq_along(.x), function(k, z) skewness(z[1:k]), z = .x)
}``````

Data

We are going to use the `mtcars` data set and use the `mpg` column for this example. Let’s set `x` equal to `mtcars\$mpg`

``x <- mtcars\$mpg``

Example

Now let’s see the function in use.

``cum_skewness(x)``
`````` [1]  0.000000e+00  0.000000e+00  8.249747e-06  5.049149e-06 -1.113787e-05
[6] -8.569220e-06 -1.134377e-04 -8.440629e-05 -8.280585e-05 -5.457236e-05
[11] -3.209937e-05 -1.758922e-05 -5.567456e-06  1.436318e-07 -6.299325e-05
[16] -8.605705e-05 -5.869380e-05  1.594511e-04  1.675837e-04  2.221143e-04
[21]  1.855217e-04  1.936299e-04  1.998527e-04  2.082240e-04  1.897575e-04
[26]  1.505425e-04  1.180971e-04  9.974055e-05  1.048461e-04  9.801797e-05
[31]  1.024713e-04  9.107160e-05``````

Let’s plot it out.

``plot(cum_skewness(x), type = "l")``