Performs proportion tests to either evaluate the homogeneity of proportions (probabilities of success) in several groups or to test that the proportions are equal to certain given values.
Wrappers around the R base function prop.test()
but have
the advantage of performing pairwise and rowwise ztest of two proportions,
the posthoc tests following a significant chisquare test of homogeneity
for 2xc and rx2 contingency tables.
prop_test( x, n, p = NULL, alternative = c("two.sided", "less", "greater"), correct = TRUE, conf.level = 0.95, detailed = FALSE ) pairwise_prop_test(xtab, p.adjust.method = "holm", ...) row_wise_prop_test(xtab, p.adjust.method = "holm", detailed = FALSE, ...)
x  a vector of counts of successes, a onedimensional table with two entries, or a twodimensional table (or matrix) with 2 columns, giving the counts of successes and failures, respectively. 

n  a vector of counts of trials; ignored if 
p  a vector of probabilities of success. The length of

alternative  a character string specifying the alternative
hypothesis, must be one of 
correct  a logical indicating whether Yates' continuity correction should be applied where possible. 
conf.level  confidence level of the returned confidence interval. Must be a single number between 0 and 1. Only used when testing the null that a single proportion equals a given value, or that two proportions are equal; ignored otherwise. 
detailed  logical value. Default is FALSE. If TRUE, a detailed result is shown. 
xtab  a crosstabulation (or contingency table) with two columns and multiple rows (rx2 design). The columns give the counts of successes and failures respectively. 
p.adjust.method  method to adjust p values for multiple comparisons. Used when pairwise comparisons are performed. Allowed values include "holm", "hochberg", "hommel", "bonferroni", "BH", "BY", "fdr", "none". If you don't want to adjust the p value (not recommended), use p.adjust.method = "none". 
...  Other arguments passed to the function 
return a data frame with some the following columns:
n
: the number of participants.
group
: the categories in the rowwise proportion tests.
statistic
: the value of Pearson's chisquared test statistic.
df
: the degrees of freedom of the approximate chisquared
distribution of the test statistic.
p
: pvalue.
p.adj
: the adjusted pvalue.
method
: the used
statistical test.
p.signif, p.adj.signif
: the significance
level of pvalues and adjusted pvalues, respectively.
estimate
: a vector with the sample proportions x/n.
estimate1, estimate2
: the proportion in each of the two populations.
alternative
: a character string describing the alternative
hypothesis.
conf.low,conf.high
: Lower and upper bound on a
confidence interval. a confidence interval for the true proportion if there
is one group, or for the difference in proportions if there are 2 groups and
p is not given, or NULL otherwise. In the cases where it is not NULL, the
returned confidence interval has an asymptotic confidence level as specified
by conf.level, and is appropriate to the specified alternative hypothesis.
The returned object has an attribute called args, which is a list holding the test arguments.
prop_test
: performs onesample and twosamples ztest of
proportions. Wrapper around the function prop.test()
.
pairwise_prop_test
: pairwise comparisons between proportions, a posthoc
tests following a significant chisquare test of homogeneity for 2xc
design. Wrapper around pairwise.prop.test()
row_wise_prop_test
: performs rowwise ztest of two proportions, a posthoc tests following a significant chisquare test
of homogeneity for rx2 contingency table. The ztest of two proportions is calculated for each category (row).
# Comparing an observed proportion to an expected proportion #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% prop_test(x = 95, n = 160, p = 0.5, detailed = TRUE)#> # A tibble: 1 x 11 #> n n1 estimate statistic p df conf.low conf.high method #> * <dbl> <dbl> <dbl> <dbl> <dbl> <int> <dbl> <dbl> <chr> #> 1 160 95 0.594 5.26 0.0219 1 0.513 0.670 Prop … #> # … with 2 more variables: alternative <chr>, p.signif <chr># Comparing two proportions #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # Data: frequencies of smokers between two groups xtab < as.table(rbind(c(490, 10), c(400, 100))) dimnames(xtab) < list( group = c("grp1", "grp2"), smoker = c("yes", "no") ) xtab#> smoker #> group yes no #> grp1 490 10 #> grp2 400 100# compare the proportion of smokers prop_test(xtab, detailed = TRUE)#> # A tibble: 1 x 13 #> n n1 n2 estimate1 estimate2 statistic p df conf.low #> * <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> #> 1 1000 500 500 0.98 0.8 80.9 2.36e19 1 0.141 #> # … with 4 more variables: conf.high <dbl>, method <chr>, alternative <chr>, #> # p.signif <chr># Homogeneity of proportions between groups #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # H0: the proportion of smokers is similar in the four groups # Ha: this proportion is different in at least one of the populations. # # Data preparation grp.size < c( 106, 113, 156, 102 ) smokers < c( 50, 100, 139, 80 ) no.smokers < grp.size  smokers xtab < as.table(rbind( smokers, no.smokers )) dimnames(xtab) < list( Smokers = c("Yes", "No"), Groups = c("grp1", "grp2", "grp3", "grp4") ) xtab#> Groups #> Smokers grp1 grp2 grp3 grp4 #> Yes 50 100 139 80 #> No 56 13 17 22# Compare the proportions of smokers between groups prop_test(xtab, detailed = TRUE)#> # A tibble: 1 x 15 #> n n1 n2 n3 n4 estimate1 estimate2 estimate3 estimate4 #> * <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> #> 1 477 106 113 156 102 0.472 0.885 0.891 0.784 #> # … with 6 more variables: statistic <dbl>, p <dbl>, df <dbl>, method <chr>, #> # alternative <chr>, p.signif <chr># Pairwise comparison between groups pairwise_prop_test(xtab)#> # A tibble: 6 x 5 #> group1 group2 p p.adj p.adj.signif #> * <chr> <chr> <dbl> <dbl> <chr> #> 1 grp1 grp2 1.25e10 6.23e10 **** #> 2 grp1 grp3 3.09e13 1.86e12 **** #> 3 grp2 grp3 1.00e+ 0 1.00e+ 0 ns #> 4 grp1 grp4 6.41e 6 2.56e 5 **** #> 5 grp2 grp4 7.01e 2 1.40e 1 ns #> 6 grp3 grp4 3.06e 2 9.19e 2 ns# Pairwise proportion tests #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # Data: Titanic xtab < as.table(rbind( c(122, 167, 528, 673), c(203, 118, 178, 212) )) dimnames(xtab) < list( Survived = c("No", "Yes"), Class = c("1st", "2nd", "3rd", "Crew") ) xtab#> Class #> Survived 1st 2nd 3rd Crew #> No 122 167 528 673 #> Yes 203 118 178 212# Compare the proportion of survived between groups pairwise_prop_test(xtab)#> # A tibble: 6 x 5 #> group1 group2 p p.adj p.adj.signif #> * <chr> <chr> <dbl> <dbl> <chr> #> 1 1st 2nd 3.13e 7 9.38e 7 **** #> 2 1st 3rd 2.55e30 1.27e29 **** #> 3 2nd 3rd 6.90e 7 1.38e 6 **** #> 4 1st Crew 1.62e35 9.73e35 **** #> 5 2nd Crew 1.94e 8 7.75e 8 **** #> 6 3rd Crew 6.03e 1 6.03e 1 ns# Rowwise proportion tests #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # Data: Titanic xtab < as.table(rbind( c(180, 145), c(179, 106), c(510, 196), c(862, 23) )) dimnames(xtab) < list( Class = c("1st", "2nd", "3rd", "Crew"), Gender = c("Male", "Female") ) xtab#> Gender #> Class Male Female #> 1st 180 145 #> 2nd 179 106 #> 3rd 510 196 #> Crew 862 23# Compare the proportion of males and females in each category row_wise_prop_test(xtab)#> # A tibble: 4 x 7 #> group n statistic df p p.adj p.adj.signif #> * <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> #> 1 1st 2201 121. 1 3.40e28 1.02e27 **** #> 2 2nd 2201 47.8 1 4.65e12 9.30e12 **** #> 3 3rd 2201 24.9 1 6.18e 7 6.18e 7 **** #> 4 Crew 2201 308. 1 5.51e69 2.20e68 ****