Description Usage Arguments Details Value Author(s) References See Also Examples
Barnard's unconditional test for superiority applied to 2x2 contingency tables using Score or Wald statistics for the difference between two binomial proportions.
1 2 3  BarnardTest(x, y = NULL, alternative = c("two.sided", "less", "greater"),
method = c("csm", "csm approximate", "zpooled", "zunpooled",
"boschloo", "santner and snell"), fixed = 1, ...)

x 
a numeric vector or a twodimensional contingency table in matrix form. 
y 
a factor object; ignored if 
alternative 
a character string specifying the alternative
hypothesis, must be one of 
method 
Indicates the method for finding the more extreme tables: must be either 
fixed 
indicates which margins are fixed. 
... 
the dots are passed on to the 
There are two fundamentally different exact tests for comparing the equality of two binomial probabilities  Fisher's exact test (Fisher, 1925), and Barnard's exact test (Barnard, 1945). Fisher's exact test (Fisher, 1925) is the more popular of the two. In fact, Fisher was bitterly critical of Barnard's proposal for esoteric reasons that we will not go into here. For 2 x 2 tables, Barnard's test is more powerful than Fisher's, as Barnard noted in his 1945 paper, much to Fisher's chagrin. Anyway, perhaps due to its computational difficulty the Barnard's is not widely used. (Mehta et.al., 2003)
Unconditional exact tests can be performed for binomial or multinomial models. The binomial model assumes the row or column margins (but not both) are known in advance, while the multinomial model assumes only the total sample size is known beforehand. For the binomial model, the user needs to specify which margin is fixed (default is rows). Conditional tests (e.g., Fisher's exact test) have both row and column margins fixed, but this is a very uncommon design. (See Calhoun (2019) for more details.)
If x
is a matrix, it is taken as a twodimensional contingency
table, and hence its entries should be nonnegative integers.
Otherwise, both x
and y
must be vectors of the same
length. Incomplete cases are removed, the vectors are coerced into
factor objects, and the contingency table is computed from these.
For a 2x2 contingency table, such as X=[n_1,n_2;n_3,n_4], the normalized difference in proportions between the two categories, given in each column, can be written with pooled variance (Score statistic) as
T(X)=\frac{\hat{p}_2\hat{p}_1}{√{\hat{p}(1\hat{p})(\frac{1}{c_1}+\frac{1}{c_2})}},
where \hat{p}=(n_1+n_3)/(n_1+n_2+n_3+n_4), \hat{p}_2=n_2/(n_2+n_4), \hat{p}_1=n_1/(n_1+n_3), c_1=n_1+n_3 and c_2=n_2+n_4. Alternatively, with unpooled variance (Wald statistic), the difference in proportions can we written as
T(X)=\frac{\hat{p}_2\hat{p}_1}{√{\frac{\hat{p}_1(1\hat{p}_1)}{c_1}+\frac{\hat{p}_2(1\hat{p}_2)}{c_2}}}.
The probability of observing X is
P(X)=\frac{c_1!c_2!}{n_1!n_2!n_3!n_4!}p^{n_1+n_2}(1p)^{n_3+n_4},
where p is the unknown nuisance parameter.
Barnard's test considers all tables with category sizes c_1 and c_2 for a given p. The pvalue is the sum of probabilities of the tables having a score in the rejection region, e.g. having significantly large difference in proportions for a twosided test. The pvalue of the test is the maximum pvalue calculated over all p between 0 and 1.
A list with class "htest"
containing the following components:
p.value 
the pvalue of the test. 
estimate 
an estimate of the nuisance parameter where the pvalue is maximized. 
alternative 
a character string describing the alternative hypothesis. 
method 
the character string

data.name 
a character string giving the names of the data. 
statistic.table 
The contingency tables considered in the analysis represented by 
nuisance.matrix 
Nuisance parameters, 
Peter Calhoun <calhoun.peter@gmail.com>, Andri Signorell <andri@signorell.net> (interface)
Barnard, G.A. (1945) A new test for 2x2 tables. Nature, 156:177.
Barnard, G.A. (1947) Significance tests for 2x2 tables. Biometrika, 34:123138.
Suissa, S. and Shuster, J. J. (1985), Exact Unconditional Sample Sizes for the 2x2 Binomial Trial, Journal of the Royal Statistical Society, Ser. A, 148, 317327.
Cardillo G. (2009) MyBarnard: a very compact routine for Barnard's exact test on 2x2 matrix. https://ch.mathworks.com/matlabcentral/fileexchange/25760mybarnard
Galili T. (2010) https://www.rstatistics.com/2010/02/barnardsexacttestapowerfulalternativeforfishersexacttestimplementedinr/
Lin C.Y., Yang M.C. (2009) Improved pvalue tests for comparing two independent binomial proportions. Communications in StatisticsSimulation and Computation, 38(1):7891.
TrujilloOrtiz, A., R. HernandezWalls, A. CastroPerez, L. RodriguezCardozo N.A. RamosDelgado and R. GarciaSanchez. (2004). Barnardextest:Barnard's Exact Probability Test. A MATLAB file. [WWW document]. https://www.mathworks.com/
Mehta, C.R., Senchaudhuri, P. (2003) Conditional versus unconditional exact tests for comparing two binomials. https://www.researchgate.net/publication/242179503_Conditional_versus_Unconditional_Exact_Tests_for_Comparing_Two_Binomials
Calhoun, P. (2019) Exact: Unconditional Exact Test. R package version
2.0.
https://CRAN.Rproject.org/package=Exact
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19  tab < as.table(matrix(c(8, 14, 1, 3), nrow=2,
dimnames=list(treat=c("I","II"), out=c("I","II"))))
BarnardTest(tab)
# Plotting the search for the nuisance parameter for a onesided test
bt < BarnardTest(tab)
# Plotting the tables included in the pvalue
ttab < as.table(matrix(c(40, 14, 10, 30), nrow=2,
dimnames=list(treat=c("I","II"), out=c("I","II"))))
bt < BarnardTest(ttab)
bts < bt$statistic.table
# Mehta et. al (2003)
tab < as.table(matrix(c(7, 12, 8, 3), nrow=2,
dimnames=list(treat=c("vaccine","placebo"),
infection=c("yes","no"))))
BarnardTest(tab, alternative="less")

Barnards Unconditional 2x2test
data: tab
Score statistic = 0.43944, pvalue = 0.7858
alternative hypothesis: two.sided
sample estimates:
Nuisance parameter
0.102
Barnards Unconditional 2x2test
data: tab
Score statistic = 1.8943, pvalue = 0.03408
alternative hypothesis: less
sample estimates:
Nuisance parameter
0.665
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.