tests whether the variance of data is 1.


tests whether the variances of data1, data2, are equal.


tests a dispersion measure against .


returns the value of "property".

Details and Options

  • BrownForsytheTest tests the null hypothesis against the alternative hypothesis :
  • data
    {data1,data2,}not all equal
  • where σi2 is the population variance for datai.
  • By default, a probability value or -value is returned.
  • A small -value suggests that it is unlikely that is true.
  • The data in dspec must be univariate {x1,x2,}.
  • The argument can be any positive real number. The default value of is 1 if not specified, and ignored if the number of groups in dspec is more than 2.
  • The BrownForsytheTest assumes that the data is normally distributed.
  • The BrownForsytheTest is less sensitive to the assumption of normality than the LeveneTest.
  • BrownForsytheTest[data,,"HypothesisTestData"] returns a HypothesisTestData object htd that can be used to extract additional test results and properties using the form htd["property"].
  • BrownForsytheTest[data,,"property"] can be used to directly give the value of "property".
  • Properties related to the reporting of test results include:
  • "DegreesOfFreedom"the degrees of freedom used in a test
    "PValue"list of -values
    "PValueTable"formatted table of -values
    "ShortTestConclusion"a short description of the conclusion of a test
    "TestConclusion"a description of the conclusion of a test
    "TestData"list of pairs of test statistics and -values
    "TestDataTable"formatted table of -values and test statistics
    "TestStatistic"list of test statistics
    "TestStatisticTable"formatted table of test statistics
  • When one sample of size is given, the BrownForsytheTest is equivalent to the FisherRatioTest.
  • For the -sample case, the BrownForsytheTest is a modification of the LeveneTest that replaces the Mean in Abs[dataij-Mean[dataij]] with a function fn. The function fn is generally chosen to be Median, but TrimmedMean[#,1/10]& is used if the data is heavy tailed.
  • The following options can be used:
  • AlternativeHypothesis "Unequal"the inequality for the alternative hypothesis
    SignificanceLevel 0.05cutoff for diagnostics and reporting
    VerifyTestAssumptions Automaticset which diagnostic tests to run
  • For the BrownForsytheTest, a cutoff is chosen such that is rejected only if . The value of used for the "TestConclusion" and "ShortTestConclusion" properties is controlled by the SignificanceLevel option. This value is also used in diagnostic tests of assumptions, including tests for normality and symmetry. By default, is set to 0.05.
  • Named settings for VerifyTestAssumptions in BrownForsytheTest include:
  • "Normality"verify that all data is normally distributed


open allclose all

Basic Examples  (2)

Test variances from two populations for equality:

Create a HypothesisTestData object for further property extraction:

Properties of the test:

Test the ratio of the variances of two populations against a particular value:

Perform the test with alternative hypothesis :

Scope  (10)

Testing  (8)

Test whether the variance of a population is 1:

The -value is uniformly distributed in [0,1] under :

The -value is typically small when is false:

Compare the variance of a population to a particular value:

Compare the variances of two populations:

The -value is uniformly distributed in [0,1] under :

The histogram of a sample of -values of the BrownForsythe test:

The -value is typically small when the variances are not equal:

Test whether the ratio of the variances of two populations is a particular value:

The following forms are equivalent:

The order of the datasets should be considered when determining :

Test whether the variances of three populations are identical:

Create a HypothesisTestData object for repeated property extraction:

The properties available for extraction:

Extract some properties from a HypothesisTestData object:

The -value, test statistic, and degrees of freedom:

Extract any number of properties simultaneously:

The -value, test statistic, and degrees of freedom:

Reporting  (2)

Tabulate test results:

The values from the table can be extracted using "TestData":

Tabulate -values or test statistics:

The -value from the table:

The test statistic from the table:

Options  (8)

AlternativeHypothesis  (3)

A two-sided test is performed by default:

Test versus :

Perform a two-sided test or a one-sided alternative:

Test versus :

Test versus :

Test versus :

Perform tests with one-sided alternatives when a null value is given:

Test versus :

Test versus :

SignificanceLevel  (2)

Set the significance level for diagnostic tests:

By default, 0.05 is used:

The significance level is also used for "TestConclusion" and "ShortTestConclusion":

VerifyTestAssumptions  (3)

Diagnostics can be controlled as a group using All or None:

Verify all assumptions:

Check no assumptions:

Diagnostics can be controlled independently:

Check for normality:

Set the assumption value to True:

It is often useful to bypass diagnostic tests for simulation purposes:

The assumptions of the test hold by design, so a great deal of time can be saved:

The results are identical:

Applications  (1)

Use the BrownForsythe test to determine whether approximate degrees of freedom are needed for a -test for equal means:

A two-sample -test:

If the two samples have equal variances, the following degrees of freedom can be used; otherwise, a Satterthwaite approximation is needed:

The BrownForsythe test suggests the variances are not equal:

At the 0.05 level, the choice of degrees of freedom affects the test conclusion:

TTest makes the determination to use the Satterthwaite approximation automatically:

Properties & Relations  (8)

The BrownForsythe test is equivalent to FisherRatioTest when a single dataset is given:

Given a single dataset with length , the test statistic follows a ChiSquareDistribution[n-1] under :

The maximum-likelihood estimate of the degrees of freedom is near :

Given two datasets with lengths n and m, the test statistic follows an FRatioDistribution[1,n+m-2] under :

The BrownForsythe test is less sensitive to the assumption of normality than the FisherRatioTest given two datasets:

The Fisher ratio test tends to underestimate the -value and commit more Type I errors:

The two-sample test statistic:

Typically, the Median is used as a standardizing function:

For data that is found to be heavy-tailed, the 10% TrimmedMean is used:

LeveneTest is equivalent, but always uses Mean to standardize:

The three-sample test statistic:

The BrownForsythe test works on the values only when the input is a TimeSeries:

The BrownForsythe test works with all the values together when the input is a TemporalData:

Test all the values only:

Test whether the variances of the two paths are equal:

Possible Issues  (3)

The BrownForsythe test assumes the data is drawn from a NormalDistribution:

Use ConoverTest or SiegelTukeyTest for non-normal data:

The BrownForsythe test ignores the argument when there are more than 2 groups:

When there are more than 2 groups in the data, the BrownForsythe test only allows the two-sided test for the alternative hypothesis:

Neat Examples  (1)

Compute the statistic when the null hypothesis is true:

The test statistic given a particular alternative:

Compare the distributions of the test statistics:

Wolfram Research (2010), BrownForsytheTest, Wolfram Language function, (updated 2017).


Wolfram Research (2010), BrownForsytheTest, Wolfram Language function, (updated 2017).


Wolfram Language. 2010. "BrownForsytheTest." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2017.


Wolfram Language. (2010). BrownForsytheTest. Wolfram Language & System Documentation Center. Retrieved from


@misc{reference.wolfram_2024_brownforsythetest, author="Wolfram Research", title="{BrownForsytheTest}", year="2017", howpublished="\url{}", note=[Accessed: 25-June-2024 ]}


@online{reference.wolfram_2024_brownforsythetest, organization={Wolfram Research}, title={BrownForsytheTest}, year={2017}, url={}, note=[Accessed: 25-June-2024 ]}