
    M/PhY                        d Z ddlmZ ddlZddlZddlZddlm	Z	 ej
        Z
dZi dg ddg d	d
g ddg ddg ddg ddg ddg ddg ddg ddg ddg ddg dd g d!d"g d#d$g d%d&g d'i d(g d)d*g d+d,g d-d.g d/d0g d1d2g d3d4g d5d6e
fg d7d8g d9d:g d;d<g d=d>g d?d@g dAdBg dCdDg dEdFg dGdHg dIi dJg dKdLg dMdNg dOdPg dQdRg dSdTg dUdVg dWdXg dYdZg d[d\g d]d^g d_d`g dadbg dcddg dedfg dgdhe
fg didjg dki dlg dmdng dodpg dqdrg dsdtg dudvg dwdxg dydzg d{d|g d}d~g ddg ddg ddg ddg ddg ddg ddg di dg ddg ddg ddg ddg ddg dde
fg ddg ddg ddg ddg ddg ddg ddg ddg ddg ddg di dg ddg ddg ddg ddg ddg ddg ddg ddg ddg dâdg dŢdg dǢdg dɢdg dˢde
fg d͢dg dϢdg dѢi dg dӢdg dբdg dעdg d٢dg dۢdg dݢdg dߢdg ddg ddg ddg ddg ddg ddg ddg ddg ddg di dg ddg ddg ddg ddg dde
fg dd g ddg ddg ddg ddg d	d
g ddg ddg ddg ddg ddg di dg ddg ddg ddg ddg dd g d!d"g d#d$g d%d&g d'd(g d)d*g d+d,g d-d.g d/d0e
fg d1d2g d3d4g d5d6g d7i d8g d9d:g d;d<g d=d>g d?d@g dAdBg dCdDg dEdFg dGdHg dIdJg dKdLg dMdNg dOdPg dQdRg dSdTg dUdVg dWdXg dYi dZg d[d\g d]d^g d_d`g dadbg dcdde
fg dedfg dgdhg didjg dkdlg dmdng dodpg dqdrg dsdtg dudvg dwdxg dydzg d{i d|g d}d~g ddg ddg ddg ddg ddg ddg ddg ddg ddg ddg ddg ddg dde
fg ddg ddg di dg ddg ddg ddg ddg ddg ddg ddg ddg ddg ddg ddg ddg ddg ddg ddg ddg di dg ddg dâdg dŢdg dǢdg dɢdg dˢde
fg d͢dg dϢdg dѢdg dӢdg dբdg dעdg d٢dg dۢdg dݢdg dߢdg di dg ddg ddg ddg ddg ddg ddg ddg ddg ddg ddg ddg ddg ddg ddg dd e
fg ddg di dg ddg ddg d	d
g ddg ddg ddg ddg ddg ddg ddg ddg ddg ddg dd g d!d"g d#d$g d%i d&g d'd(g d)d*g d+d,g d-d.g d/d0g d1d2g d3d4e
fg d5d6g d7d8g d9d:g d;d<g d=d>g d?d@g dAdBg dCdDg dEdFg dGi dHg dIdJg dKdLg dMdNg dOdPg dQdRg dSdTg dUdVg dWdXg dYdZg d[d\g d]d^g d_d`g dadbg dcddg dedfg dgdhe
fg diag dja edkdl          dmdndodpdqe
gz   adr Zds Zdt Zdu Zdv Zdw Zdx Zdy Zdz Z ej        e          Zd{e_         d| Zd} Zd~ Z ej        e          Zde_         d ZdS (  a#  
Implementation of Gleason's (1999) non-iterative upper quantile
studentized range approximation.

According to Gleason this method should be more accurate than the
AS190 FORTRAN algorithm of Lund and Lund (1983) and works from .5
<= p <= .999 (The AS190 only works from .9 <= p <= .99).

It is more efficient then the Copenhaver & Holland (1988) algorithm
(used by the _qtukey_ R function) although it requires storing the A
table in memory. (q distribution) approximations in Python.

see:
  Gleason, J. R. (1999). An accurate, non-iterative approximation
    for studentized range quantiles. Computational Statistics &
    Data Analysis, (31), 147-158.

  Gleason, J. R. (1998). A table of quantile points of the
    Studentized range distribution.
    http://www.stata.com/stb/stb46/dm64/sturng.pdf
    )lrangeN)	fminboundz0.2.3)皙?       @)gw	g8g"qH?g$/)r         @)gfOg2Vvg,/F?g{=گ)r         @)g9oYgW' g8.I?g;y	)r         @)gs4<)g襹N gޡf*X?g<W )r         @)gnX g9f`gՇަm?g)ÉQ߰)r         @)g* gm3wvgW?gfH 9,)r          @)g'A M gogk9Kj?gLa)r         "@)g,\Ȗg]'` g,d{9yi?gj))r         $@)gj̸g4T7g {)?gzycԦ)r         &@)g6?gVQegvm?g)5g)r         (@)g)gL}^gA&4?g0ե)r         *@)gQӰ1g[g.?2?g,w)r         ,@)gg#g2b g&$?g ck)r         .@)gBgZ{v g.`?gF)r         0@)g^sog=i	gZ=	!?gL)r         1@)gg:og.Jԏ?g}G)r         2@)gZ!g-G gd[?go)r         3@)g@C3Ug	 g%,p?g())r         4@)g1Hig*TYgE)%?g.٦)r         8@)geA	-gLp3 gwb?gsÄ])r         >@)gүM=g!&g[{zp?g'tT)r         D@)gtNga/t g棝?g)r         N@)gX0ÈgU=Yg&7?grMld)r         ^@)geb.g7gF]Z\?g@)r   )g%Tg%#!ҎgV>9`?g]cI)      ?r   )gu3AgtTgR5?g hg)r   r   )g^?gOW,Ag 5?gfOio3f)r   r   )g&SEgSA%\gG^?g[Aze)r   r	   )g'tgrc渿gB?g/:e)r   r
   )g7{yg%"g}?gUVe)r   r   )g(|H^ggݸgSu*?gFcXe)r   r   )gVogЈg<X8\f?gm ,e)r   r   )gccg*kg1^L?gM>we)r   r   )gg(rfg?gid)r   r   )g9<g`񻉸gBggaq?gm0$Xe)r   r   )gg#i-g?j;?glke)r   r   )g|H(Mgs|ZDgB QK?g$$e)r   r   )g^"FgMFghqJ?g|d)r   r   )gRMkgjg:j5?g#e)r   r   )g3`{g40Ngɋ1?g*e)r   r   )gmg)2Wηg7ؠ?g#̓d)r   r   )gj;gO#V\巿gW)F%#?g)Td)r   r   )gwyg|ݯNٷgXV?gYkdd)r   r   )g-g<goC?g8YĤd)r   r   )g'4*gXhWd.̷g#?g[ed)r   r   )gzg	Dجѷgsk+?gΎe)r   r   )gB"!gr_ߋg'm?g	F7 e)r   r   )ggh%gJqigE
?g:1Xe)r   r   )g6gAy-N귿g@~?gqi=er   )gdn
%g:I>ȷgvH?gSr(e)皙?r   )g80gY0xڸgqqϣũ?g&/a)r   r   )g1,g 	X۴g`b2?gkcu\)r   r   )g")g8Hgla=?gZ%IX)r   r	   )g^0ŵgrg8Qf?geS4VV)r   r
   )glvgPjg|[Y?g.@XIU)r   r   )gu^g̬gD+
k?g=n>ST)r   r   )glgqGQg?G[ސ?g齥S)r   r   )ggKgVa?gn`Ѫ(S)r   r   )gZg,	&g͵;?g R)r   r   )gbASg%Ug_P/g?g7dQR)r   r   )gPbcgLg?p?gP\R)r   r   )gz(g[6g`Hŏ?g<nB:R)r   r   )gL!g?tdgo	YHA?g"R)r   r   )g{-مg:a'gw?g+";?R)r   r   )gpg8xwǥg& b̍?gS<R)r   r   )gdV#gRktg
ޢ?g2R)r   r   )g63ig	+gI#?g_MR)r   r   )g#迂gLy餿gJӝc?g3R)r   r   )gJY$gg)KWL?gKHR)r   r   )g݁g<?[g3U)?gIR)r   r   )g3}gOSgVPi?glWTR)r   r   )gMqJzg:gki!??gR)r   r   )g=wgf#7g;ԨB?g/0!S)r   r   )gֿ>rg4#̡gq:?g~woSr   )ga,mg+Nug8>uE?g5`BT)      ?r   )g8C=kgjgw۸4?g2=ȱZ`)r    r   )g9gK>.g'oʕ?ga˓Y)r    r   )g8(.gD챎gİ?gʑ*9T)r    r	   )gVDg
D}#gm(n?g˟R)r    r
   )g:g#NG4g֨?gcǴQDtP)r    r   )g6Wg~sg;?gvq,ۡN)r    r   )go*69gCIJ2gi?glM)r    r   )ghgT~ǥg	d?g-\K)r    r   )g>g͋\ğgtR̀?g&kK)r    r   )gYIܙg,^gV
%͇?g	o_tJ)r    r   )gfg"eܢgן??g %J)r    r   )gRڏgف-g%͆?g[ I)r    r   )g%gNg\Cg)q?g'<~I)r    r   )gkS!gDyZgv;&?gSXI)r    r   )gARͅgZ9gۼ{?gX~?I)r    r   )gQ>gMSDg+3k?gRġa1I)r    r   )gg.0-ڟg"-?gFKX+I)r    r   )gIkb~gll ?g}^{k?g$A-+I)r    r   )gc}glv`xNghO?gs6/I)r    r   )g7wgIN߶g	g?gۆ_I)r    r   )gpg[ךzgEbn?g0	*I)r    r   )g	`ig.Cgý?g_GqjJ)r    r   )g mbg+^gW%xM?gBP9iNK)r    r   )gPӗZg^:gm?gwTaLr    )g.Qg-sg:?gBX8JfM)皙?r   )g`4gc֨g|o?gtZ_)r!   r   )g63[HgܳgICP?gh)5UW)r!   r   )gבgAS	g;K?g R)r!   r	   )g$%@DIg~EݬgC?gvO)r!   r
   )gPtg|gwkv?gHK)r!   r   )gx߿g@gܒ,|?g{nzI)r!   r   )g*߿gGXgօچ?gvtG)r!   r   )gc[߿gУge8?glIXF)r!   r   )g'H߿g]&gTʭ?gmvE)r!   r   )g,k߿g򇉡g?gE)r!   r   )gNj]o߿g."gחQ?geԑƍD)r!   r   )gL+a߿gM_2៿giV(oׂ?gf=:D)r!   r   )g TCU߿gg럞gu?gK?C)r!   r   )g1<꣟K߿gcWgLeV%?gbo7C)r!   r   )gx |B߿g5d{g)t-?gyC)r!   r   )gp:߿gWSLƛg嚮?g[#YC)r!   r   )gd̨3߿gÏ7gEBN?gW>C)r!   r   )g+y-߿gMqfg,s]?g.C)r!   r   )g)i"(߿g̺,әgQCXu??g-C)r!   r   )gHG߿g/LgER7?g[yEEC)r!   r   )g0t^߿gm:3YgPŀ?gp<D)r!   r   )gd_H޿gEĔgSؾ?gv_.D)r!   r   )g؈J޿gĭTg@?gdҴE)r!   r   )gN޿gFscekgoH4?gRQ	iVFr!   )g}N޿gk'A<ߐgP _,?gJsPJG)333333?r   )gX_g-i)g[?g`)r"   r   )g}[߿gV?ʳgq6vՓ?gY'W3	V)r"   r   )gH޿giVg&%@?g&p*P)r"   r	   )g}Ɯ_NݿgR>~g@7@?gFEK)r"   r
   )gGܿg0!gl0ԇ?g@G)r"   r   )gd̂ܿg|1g(ba}?g%E)r"   r   )gU`Gܿgz8gqWN?gyvaTC)r"   r   )guܿgL^g?u?s?gB)r"   r   )g羀ۿgzjg1+_yq?g:4 A)r"   r   )gۿgE쟿g 5T?g"wx@)r"   r   )gJۿg:ugy݀	?gɢb @)r"   r   )g jۿgb)eg+uQ?gq V?)r"   r   )gg[߱ۿg>gmI~?g!B>)r"   r   )gۿg(gJ]}?gLTT>)r"   r   )gV DۿgzoJg7S	&}?g}[>)r"   r   )g?{ۿg)@g
j}>|?g<W>>)r"   r   )gtzbnqۿg'W}ghsQ|?g|$i1>)r"   r   )gd'hۿg.{gЖg⴮|?gFû0>)r"   r   )g_`ۿg6kD$6g+{?gk9>)r"   r   )gel CGۿg>kXgJ%{?g6t>)r"   r   )gLE-ۿg1zggTz?g	zY?)r"   r   )gI$kۿg6䐿g֥ibz?gYksE@)r"   r   )gDzڿg*x{0gdh
z?ggjA)r"   r   )g]gXڿgmV⋿gAf{i{?guAr"   )gy_mdڿgo.h,?gz*	 |?g醁_B)?      ?)gg<8g`?g]ng)r#   r   )gy giDʧԸg#Q?g.dT])r#   r   )gwvܿgsy³g8l?gà`T)r#   r   )gO=/*ڿg/<g+?g՞#O)r#   r	   )g!pp"
ڿg_ŖARgP_?g<SXG)r#   r
   )g*KKcٿgh
gC{?gD)r#   r   )gpؿg%_Yg!/?gCA)r#   r   )g1YhWؿgZ'g5Y?g{>)r#   r   )g^w+qؿg-ig ?gg	=)r#   r   )go@ؿgR gP0S}?g;1D;)r#   r   )g&ؿg)xYxgن]j{?g2	8)r#   r   )gxN#
ؿgzg͈`Fz?gqA7)r#   r   )gr9|Ѵ׿gygSsLy?g a7)r#   r   )gBdF׿gNቘg7V3Fx?g%$C, 6)r#   r   )gO׿gogT=gzߵÕw?g쎁A6)r#   r   )gd7Y׿ge2$gVwSiw?g036)r#   r   )g^VD׿g&égR2v?gtqw6)r#   r   )g<ե[э׿gHjӔg`Y"cv?giy5)r#   r   )g׿gu\xՓg	
1u?gu.`5)r#   r   )guxs׿g̷ΓgPnNv?gG6)r#   r   )gcCT׿gng,ou?g2,f6)r#   r   )gHʖ3׿g XOtg"Ut?gajP7)r#   r   )g:,׿gO۴gLy[WEu?gFm9)r#   r   )g.ֿgH"	g.ȳ+t?gC?9)r#   r   )g#Z&wֿgCW-g'b\u?g16Gƚ<r#   )gꃁ|ֿg2{g:sWv?gcr=)ffffff?r$   )ggXR-gzLl?g!Qmfg)r%   r   )gx^9޿g?gŃw?gI_)r%   r   )gmlFdٿg(PgՈ7?g@kaS)r%   r   )gSxv׿g%9Vg/ so?g_kk}M)r%   r	   )gVr^ֿgT;Ags K?g#M C)r%   r
   )gտg I7ag4˻?gm*T4@)r%   r   )g7b$_Fտg;s}g=Dd?g5Ғ;)r%   r   )gj<Կg6gk}i|?g@r7)r%   r   )g썑OTԿg2>gN'z?g񟥚u5)r%   r   )gJmԿgSK)՝gw?gG2)r%   r   )g쨳ӿg}W~gTu?g?ެ=$1)r%   r   )gMS'Lӿg
CA酪gP3Ct?g[~0e0)r%   r   )g6ӿgLog5?kRt?gAȤ0)r%   r   )gNh-|ӿgvgæ=r?g8-)r%   r   )g:dZB^ӿg]OCэgxFnܙ`r?g˖vd.)r%   r   )gdSԔFӿg\4⤔g<^r?g~;T/)r%   r   )g$6z6ӿg).jg-7֖0,q?g;1-)r%   r   )g@ӿg[1gAnq?gK'$/)r%   r   )gӿg)'(.gE1np?g( #-)r%   r   )gbߝҿgi2]÷gwhep?g	]W/)r%   r   )gJ]iҿg[@fgb\j*p?gG8v/)r%   r   )g!ҿgln,FZg"p?gRZ1)r%   r   )g\ rҿg=\g7UKo?gY>1)r%   r   )g.7Aҿgƾg@o?g M2)r%   r   )go'ҿge Rg۩o?g:i 3r%   )gʣѿggeVq?g[ؼ6)333333?r$   )gߐzg>#gu3H?gZH[g)r&   r   )gݿgIҸg#"?g35\)r&   r   )g Cb}ؿgS>gґ?gS)r&   r   )g^տgb[Kgi<?g
;arhK)r&   r	   )g?{sVԿgY۹wg=?gfPAA)r&   r
   )g0oQ^9PӿgxIgN__?gQR<)r&   r   )gpbURҿgcLWg
<0t~?gf5|8)r&   r   )g9ҿg񮉣̡gdy?g'N:3)r&   r   )g9bFIѿgV7ݢgķrv?gs()0)r&   r   )gK"npѿgK' gVqt?g͊:,)r&   r   )g_.ѿg3ƚgeIbs?gdYBP*)r&   r   )gDпgigIB r?g&)bv*)r&   r   )g#пgo:.Ug\ҕp?gƤ()r&   r   )g(пgRXЕgf#p?gXNz]')r&   r   )gEuFпg\4Yeg?.|o?g	g]()r&   r   )g*0=Hpпg4J|WgZfmm?gG%)r&   r   )gRпg8ؼ͒gP+5m?g^x&)r&   r   )g`tdA5пg;Զlgju]Dm?g~m()r&   r   )gH&пg[gsk?gL%\&)r&   r   )gA	пg<cйg?;.1k?g*i&)r&   r   )g`4Ͽg,6W
g%lOj?g?()r&   r   )g8BϿg:	2",qgRr42j?g<Xnq]*)r&   r   )gAοgu1g(6h?gb*)r&   r   )g˳ec`οg=l򋃿g,5i?gie:.)r&   r   )g-D#Ϳg1zgLp'j?gC!0r&   )g%T>3qͿg݁C}{g@Rj?gF31)Gz?r$   )gv&lgKbh6g7ʠex?gu#|g)r'   r   )gXݿg{Dg@@6?g>Xw\)r'   r   )gȐL׿g#eIg,=(D?gS)r'   r   )g/YkԿg\xZCg@KĈ?g(
F)r'   r	   )gÁҿgtMg뻁?g÷{wB)r'   r
   )gvѿg`Eåg==}?g.Ō4)r'   r   )gpۙ~пg/X**g\O|?g8nv|5)r'   r   )gϿg$5_Rg:Lv?gRY-)r'   r   )gP *Ͽgf-2g3/r?g]*k")r'   r   )gŨGοgP-g>a!q?g@")r'   r   )g5Ϳgc!fgom;=	o?gb^* )r'   r   )geͿg	9gؑ o?gbPCa#)r'   r   )go\\̿g{{5gOrk?gD&M )r'   r   )gC榷i̿gbg~ag i5i?gWW8)r'   r   )g̿g,~ʓg@!i?gd޶7 )r'   r   )gN$˿gɜrU-gMQGh?g&)r'   r   )g=w&˿gsݑgO90g?gO#}Tv)r'   r   )gL<TX˿g	EKglbV0g?gw )r'   r   )g.˿g_T3Iqg5z'f?gwh6)r'   r   )gXʿg];/agu;f?gg&!)r'   r   )gyʿgmEgm;>e?gx!)r'   r   )g{6ɿg>ig4,c?d?g*bE#)r'   r   )gZqbɿgggfQXIe?gvqm &)r'   r   )gC
5ȿg/tg*-e?g<LW()r'   r   )gJ`CDUȿg-ggve?g9(r'   )g[ǿgqOqygr}qe?g,*)ףp=
?r$   )gj1gZF7gf\q8qw?gNIyg)r(   r   )gz8rܿgV.Dg|/3Վ?g<\)r(   r   )g"5=ֿg@t\g<KO9:?g.Q)r(   r   )gӿg&gǒP
(?gxH)r(   r	   )g+ ѿg$VZӦ媿gٱcG?gNQ֋@)r(   r
   )gRkпg[|[;gmsq~?gY6)r(   r   )g4,οg&YEgјG3|?gLr6)r(   r   )gҗͿgEg]Ov?g/)r(   r   )g]̿gEg`8	9&s?g?M&)r(   r   )g,˿g
b3gyMNp?g'x7!)r(   r   )gTO˿g<gX`n?g~ )r(   r   )g"ԍʿg!%}gRܚgl?g: )r(   r   )gSI5%ʿgS&ǲg];uh?gr.:3)r(   r   )g;ɿgi~}gmg?gKW)r(   r   )gHjɿgUBgFaf?g*<)=)r(   r   )g V8ɿgp^EBfg=ڵ(6f?gM }-)r(   r   )g.G,ȿgkgI)e?gu3)r(   r   )g:ȿg~/g+30d?gW_44)r(   r   )gv50Dfȿgu02>gd$Jd?gPo)r(   r   )gDOS@ȿgCJcgMB[jc?gx&k	)r(   r   )gh_mϛǿgYi3g`"d?g. )r(   r   )g9nǿgc;gfb?gp'wn )r(   r   )g*wzƿg>	D̈́gPNb?gG!)r(   r   )g`	JſgbzgjAo2c?gϺWI%)r(   r   )g^
2ZOſg11؆~g3!c?g'Uo&r(   )gXĿgUX!)xg~Ȅb?g8m%&)+?r$   )gg&ggU^`bX?g[/KRg)r)   r   )gܿg.*)g~t?gfeK\)r)   r   )gp[TֿgN=g?gdAwQ)r)   r   )gK	@PҿgwC}g#?gw̃G)r)   r	   )g=vпgc_gFFi?gd9A)r)   r
   )gnMοg@ng-$y?gvBD,)r)   r   )g˿g5-gbv?g K*)r)   r   )gԑWʿg7gwgs?gP[#)r)   r   )gusɿgbBݝg_ޥp?gl )r)   r   )g;\Yg+#ȿgӉU9g{'Y8hm?gSP)V)r)   r   )gY6Nǿg;`+Șg(,!Zi?g E)r)   r   )gh0ƿgVBg+xc?g[})r)   r   )gzb r<ƿgWz*	g6-Wb?gO#/D)r)   r   )gi0ſg400$gnre?gb")r)   r   )g,,Kſgz]Ugk$Db?gk(=)r)   r   )g!8FĿg=qg^)`?g%')r)   r   )gĿgyI=bgE]M``?g:GJB	)r)   r   )g>SĿgf6O5gKeca?g3")r)   r   )guĿgA[gێb?g<<u)r)   r   )gAvzÿg20(gmGLa?gG)r)   r   )g|]C\2ÿgY;vg7&X^?g(4)r)   r   )gQ>¿g<@gE4^?gǣRF)r)   r   )gg僿gřX̴]?gg~I՞f)r)   r   )g,R.gd~ӀggrL]?g7)r)   r   )g ́g\\|gsC^?g{ r)   )gN!LgWNwg2Z]?guyb!)r   r   r   r    r!   r"   r#   r%   r&   r'   r(   r)               (   <   x   c                 8    	 t          |            n#  Y dS xY wdS )zC
    returns True if x is a float,
    returns False otherwise
    FT)float)xs    e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/stats/libqsturng/qsturng_.py_isfloatr5   x  s)    
auu4s    c                    | dk    s| dk    rt          d| z            d}d}d}d}d}d|z
  }| |k     rt          j        d	t          j        |           z            }|d         |z  |d         z   |z  |d
         z   |z  |d         z   |z  |d         z   |z  |d         z    |d         |z  |d         z   |z  |d
         z   |z  |d         z   |z  dz   z  S || k     rt          j        d	t          j        d| z
            z            }|d         |z  |d         z   |z  |d
         z   |z  |d         z   |z  |d         z   |z  |d         z   |d         |z  |d         z   |z  |d
         z   |z  |d         z   |z  dz   z  S | dz
  }||z  }|d         |z  |d         z   |z  |d
         z   |z  |d         z   |z  |d         z   |z  |d         z    |z  |d         |z  |d         z   |z  |d
         z   |z  |d         z   |z  |d         z   |z  dz   z  S )a  
    Modified from the author's original perl code (original comments follow below)
    by dfield@yahoo-inc.com.  May 3, 2004.

    Lower tail quantile for standard normal distribution function.

    This function returns an approximation of the inverse cumulative
    standard normal distribution function.  I.e., given P, it returns
    an approximation to the X satisfying P = Pr{Z <= X} where Z is a
    random variable from the standard normal distribution.

    The algorithm uses a minimax approximation by rational functions
    and the result has a relative error whose absolute value is less
    than 1.15e-9.

    Author:      Peter John Acklam
    Time-stamp:  2000-07-19 18:26:14
    E-mail:      pjacklam@online.no
    WWW URL:     http://home.online.no/~pjacklam
    r      z5Argument to ltqnorm %f must be in open interval (0,1))g%1Cg4pFk@g;->qg@rKa@g͋40>gyTW @)g0<KgwB,2d@g^vcg駱HP@g&x~*)gJg$ԿgXp4g:p,egM@g?\@)gԟW?gdY+M?g|@gh	@gEԘ?r*            r   )
ValueErrormathsqrtlog)	pabcdplowphighqrs	            r4   _phirI     sx   2 	AvvaQTUUWWW	9A	"A	9A	9A DHE 	4xxYr$(1++~&&qT!VAaD[!OAaD(!+AaD0!3AaD8!;AaD@AqT!VAaD[!OAaD(!+AaD0!3A57 	7 qyyYr$(1Q3--'((aDF1Q4K?1Q4'*1Q4/21Q47:1Q4?aDF1Q4K?1Q4'*1Q4/2146 	6 	
CA	!A1a!a!$a'!,a/!4a7!<=a?!QqtQqt#Q&qt+Q.qt3Q6q8: :    c                 >    dddt          d| z   dz            z  z   z  S )z+function for p-value abcissa transformationg      r$   g      ?r   )rI   r@   s    r4   _ptransformrM     s'    "sT262+....//rJ   c                    | d         t          j        |dz
            z  | d         t          j        |dz
            dz  z  z   | d         t          j        |dz
            dz  z  z   | d         t          j        |dz
            dz  z  z   }|dk    rn|dddt          |          dz  z  z   z  z  }|d	k    r't          j        |          s|nd
}|ddd|z  z  z
  z  }n#t          j        |          s|nd
}|dd|z  z  z  }| S )z|
    calculates f-hat for the coefficients in a, probability p,
    sample mean difference r, and degrees of freedom v.
    r   r$   r7   r*   r9   r:   gMb`r   g~jt@籡*Gg9ư_?g     s@g     g@)r=   r?   rI   npisinf)rA   r@   rH   vfs        r4   _funcrT     s    	
!TXad^^	!TXad^^Q		!TXad^^Q	 	
!TXad^^Q	A 	Avv	VrC$q''1*,,--::!.$AR4!8_,,AA!.$Atax A2IrJ   c                     | dk    rdS | dk    rdS | dk    rdS | dk    rdS | d	k    rd
S | dk    rdS | dk    rdS | dk    rdS | dk    rdS dS )z-returns the points to use for interpolating pr'   )r'   r(   r)   r&   )r&   r'   r(   r%   )r%   r&   r'   g333333?)r#   r%   r&   g      ?)r"   r#   r%   gffffff?)r!   r"   r#   gffffff?)r    r!   r"   r   )r   r    r!   r   )r   r   r    )r   r   r    rL   s    r4   
_select_psrW     s     	Cxx	
d	
c	
e	
d	
d	
e	
d	
drJ   c                    t          |           \  }}}	 t          t          ||f         |||          dz   }n#  t          | ||            xY wt          t          ||f         |||          dz   }t          t          ||f         |||          dz   }t	          j        |t          |          t          |          z  z             }	t	          j        |t          |          t          |          z  z             }
t	          j        |t          |          t          |          z  z             }| dk    rt          |           }t          |          }t          |          }t          |          }d||
z
  ||z
  z  |
|	z
  ||z
  z  z
  z  ||z
  z  }||z   ||z   k    r||
z
  ||z
  z  d|z  ||z
  z  z
  }n|
|	z
  ||z
  z  d|z  ||z
  z  z   }|
}|dz  ||z
  dz  z  |||z
  z  z   |z   }t	          j        |          t          |          t          |          z  z
  }n| dk    rd||
z
  ||z
  z  |
|	z
  ||z
  z  z
  z  ||z
  z  }||z   ||z   k    r||
z
  ||z
  z  d|z  ||z
  z  z
  }n|
|	z
  ||z
  z  d|z  ||z
  z  z   }|
}|dz  | |z
  dz  z  || |z
  z  z   |z   }t	          j        |          t          |          t          |          z  z
  }nt          |d          }t	          j
        d          | z  t          j        j                            d|z   dz  |          z  }t	          j
        d          | z  t          j        j                            d|z   dz  |          z  }||z
  ||z
  z  }|}|| |z
  z  |z   }| t	          j
        d          t          j        j                            d| z   dz  |          z  z  }|S )zs
    interpolates p based on the values in the A table for the
    scalar value of r and the scalar value of v
    r$   r"   r*   r   r   rO   )rW   rT   Aprintr=   r?   r2   rM   expminr>   scipystatstisf)r@   rH   rR   p0p1p2y0y1y2y_log0y_log1y_log2p_tp0_tp1_tp2_td2d1d0y_logyq0q1rG   s                           r4   _interpolate_pru     s    AJBB1b!W:r1a((2-a!	q"az2q!	$	$r	)B	q"az2q!	$	$r	)BXb588E!HH,,--FXb588E!HH,,--FXb588E!HH,,--F
 	3ww1~~222 d+d+, -.24i9rERU-$t),s2vtDy/AABB-$t),s2vtDy/AAB B3t8b.(2T?:R? HUOOeAhhuQxx//	
RB'B'( )*,R%1rERU-"R%(3r62b5>9BB-"R%(3r62b5>9B B1R4"*$rQrT{2R7 HUOOeAhhuQxx// 4LLYq\\RC[]2rz1--.Yq\\RC[]2rz1--. ebe_ !B$K" B$)A,,!2!2BqD"9a!@!@@AHs	   "8 Ac                     | dk    r
ddt           fS | dk    rdS | dk    rdS | dk    rd	S | d
k    rdS | dk    rdS |dk    r	| dk     rdS n| dk     rdS t          t          |                     }|dz
  ||dz   fS )z-returns the points to use for interpolating vr   r/   r0   r   )r.   r/   r0   r   )r-   r.   r/   r   )r,   r-   r.   r   )   r,   r-   g     3@)   rw   r,   r#   g      @)r7   r*   r9   g      @)r*   r9   r:   r7   )infintround)rR   r@   vis      r4   
_select_vsr}   W  s    
 	Dyy3|	
c{	
cz	
cz	
cz	
dzBwws777  s777	U1XXB62rAvrJ   c                 \   t          ||           \  }}}t          t          | |f         | ||          dz   dz  }t          t          | |f         | ||          dz   dz  }t          t          | |f         | ||          dz   dz  }|dk    rd}d|z  d|z  d|z  d|z  f\  }	}
}}d||z
  ||z
  z  ||z
  |
|z
  z  z
  z  ||
z
  z  }||
z   ||z   k    r||z
  ||z
  z  d|z  ||z
  z  z
  }n||z
  ||
z
  z  d|z  ||
z
  z  z   }|}t          j        |dz  |	|z
  dz  z  ||	|z
  z  z   |z             }|S )z`
    interpolates v based on the values in the A table for the
    scalar value of r and th
    r$   r   rO   r   )r}   rT   rY   r=   r>   )r@   rH   rR   v0v1v2y0_sqy1_sqy2_sqv_v0_v1_v2_rn   ro   rp   rr   s                    r4   _interpolate_vr   s  s    Aq!!JBB 1aV9aB''",r1E1aV9aB''",r1E1aV9aB''",r1E 
Dyy 1beRUBrE1BS# 
eEkCG$EkCG$% 
&),S
2Bc	sSy!!Ekc#g&RS)99Ekc#g&RS)99	B 		2b52c6B,&RV4b899AHrJ   c                    | dk     s| dk    rt          d          | dk     r|dk     rt          d          n|dk     rt          d          t          |           } t          |t          j                  r|                                }| |ft          v r$t          t          | |f         | ||          d	z   }nm| t          vr|t          g dgf| dk             z   vrt          ||           \  }}}t          |           \  }}}	t          | ||          dz  }
t          | ||          dz  }t          | ||          dz  }d	|z  d	|z  d	|z  d	|z  f\  }}}}d
||z
  ||z
  z  |
|z
  ||z
  z  z
  z  ||z
  z  }||z   ||z   k    r||z
  ||z
  z  d|z  ||z
  z  z
  }n||
z
  ||z
  z  d|z  ||z
  z  z   }|}t          j        |d
z  ||z
  d
z  z  |||z
  z  z   |z             }nE|t          g dgf| dk             z   vrt          | ||          }n| t          vrt          | ||          }t!          |d          }t          j        d          | z  t"          j        j                            d	| z   d
z  |          z  S )zscalar version of qsturngr   r)   zp must be between .1 and .999r#   r*   zv must be > 2 when p < .9r7   zv must be > 1 when p >= .9r$   r   r   rO   )r<   r2   
isinstancerP   ndarrayitemrY   rT   p_keysv_keysr}   rW   ru   r=   r>   r   r\   r]   r^   r_   r`   )r@   rH   rR   rr   r   r   r   ra   rb   rc   r0_sqr1_sqr2_sqr   r   r   r   rn   ro   rp   s                       r4   _qsturngr     s    	2vvT89992vvq558999  q559:::
 	aA!RZ   FFHH	!uzz!QqE(Aq!$$r)	
&Qfb!Xaf-=&===:  1%%
B  ]]
B q!R((!+q!R((!+q!R((!+ qD"R%B25Cc %+C(+C() *-0W6#I39%%+#c'*SVSW-==BB+#c'*SVSW-==B Ir"ur#vl*RC[8"<==	
&"aS!S&))	)	)1a##	
&1a##AtA9Q<<1"u{}00"q&BBBBBrJ   zvector version of qsturngc                     t          t          t          | ||g                    rt          | ||          S t	          | ||          S )a  Approximates the quantile p for a studentized range
       distribution having v degrees of freedom and r samples
       for probability p.

    Parameters
    ----------
    p : (scalar, array_like)
        The cumulative probability value
        p >= .1 and p <=.999
        (values under .5 are not recommended)
    r : (scalar, array_like)
        The number of samples
        r >= 2 and r <= 200
        (values over 200 are permitted but not recommended)
    v : (scalar, array_like)
        The sample degrees of freedom
        if p >= .9:
            v >=1 and v >= inf
        else:
            v >=2 and v >= inf

    Returns
    -------
    q : (scalar, array_like)
        approximation of the Studentized Range
    )allmapr5   r   	_vqsturng)r@   rH   rR   s      r4   qsturngr     H    8 3x!Q##$$ !1a   Q1rJ   c                      dk     rt          d           fd}|dk    rZ t          d|d          k     rdS  t          d|d          k    rdS d	t          |dd||f
          z
  }t          j        |          S  t          d||          k     rdS  t          d||          k    rdS d	t          |dd||f
          z
  }t          j        |          S )zscalar version of psturngg        zq should be >= 0c           	      j    t          j        t          t          | ||          z
                      S N)rP   squeezeabsr   )r@   rH   rR   rG   s      r4   opt_funcz_psturng.<locals>.opt_func8  s,    z#hq!Q//!344555rJ   r7   r#   r   r)   gMbP?r$   )args)r<   r   r   rP   
atleast_1d)rG   rH   rR   r   solns   `    r4   _psturngr   3  s   2vv+,,,6 6 6 6 6 	AvvxAq!!!!2$1%%%%4IhD!u====}T"""xAq!!!!2$1%%%%4IhD!u====}T"""rJ   c                 H    t          j        t          | ||                    S r   )rP   r   r   rG   rH   rR   s      r4   _psturng_scalarr   J  s    :hq!Q''(((rJ   zvector version of psturngc                     t          t          t          | ||g                    rt          | ||          S t	          | ||          S )aJ  Evaluates the probability from 0 to q for a studentized
       range having v degrees of freedom and r samples.

    Parameters
    ----------
    q : (scalar, array_like)
        quantile value of Studentized Range
        q >= 0.
    r : (scalar, array_like)
        The number of samples
        r >= 2 and r <= 200
        (values over 200 are permitted but not recommended)
    v : (scalar, array_like)
        The sample degrees of freedom
        if p >= .9:
            v >=1 and v >= inf
        else:
            v >=2 and v >= inf

    Returns
    -------
    p : (scalar, array_like)
        1. - area from zero to q under the Studentized Range
        distribution. When v == 1, p is bound between .001
        and .1, when v > 1, p is bound between .001 and .9.
        Values between .5 and .9 are 1st order appoximations.
    )r   r   r5   r   	_vpsturngr   s      r4   psturngr   P  r   rJ   )__doc__statsmodels.compat.pythonr   r=   scipy.statsr]   numpyrP   scipy.optimizer   ry   __version__rY   r   r   r5   rI   rM   rT   rW   ru   r}   r   r   	vectorizer   r   r   r   r   r   rV   rJ   r4   <module>r      s   * - , , , , ,          $ $ $ $ $ $f:qsZggg qsgggqseeeqs eeeqs ggg	qs
 gggqs fffqs gggqs gggqs hhhqs gggqs hhhqs gggqs hhhqs hhhqs hhhqs  hhh!qs qs" hhh#qs$ ggg%qs& hhh'qs( hhh)qs* ggg+qs, hhh-qs. iii/qs0 
3Zeee1qs2 jjj3qs4 kkk5qs6 lll7qs8 lll9qs: lll;qs< lll=qs> lll?qs@ lllAqsB mmmCqs qs qsD kkkEqsF mmmGqsH mmmIqsJ mmmKqsL mmmMqsN mmmOqsP lllQqsR lllSqsT lllUqsV mmmWqsX lllYqsZ mmm[qs\ mmm]qs^ mmm_qs` nnnaqsb 
3Zlllcqsd nnneqs qs qsf lllgqsh nnniqsj nnnkqsl nnnmqsn nnnoqsp nnnqqsr mmmsqst ooouqsv ooowqsx oooyqsz mmm{qs| ooo}qs~ oooqs@ oooAqsB oooCqsD oooEqsF nnnGqs qs qsH oooIqsJ oooKqsL oooMqsN nnnOqsP oooQqsR pppSqsT S\nnnUqsV mmmWqsX mmmYqsZ kkk[qs\ mmm]qs^ mmm_qs` nnnaqsb nnncqsd nnneqsf nnngqsh oooiqs qs qsj nnnkqsl nnnmqsn ooooqsp oooqqsr ooosqst nnnuqsv ooowqsx oooyqsz nnn{qs| ooo}qs~ oooqs@ oooAqsB mmmCqsD pppEqsF C[lllGqsH lllIqsJ kkkKqs qs qsL kkkMqsN mmmOqsP lllQqsR mmmSqsT mmmUqsV kkkWqsX nnnYqsZ ooo[qs\ ooo]qs^ nnn_qs` nnnaqsb ooocqsd mmmeqsf ooogqsh oooiqsj oookqsl ooomqs qs qsn llloqsp oooqqsr ooosqst ooouqsv pppwqsx 
3Znnnyqsz mmm{qs| mmm}qs~ mmmqs@ nnnAqsB mmmCqsD nnnEqsF oooGqsH oooIqsJ pppKqsL pppMqsN nnnOqs qs qsP pppQqsR pppSqsT pppUqsV oooWqsX pppYqsZ ooo[qs\ ppp]qs^ ppp_qs` pppaqsb pppcqsd pppeqsf pppgqsh qqqiqsj C[oookqsl hhhmqsn llloqsp lllqqs qs qsr mmmsqst mmmuqsv mmmwqsx mmmyqsz nnn{qs| nnn}qs~ nnnqs@ oooAqsB oooCqsD nnnEqsF mmmGqsH mmmIqsJ oooKqsL oooMqsN oooOqsP nnnQqsR oooSqs qs qsT oooUqsV oooWqsX oooYqsZ ooo[qs\ ppp]qs^ 
3Zooo_qs` lllaqsb lllcqsd kkkeqsf nnngqsh mmmiqsj oookqsl ooomqsn ooooqsp nnnqqsr mmmsqst ooouqs qs qsv pppwqsx oooyqsz ppp{qs| ooo}qs~ pppqs@ pppAqsB pppCqsD pppEqsF pppGqsH pppIqsJ pppKqsL pppMqsN pppOqsP rrrQqsR C[oooSqsT mmmUqsV nnnWqs qs qsX nnnYqsZ ooo[qs\ ooo]qs^ ooo_qs` oooaqsb pppcqsd pppeqsf ooogqsh qqqiqsj qqqkqsl ooomqsn qqqoqsp qqqqqsr qqqsqst qqquqsv qqqwqsx qqqyqs qs qsz qqq{qs| qqq}qs~ qqqqs@ qqqAqsB rrrCqsD sssEqsF S\qqqGqsH jjjIqsJ mmmKqsL kkkMqsN nnnOqsP nnnQqsR oooSqsT oooUqsV oooWqsX oooYqsZ ooo[qs qs qs\ ppp]qs^ ppp_qs` pppaqsb pppcqsd oooeqsf pppgqsh pppiqsj oookqsl pppmqsn pppoqsp oooqqsr ooosqst ooouqsv qqqwqsx rrryqsz C[ppp{qs| lll}qs qs qs~ mmmqs@ nnnAqsB oooCqsD pppEqsF pppGqsH pppIqsJ pppKqsL pppMqsN qqqOqsP qqqQqsR qqqSqsT pppUqsV pppWqsX qqqYqsZ qqq[qs\ qqq]qs^ ppp_qs qs qs` pppaqsb qqqcqsd qqqeqsf qqqgqsh oooiqsj rrrkqsl sssmqsn S\qqqoqsp mmmqqsr nnnsqst nnnuqsv nnnwqsx pppyqsz ppp{qs| ppp}qs~ oooqs@	 pppA	qs qs qsB	 qqqC	qsD	 qqqE	qsF	 qqqG	qsH	 qqqI	qsJ	 pppK	qsL	 qqqM	qsN	 qqqO	qsP	 qqqQ	qsR	 pppS	qsT	 qqqU	qsV	 qqqW	qsX	 qqqY	qsZ	 qqq[	qs\	 rrr]	qs^	 rrr_	qs`	 sssa	qsb	 S\qqqc	qs qsh	 
;	:	: 
2"b"b#s3	3
 
 
 >: >: >:@0 0 0  0     >R R Rh  8( ( (TWC WC WCt BL""	3	   r# # #.) ) ) BL))	3	     rJ   