compute kurtosis of a univariate distribution

```
kurtosis(
x,
na.rm = FALSE,
method = c("excess", "moment", "fisher", "sample", "sample_excess"),
...
)
```

x

a numeric vector or object.

na.rm

a logical. Should missing values be removed?

method

a character string which specifies the method of computation.
These are either `"moment"`

, `"fisher"`

, or `"excess"`

. If
`"excess"`

is selected, then the value of the kurtosis is computed by
the `"moment"`

method and a value of 3 will be subtracted. The
`"moment"`

method is based on the definitions of kurtosis for
distributions; these forms should be used when resampling (bootstrap or
jackknife). The `"fisher"`

method correspond to the usual "unbiased"
definition of sample variance, although in the case of kurtosis exact
unbiasedness is not possible. The `"sample"`

method gives the sample
kurtosis of the distribution.

…

arguments to be passed.

This function was ported from the RMetrics package fUtilities to eliminate a
dependency on fUtilties being loaded every time. This function is identical
except for the addition of `checkData`

and additional labeling.

$$Kurtosis(moment) = \frac{1}{n}*\sum^{n}_{i=1}(\frac{r_i - \overline{r}}{\sigma_P})^4$$ $$Kurtosis(excess) = \frac{1}{n}*\sum^{n}_{i=1}(\frac{r_i - \overline{r}}{\sigma_P})^4 - 3$$ $$Kurtosis(sample) = \frac{n*(n+1)}{(n-1)*(n-2)*(n-3)}*\sum^{n}_{i=1}(\frac{r_i - \overline{r}}{\sigma_{S_P}})^4 $$ $$Kurtosis(fisher) = \frac{(n+1)*(n-1)}{(n-2)*(n-3)}*(\frac{\sum^{n}_{i=1}\frac{(r_i)^4}{n}}{(\sum^{n}_{i=1}(\frac{(r_i)^2}{n})^2} - \frac{3*(n-1)}{n+1})$$ $$Kurtosis(sample excess) = \frac{n*(n+1)}{(n-1)*(n-2)*(n-3)}*\sum^{n}_{i=1}(\frac{r_i - \overline{r}}{\sigma_{S_P}})^4 - \frac{3*(n-1)^2}{(n-2)*(n-3)}$$

where \(n\) is the number of return, \(\overline{r}\) is the mean of the return distribution, \(\sigma_P\) is its standard deviation and \(\sigma_{S_P}\) is its sample standard deviation

Carl Bacon, *Practical portfolio performance measurement
and attribution*, second edition 2008 p.84-85

# NOT RUN { ## mean - ## var - # Mean, Variance: r = rnorm(100) mean(r) var(r) ## kurtosis - kurtosis(r) data(managers) kurtosis(managers[,1:8]) data(portfolio_bacon) print(kurtosis(portfolio_bacon[,1], method="sample")) #expected 3.03 print(kurtosis(portfolio_bacon[,1], method="sample_excess")) #expected -0.41 print(kurtosis(managers['1996'], method="sample")) print(kurtosis(managers['1996',1], method="sample")) # }