Accelerating the pace of engineering and science

• Trials

# jbtest

Jarque-Bera test

## Description

example

h = jbtest(x) returns a test decision for the null hypothesis that the data in vector x comes from a normal distribution with an unknown mean and variance, using the Jarque-Bera test. The alternative hypothesis is that it does not come from such a distribution. The result h is 1 if the test rejects the null hypothesis at the 5% significance level, and 0 otherwise.

example

h = jbtest(x,alpha) returns a test decision for the null hypothesis at the significance level specified by alpha.

example

h = jbtest(x,alpha,mctol) returns a test decision based on a p-value computed using a Monte Carlo simulation with a maximum Monte Carlo standard error less than or equal to mctol.

example

[h,p] = jbtest(___) also returns the p-value p of the hypothesis test, using any of the input arguments from the previous syntaxes.

example

[h,p,jbstat,critval] = jbtest(___) also returns the test statistic jbstatand the critical value critval for the test.

## Examples

expand all

### Test for a Normal Distribution

`load carbig;`

Test the null hypothesis that car mileage, in miles per gallon (MPG), follows a normal distribution across different makes of cars.

`h = jbtest(MPG)`
```h =

1```

The returned value of h = 1 indicates that jbtest rejects the null hypothesis at the default 5% significance level.

### Test the Hypothesis at a Different Significance Level

`load carbig;`

Test the null hypothesis that car mileage in miles per gallon (MPG) follows a normal distribution across different makes of cars at the 1% significance level.

`[h,p] = jbtest(MPG,0.01)`
```h =

1

p =

0.0022```

The returned value of h = 1, and the returned p-value less than α = 0.01 indicate that jbtest rejects the null hypothesis.

### Test for a Normal Distribution Using Monte Carlo Simulation

`load carbig;`

Test the null hypothesis that car mileage, in miles per gallon (MPG), follows a normal distribution across different makes of cars. Use a Monte Carlo simulation to obtain an exact p-value.

`[h,p,jbstat,critval] = jbtest(MPG,[],0.0001)`
```h =

1

p =

0.0022

jbstat =

18.2275

critval =

5.8461```

The returned value of h = 1 indicates that jbtest rejects the null hypothesis at the default 5% significance level. Additionally, the test statistic, jbstat, is larger than the critical value, critval, which indicates rejection of the null hypothesis.

## Input Arguments

expand all

### x — Sample datavector

Sample data for the hypothesis test, specified as a vector. jbtest treats NaN values in x as missing values and ignores them.

Data Types: single | double

### alpha — Significance level0.05 (default) | scalar value in the range (0,1)

Significance level of the hypothesis test, specified as a scalar value in the range (0,1). If alpha is in the range [0.001,0.50], and if the sample size is less than or equal to 2000, jbtest looks up the critical value for the test in a table of precomputed values. To conduct the test at a significance level outside of these specifications, use mctol.

Example: 0.01

Data Types: single | double

### mctol — Maximum Monte Carlo standard errornonnegative scalar value

Maximum Monte Carlo standard error for the p-value, p, specified as a nonnegative scalar value. If you specify a value for mctol, jbtest computes a Monte Carlo approximation for p directly, rather than interpolating into a table of precomputed values. jbtest chooses the number of Monte Carlo replications large enough to make the Monte Carlo standard error for p less than mctol.

If you specify a value for mctol, you must also specify a value for alpha. You can specify alpha as [] to use the default value of 0.05.

Example: 0.0001

Data Types: single | double

## Output Arguments

expand all

### h — Hypothesis test result1 | 0

Hypothesis test result, returned as a logical value.

• If h = 1, this indicates the rejection of the null hypothesis at the alpha significance level.

• If h = 0, this indicates a failure to reject the null hypothesis at the alpha significance level.

### p — p-valuescalar value in the range (0,1)

p-value of the test, returned as a scalar value in the range (0,1). p is the probability of observing a test statistic as extreme as, or more extreme than, the observed value under the null hypothesis. Small values of p cast doubt on the validity of the null hypothesis.

jbtest warns when p is not found within the tabulated range of [0.001,0.50], and returns either the smallest or largest tabulated value. In this case, you can use mctol to compute a more accurate p-value.

### jbstat — Test statisticnonnegative scalar value

Test statistic for the Jarque-Bera test, returned as a nonnegative scalar value.

### critval — Critical valuenonnegative scalar value

Critical value for the Jarque-Bera test at the alpha significance level, returned as a nonnegative scalar value. If alpha is in the range [0.001,0.50], and if the sample size is less than or equal to 2000, jbtest looks up the critical value for the test in a table of precomputed values. If you use mctol, jbtest determines the critical value of the test using a Monte Carlo simulation. The null hypothesis is rejected when jbstat > critval.

expand all

### Jarque-Bera Test

The Jarque-Bera test is a two-sided goodness-of-fit test suitable when a fully specified null distribution is unknown and its parameters must be estimated.

The test is specifically designed for alternatives in the Pearson system of distributions. The test statistic is

where n is the sample size, s is the sample skewness, and k is the sample kurtosis. For large sample sizes, the test statistic has a chi-square distribution with two degrees of freedom.

### Monte Carlo Standard Error

The Monte Carlo standard error is the error due to simulating the p-value.

The Monte Carlo standard error is calculated as

where is the estimated p-value of the hypothesis test, and mcreps is the number of Monte Carlo replications performed. jbtest chooses the number of Monte Carlo replications, mcreps, large enough to make the Monte Carlo standard error for less than the value specified for mctol.

### Algorithms

Jarque-Bera tests often use the chi-square distribution to estimate critical values for large samples, deferring to the Lilliefors test (see lillietest) for small samples. jbtest, by contrast, uses a table of critical values computed using Monte Carlo simulation for sample sizes less than 2000 and significance levels from 0.001 to 0.50. Critical values for a test are computed by interpolating into the table, using the analytic chi-square approximation only when extrapolating for larger sample sizes.

## References

[1] Jarque, C. M., and A. K. Bera. "A Test for Normality of Observations and Regression Residuals." International Statistical Review. Vol. 55, No. 2, 1987, pp. 163–172.

[2] Deb, P., and M. Sefton. "The Distribution of a Lagrange Multiplier Test of Normality." Economics Letters. Vol. 51, 1996, pp. 123–130. This paper proposed a Monte Carlo simulation for determining the distribution of the test statistic. The results of this function are based on an independent Monte Carlo simulation, not the results in this paper.