# -*- coding: utf-8 -*- """ Created on Fri Mar 01 14:48:59 2013 Author: Josef Perktold """ import collections import numpy as np from statsmodels.tools.testing import Holder # numbers from R package `pwr` pwr.chisq.test res_binom = collections.defaultdict(Holder) res_binom_methods = ["agresti-coull", "asymptotic", "bayes", "cloglog", "exact", "logit", "probit", "profile", "lrt", "prop.test", "wilson"] # > bci = binom.confint(x = c(18), n = 20, tol = 1e-8) # > mkarray2(bci$lower, "res_binom[(18, 20)].ci_low") res_binom[(18, 20)].ci_low = np.array([ 0.6867561125596077, 0.768521618913513, 0.716146742695748, 0.656030707261567, 0.6830172859809176, 0.676197991611287, 0.7027685414174645, 0.722052946372325, 0.7220576251734515, 0.668722403162941, 0.6989663547715128 ]) # > mkarray2(bci$upper, "res_binom[(18, 20)].ci_upp") res_binom[(18, 20)].ci_upp = np.array([ 0.984343760998137, 1.031478381086487, 0.97862751197755, 0.974010174395775, 0.9876514728297052, 0.974866415649319, 0.978858461808406, 0.982318186566456, 0.982639913376776, 0.982487361226571, 0.972133518786232 ]) # > # > bci = binom.confint(x = c(4), n = 20, tol = 1e-8) # > mkarray2(bci$lower, "res_binom[(4, 20)].ci_low") res_binom[(4, 20)].ci_low = np.array([ 0.0749115102767071, 0.0246954918846837, 0.07152005247873425, 0.0623757232566298, 0.05733399705003284, 0.0771334546771001, 0.0710801045992076, 0.0668624655835687, 0.0668375191189685, 0.0661062308910436, 0.0806576625797981 ]) # > mkarray2(bci$upper, "res_binom[(4, 20)].ci_upp") res_binom[(4, 20)].ci_upp = np.array([ 0.4217635845549845, 0.3753045081153163, 0.4082257625169254, 0.393143902056907, 0.436614002996668, 0.427846901518118, 0.4147088121599544, 0.405367872119342, 0.405364309586823, 0.442686245059445, 0.4160174322518935 ]) # > # > bci = binom.confint(x = c(4), n = 200, tol = 1e-8) # > mkarray2(bci$lower, "res_binom[(4, 200)].ci_low") res_binom[(4, 200)].ci_low = np.array([ 0.005991954548218395, 0.000597346459104517, 0.00678759879519299, 0.006650668467968445, 0.005475565879556443, 0.00752663882411158, 0.00705442514086136, 0.00625387073493174, 0.00625223049303646, 0.00642601313670221, 0.00780442641634947 ]) # > mkarray2(bci$upper, "res_binom[(4, 200)].ci_upp") res_binom[(4, 200)].ci_upp = np.array([ 0.0520995587739575, 0.0394026535408955, 0.0468465669668423, 0.04722535678688564, 0.05041360908989634, 0.05206026227201098, 0.04916362085874019, 0.04585048214247203, 0.0458490848884339, 0.0537574613520185, 0.05028708690582643 ]) # > bci = binom.confint(x = c(190), n = 200, tol = 1e-8) # Warning message: # In binom.bayes(x, n, conf.level = conf.level, ...) : # 1 confidence interval failed to converge (marked by '*'). # Try changing 'tol' to a different value. # JP: I replace 0.02094150654714356 by np.nan in Bayes # > mkarray2(bci$lower, "res_binom[(190, 200)].ci_low") res_binom[(190, 200)].ci_low = np.array([ 0.909307307911624, 0.919794926420966, np.nan, 0.909066091776046, 0.9099724622986486, 0.9095820742314172, 0.9118101288857796, 0.913954651984184, 0.913956305842353, 0.9073089225133698, 0.910421851861224 ]) # > mkarray2(bci$upper, "res_binom[(190, 200)].ci_upp") res_binom[(190, 200)].ci_upp = np.array([ 0.973731898348837, 0.980205073579034, 1, 0.972780587302479, 0.975765834527891, 0.9728891271086528, 0.973671370402242, 0.974623779100809, 0.974626983311416, 0.974392083257476, 0.972617354399236 ]) # > bci = binom.confint(x = c(1), n = 30, tol = 1e-8) res_binom[(1, 30)].ci_low = np.array([ -8.305484e-03, -3.090070e-02, 6.903016e-05, 2.494567e-03, 8.435709e-04, 4.675346e-03, 3.475014e-03, 3.012987e-03, 1.932430e-03, 1.742467e-03, 5.908590e-03]) res_binom[(1, 30)].ci_upp = np.array([ 0.18091798, 0.09756737, 0.12314380, 0.14513807, 0.17216946, 0.20200244, 0.16637241, 0.13868254, 0.13868375, 0.19053022, 0.16670391]) # > bci = binom.confint(x = c(29), n = 30, tol = 1e-8) res_binom[(29, 30)].ci_low = np.array([ 0.8190820, 0.9024326, 0.8768562, 0.7860836, 0.8278305, 0.7979976, 0.8336276, 0.8613175, 0.8613162, 0.8094698, 0.8332961]) res_binom[(29, 30)].ci_upp = np.array([ 1.0083055, 1.0309007, 0.9999310, 0.9952363, 0.9991564, 0.9953247, 0.9965250, 0.9969870, 0.9980676, 0.9982575, 0.9940914]) # > bci = binom.confint(x = c(0), n = 30, tol = 1e-8) # Note: this ci_low clips one negative value to 0 res_binom[(0, 30)].ci_low = np.zeros(11) res_binom[(0, 30)].ci_upp = np.array([ 0.13471170, 0.00000000, 0.06151672, 0.11570331, 0.11570331, 0.11570331, 0.11570331, 0.10402893, 0.06201781, 0.14132048, 0.11351339]) # > bci = binom.confint(x = c(30), n = 30, tol = 1e-8) res_binom[(30, 30)].ci_low = np.array([ 0.8652883, 1.0000000, 0.9384833, 0.8842967, 0.8842967, 0.8842967, 0.8842967, 0.8959711, 0.9379822, 0.8586795, 0.8864866]) # Note: this ci_upp clips one value > 1 res_binom[(30, 30)].ci_upp = np.ones(11)