How to compute raw and central moments using R with examples

Moments using R

In this tutorial, you will learn about how to compute raw and central moments of a data set using R.

Before we discuss R functions to compute moments, let us see why we need moments and how moments are defined.

Why we need to find moments of a data set?

Moments of a data set are very useful to describe the nature of a data set.

Moments are useful in describing

• center of a data set,
• variation in a data set,
• skewness of a data set, and
• kurtosis of a data set.

Raw moments of a data set

Let $x_1, x_2,\cdots, x_n$ be $n$ observations. Then the $r^{th}$ raw moment is denoted by $\mu_r^\prime$ and is given by

 \begin{aligned} \mu_r^\prime & =\frac{1}{n}\sum_{i=1}^{n}x_i^r,\\ & \quad r = 0,1,2,\cdots. \end{aligned}

• $\mu_0^\prime=0$ (always).
• $\mu_1^\prime=\overline{x}$ mean of a data set.

Central moments of a data set

Let $x_1, x_2,\cdots, x_n$ be $n$ observations.The sample mean of $X$ is denoted by $\overline{x}$ and is given by

 $$\begin{eqnarray*} \overline{x}& =\frac{1}{n}\sum_{i=1}^{n}x_i \end{eqnarray*}$$

Then the $r^{th}$ central moment is denoted by $\mu_r$ and is given by

 $$\begin{eqnarray*} \mu_r & =\frac{1}{n}\sum_{i=1}^{n}(x_i-\overline{x})^r,\\ & \quad r = 0,1,2,\cdots. \end{eqnarray*}$$

• $\mu_0=0$ (always).
• $\mu_1=1$ (always).
• $\mu_2=Var(X)$ (variance of $X$).

How to find raw and moments of a data set using R?

The base package in R doesn't have any function to compute the moments, skewness and kurtosis of a data set. The moment package contains functions to compute raw moments, central moments, skewness and kurtosis.

To get moments of a data set, we need to install the moments package if not installed. Once it is installed we can load the moments package using library() function.

## load the package
library(moments)

The raw moments and central moments can be calculated using all.moments() function from moments package.

The syntax to compute raw and central moments of a data set using R is

all.moments(x,order.max=2,central=FALSE)

where

• x : a numeric vector of data
• order.max : the maximum order of the moments to be computed (default value is 2).
• central : a logical value (FALSE for raw moments or TRUE for central moments)

Numerical Problem for moments calculations

To understand the use of all.moments() function, let us take the following numerical problem.

Raw and Central Moments Example

The hourly earning (in dollars) of sample of 7 workers are : $26, 21, 24, 22, 25, 24, 23$.

(a) Compute raw moments.
(b) Compute central moments.
(c) Convert raw moments to central moments.
(d) Convert central moments to raw moments.

How to use all.moments() function to compute raw moments in R?

Let us define a data set as

## define a vector of earnings
hourly.earning <-c(26, 21, 24, 22, 25, 24, 23)
# display the vector
hourly.earning
[1] 26 21 24 22 25 24 23

(a) Raw moments of hourly earnings:

## Raw moments
raw.mom <- all.moments(hourly.earning,order.max = 4)
## display the result
raw.mom
[1]      1.00000     23.57143    558.14286  13275.00000 317104.42857

It returns the value as vector. The first value is the $0^{th}$ order raw moment $\mu_0^\prime$ (which is always 1), the second value is the $1^{st}$ order raw moment $\mu_1^\prime$ (which is the mean), the third value is the $2^{nd}$ order raw moment $\mu_2^\prime$, the fourth value is the $3^{rd}$ order raw moment $\mu_3^\prime$ and the fifth value is the $4^{th}$ order raw moment $\mu_4^\prime$.

The Raw moments of hourly earnings are as follows:

 \begin{aligned} \mu_0^\prime &= 1\\ \mu_1^\prime & = 23.5714286\\ \mu_2^\prime & = 558.1428571\\ \mu_3^\prime & = 1.3275\times 10^{4}\\ \mu_4^\prime & = 3.1710443\times 10^{5} \end{aligned}

How to use all.moments() function to compute central moments in R?

(b) Central moments of hourly earnings:

## Central moments
cent.mom <- all.moments(hourly.earning,order.max = 4,central = TRUE)
## display the result
cent.mom
[1]  1.000000e+00 -1.522592e-15  2.530612e+00 -5.247813e-01  1.270637e+01

It returns the value as vector. The first value is the $0^{th}$ order central moment $\mu_0^\prime$ (which is always 1), the second value is the $1^{st}$ order raw moment $\mu_1^\prime$ (which is the mean), the third value is the $2^{nd}$ order raw moment $\mu_2^\prime$, the fourth value is the $3^{rd}$ order raw moment $\mu_3^\prime$ and the fifth value is the $4^{th}$ order raw moment $\mu_4^\prime$.

The Central moments of hourly earnings are as follows:

 \begin{aligned} \mu_0 &= 1\\ \mu_1 & = -1.5225916\times 10^{-15}\\ \mu_2 & = 2.5306122\\ \mu_3 & = -0.5247813\\ \mu_4 & = 12.7063723 \end{aligned}

How to convert raw moments to central moments?

The first four central moments in terms of raw moments are

 \begin{aligned} \mu_1 &= 0\\ \mu_2 &= \mu_2^\prime - {\mu_1^\prime}^2\\ \mu_3 &= \mu_3^\prime - 3\mu_2^\prime \mu_1^\prime + 2 {\mu_1^\prime}^3\\ \mu_4 &= \mu_4^\prime - 4\mu_3^\prime \mu_1^\prime + 6 \mu_2^\prime{\mu_1^\prime}^2-3{\mu_1^\prime}^4. \end{aligned}

(c) Raw moments to central moments of hourly earnings:

Given the raw moments of a data set, the function raw2central() converts raw moments to central moments of a data set.

## Raw Moments to Central Moments
R2C<-raw2central(raw.mom)
## display the result
R2C
[1]  1.0000000  0.0000000  2.5306122 -0.5247813 12.7063723

The Central moments of hourly earnings from raw moments are as follows:

 \begin{aligned} \mu_0 &= 1\\ \mu_1 & = 0\\ \mu_2 & = 2.5306122\\ \mu_3 & = -0.5247813\\ \mu_4 & = 12.7063723 \end{aligned}

How to convert central moments to raw moments?

The first four raw in terms of central moments are

 \begin{aligned} \mu_1^\prime &= \overline{x}\\ \mu_2^\prime &= \mu_2 + {\mu_1^\prime}^2\\ \mu_3^\prime &= \mu_3 + 3\mu_2 \mu_1^\prime + {\mu_1^\prime}^3\\ \mu_4^\prime &= \mu_4 + 4\mu_3 \mu_1^\prime + 6 \mu_2{\mu_1^\prime}^2+{\mu_1^\prime}^4. \end{aligned}

(d) Central moments to raw moments of hourly earnings:

Given the central moments of a data set, the function central2raw() converts central moments to raw moments of a data set.

## Compute mean of data set
eta <- mean(hourly.earning)
## display the result
eta
[1] 23.57143
## Central Moments to Raw Moments
C2R<-central2raw(cent.mom,eta=eta)
## display the result
C2R
[1]      1.00000     23.57143    558.14286  13275.00000 317104.42857

The Raw moments of hourly earnings from central moments are as follows:

 \begin{aligned} \mu_0^\prime &= 1\\ \mu_1^\prime & = 23.5714286\\ \mu_2^\prime & = 558.1428571\\ \mu_3^\prime & = 1.3275\times 10^{4}\\ \mu_4^\prime & = 3.1710443\times 10^{5} \end{aligned}

Endnote

In this tutorial, you learned about how to compute the raw moments, central moments of a data set using R. You also learned about how to convert raw moments to central moments and central moments to raw moments using R programming.