pingouin.bayesfactor_ttest

pingouin.bayesfactor_ttest(t, nx, ny=None, paired=False, tail='two-sided', r=0.707)[source]

Bayes Factor of a T-test.

Parameters
tfloat

T-value of the T-test

nxint

Sample size of first group

nyint

Sample size of second group (only needed in case of an independent two-sample T-test)

pairedboolean

Specify whether the two observations are related (i.e. repeated measures) or independent.

tailstring

Specify whether the test is ‘one-sided’ or ‘two-sided’. Can also be ‘greater’ or ‘less’ to specify the direction of the test.

Warning

One-sided Bayes Factor (BF) are simply obtained by doubling the two-sided BF, which is not exactly the same behavior as R or JASP. Be extra careful when interpretating one-sided BF, and if you can, always double-check your results.

rfloat

Cauchy scale factor. Smaller values of r (e.g. 0.5), may be appropriate when small effect sizes are expected a priori; larger values of r are appropriate when large effect sizes are expected (Rouder et al 2009). The default is \(\sqrt{2} / 2 \approx 0.707\).

Returns
bfstr

Scaled Jeffrey-Zellner-Siow (JZS) Bayes Factor (BF10). The Bayes Factor quantifies the evidence in favour of the alternative hypothesis.

See also

ttest

T-test

pairwise_ttest

Pairwise T-tests

bayesfactor_pearson

Bayes Factor of a correlation

bayesfactor_binom

Bayes Factor of a binomial test

Notes

Adapted from a Matlab code found at https://github.com/anne-urai/Tools/tree/master/stats/BayesFactors

If you would like to compute the Bayes Factor directly from the raw data instead of from the T-value, use the pingouin.ttest() function.

The JZS Bayes Factor is approximated using the formula described in ref [1]:

\[\text{BF}_{10} = \frac{\int_{0}^{\infty}(1 + Ngr^2)^{-1/2} (1 + \frac{t^2}{v(1 + Ngr^2)})^{-(v+1) / 2}(2\pi)^{-1/2}g^ {-3/2}e^{-1/2g}}{(1 + \frac{t^2}{v})^{-(v+1) / 2}}\]

where \(t\) is the T-value, \(v\) the degrees of freedom, \(N\) the sample size, \(r\) the Cauchy scale factor (= prior on effect size) and \(g\) is is an auxiliary variable that is integrated out numerically.

Results have been validated against JASP and the BayesFactor R package.

References

1(1,2)

Rouder, J.N., Speckman, P.L., Sun, D., Morey, R.D., Iverson, G., 2009. Bayesian t tests for accepting and rejecting the null hypothesis. Psychon. Bull. Rev. 16, 225–237. https://doi.org/10.3758/PBR.16.2.225

Examples

  1. Bayes Factor of an independent two-sample T-test

>>> from pingouin import bayesfactor_ttest
>>> bf = bayesfactor_ttest(3.5, 20, 20)
>>> print("Bayes Factor: %s (two-sample independent)" % bf)
Bayes Factor: 26.743 (two-sample independent)
  1. Bayes Factor of a paired two-sample T-test

>>> bf = bayesfactor_ttest(3.5, 20, 20, paired=True)
>>> print("Bayes Factor: %s (two-sample paired)" % bf)
Bayes Factor: 17.185 (two-sample paired)
  1. Bayes Factor of an one-sided one-sample T-test

>>> bf = bayesfactor_ttest(3.5, 20, tail='one-sided')
>>> print("Bayes Factor: %s (one-sample)" % bf)
Bayes Factor: 34.369 (one-sample)
  1. Now specify the direction of the test

>>> tval = -3.5
>>> bf_greater = bayesfactor_ttest(tval, 20, tail='greater')
>>> bf_less = bayesfactor_ttest(tval, 20, tail='less')
>>> print("BF10-greater: %s | BF10-less: %s" % (bf_greater, bf_less))
BF10-greater: 0.029 | BF10-less: 34.369