version 1.12.0.0 (2.65 KB) by
Anton

Tests whether given proportions come from the given binomial distribution.

test_binomial_proportions tests whether all given proportions come from the same (specified) binomial distribution. The function also detects proportions that do not come from this distribution.

INPUT

- n - m-element vector, containing number of observations for each proportion;

- k - m-element vector, containing number of successes for each proportion;

- p0 - scalar, probability of successes for the assumed binomial distribution;

- alphaValue - significance level (by default alphaValue = 0.05);

- useExactTest - whether exact or approximate test is used for overall testing. Exact test is more effective but also slower (by default useExactTest = false)

OUTPUT

- nullHypothesis - true if all proportions come from the assumed binomial distribution;

- outlierIndex - indices of proportions that do not come from the assumed distribution;

OUTPUT (NOTE)

The test may indicate that the data as a whole does not come from the given distribution (nullHypothesis = 0), but there are no clear outliers (outlierIndex = []). This is the case when success rates for many proportions have moderate deviation from the assumed success rate.

Example 1. Proportions 7/40, 36/60, 33/50 have low probability to be obtained from a binomial distribution with p=0.5, and 7/40 clearly is an outlier:

p0 = 0.5;

alphaValue = 0.05;

k = [7,36,33];

n = [40,60,50];

[nullHypothesis, outlierIndex] = test_binomial_proportions(n, k, p0, alphaValue, true);

% Outcome nullHypothesis = 0, outlierIndex = 1

Example 2. Among proportions 14/40, 36/60, 33/50 there are no clear outliers, but they also have low probability to be obtained from given distribution:

k = [14,36,33];

n = [40,60,50];

[nullHypothesis, outlierIndex] = test_binomial_proportions(n, k, p0, alphaValue, true);

% Outcome nullHypothesis = 0, outlierIndex = Empty matrix: 1-by-0

CITING THE CODE

[1] Krishnamoorthy, K., Thomson, J. and Cai, Y., 2004. An exact method of testing equality of several binomial proportions to a specified standard. Computational statistics & data analysis, 45(4), pp.697-707.

[2] Unakafov, A.M., 2017. An exact test for equality of several binomial proportions to a specified standard, MATLAB Central File Exchange. Retrieved Month Day, Year.

EXAMPLE OF USE

p0 = 0.5; % assumed probability of successes is p0 = 0.5

alphaValue = 0.05;

m = 10; % we will have 10 observation samples

nRun = 10; % repeat the test 10 times

nullHypothesis = zeros(1,nRun);

outlierIndex = cell(1, nRun);

for i = 1:nRun

n = 20 + randi(80, m, 1); % generate observation samples of random size from 20 to 100

k = binornd(n, p0); % for each sample generate probabilities of successes

[nullHypothesis(i), outlierIndex{i}] = test_binomial_proportions(n, k, p0, alphaValue, true);

end

% Since proportions indeed come from binomial random generator with probability of

% successes p0, in most cases nullHypothesis should be 1 and outlierIndex -- empty

Anton (2021). An exact test for equality of several binomial proportions to a specified standard (https://www.mathworks.com/matlabcentral/fileexchange/64987-an-exact-test-for-equality-of-several-binomial-proportions-to-a-specified-standard), MATLAB Central File Exchange. Retrieved .

Created with
R2016a

Compatible with any release

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!Create scripts with code, output, and formatted text in a single executable document.