
    M/PhT                        d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	 d dl
Zd dlZerd dlmZ nd Zd dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZmZ d dlmZmZmZmZ dZ  ej!        e           dz  Z"d Z#d:dZ$d:dZ%d:dZ&d:dZ'd:dZ(d:dZ)e$ej*        ej+        ej,        ej-        e%ej.        e)e&e(e'dZ/d Z0d Z1d:dZ2dZ3dZ4d e4D             Z5e3 e6e5          z   Z7 G d d          Z8 ee8j9                  Z:e:;                    d  edd!d"g                     e:;                    d#g            e:;                    d$d%gd&gfd'gd(gfg            e e<e:                    	 d;d)d)d*d+e d,d-d.eej=        ej>        ej?        f         d/e	e<         d0e@d1e@d2eAd3e@d4e	eeBeAf                  d5e@d6ej?        fd7            ZC G d8 d9          ZDdS )<    )PD_LT_2Appenderis_numeric_dtype)SP_LT_19)Union)SequenceNis_categorical_dtypec                 6    t          | t          j                  S N)
isinstancepdCategoricalDtypedtypes    b/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/stats/descriptivestats.pyr
   r
      s    %!4555    )stats)SimpleTable)jarque_bera)cache_readonly)	Docstring	Parameter)
array_like	bool_like
float_likeint_like)	      
      2   K   Z   _   c   g      Y@c                 T    |                                  |                                 z
  S r   )maxmin)dfs    r   pd_ptpr+   "   s    6688bffhhr   c                 X    dt          j        |           z
                      |          S )Nr   axis)npisnansum)xr.   s     r   nancountr3   &   s%    O  d +++r   c                 \    t          j        | |          t          j        | |          z
  S Nr-   )r/   nanmaxnanminarrr.   s     r   nanptpr:   *   s+    9St$$$ry4'@'@'@@@r   c                 4    t          j        | dz  |          S )N   r-   )r/   nansumr8   s     r   nanussr>   .   s    9SAXD))))r   c                 :    t          j        | t          |          S r5   )r/   nanpercentilePERCENTILESr8   s     r   r@   r@   2   s    C48888r   c                 0    t          j        | |d          S Nomit)r.   
nan_policy)r   kurtosisr8   s     r   nankurtosisrG   6   s    >#DV<<<<r   c                 0    t          j        | |d          S rC   )r   skewr8   s     r   nanskewnessrJ   :   s    :c8888r   )obsmeanstdr(   r)   ptpvarrI   ussrF   percentilesc                 j    	 t          j        |           }n# t          $ r t          j        }Y nw xY w|S )zi
    wrapper for scipy.stats.kurtosis that returns nan instead of raising Error

    missing options
    )r   rF   
ValueErrorr/   nanaress     r   	_kurtosisrX   M   sC    nQ   fJ    00c                 j    	 t          j        |           }n# t          $ r t          j        }Y nw xY w|S )ze
    wrapper for scipy.stats.skew that returns nan instead of raising Error

    missing options
    )r   rI   rS   r/   rT   rU   s     r   _skewr[   Z   sA    jmm   fJrY   c                 l   t          j        |           } t          j        | |k              }t          j        | |k               }||z
  dz  }	 t          j        t          ||          ||z   d          j        }n7# t          $ r* t          j        t          ||          ||z   d          }Y nw xY w||fS )a8  
    Signs test

    Parameters
    ----------
    samp : array_like
        1d array. The sample for which you want to perform the sign test.
    mu0 : float
        See Notes for the definition of the sign test. mu0 is 0 by
        default, but it is common to set it to the median.

    Returns
    -------
    M
    p-value

    Notes
    -----
    The signs test returns

    M = (N(+) - N(-))/2

    where N(+) is the number of values above `mu0`, N(-) is the number of
    values below.  Values equal to `mu0` are discarded.

    The p-value for M is calculated using the binomial distribution
    and can be interpreted the same as for a t-test. The test-statistic
    is distributed Binom(min(N(+), N(-)), n_trials, .5) where n_trials
    equals N(+) + N(-).

    See Also
    --------
    scipy.stats.wilcoxon
    g       @      ?)	r/   asarrayr1   r   	binomtestr)   pvalueAttributeError
binom_test)sampmu0posnegMps         r   	sign_testri   g   s    F :dD
&

C
&

C	scA<OCSMM39c::A < < <Sc]]C#Is;;< a4Ks   ,A; ;1B/.B/)nobsmissingrL   std_errcirM   iqr
iqr_normalmad
mad_normalcoef_varranger(   r)   rI   rF   r   modemedianrQ   )rj   rk   distincttopfreqc                 $    g | ]}|t           v|S  )NUMERIC_STATISTICS.0stats     r   
<listcomp>r      s*       t;M/M/MD/M/M/Mr   c                   h   e Zd ZdZg dZeZeZe	Z
	 dddddeddd	eej        ej        ej        f         d
ee         dededededeeeef                  defdZdej        dej        fdZedej        fd            Zedej        fd            Zedej        fd            ZdefdZdefdZdS )Descriptiona  
    Extended descriptive statistics for data

    Parameters
    ----------
    data : array_like
        Data to describe. Must be convertible to a pandas DataFrame.
    stats : Sequence[str], optional
        Statistics to include. If not provided the full set of statistics is
        computed. This list may evolve across versions to reflect best
        practices. Supported options are:
        "nobs", "missing", "mean", "std_err", "ci", "ci", "std", "iqr",
        "iqr_normal", "mad", "mad_normal", "coef_var", "range", "max",
        "min", "skew", "kurtosis", "jarque_bera", "mode", "freq",
        "median", "percentiles", "distinct", "top", and "freq". See Notes for
        details.
    numeric : bool, default True
        Whether to include numeric columns in the descriptive statistics.
    categorical : bool, default True
        Whether to include categorical columns in the descriptive statistics.
    alpha : float, default 0.05
        A number between 0 and 1 representing the size used to compute the
        confidence interval, which has coverage 1 - alpha.
    use_t : bool, default False
        Use the Student's t distribution to construct confidence intervals.
    percentiles : sequence[float]
        A distinct sequence of floating point values all between 0 and 100.
        The default percentiles are 1, 5, 10, 25, 50, 75, 90, 95, 99.
    ntop : int, default 5
        The number of top categorical labels to report. Default is

    Attributes
    ----------
    numeric_statistics
        The list of supported statistics for numeric data
    categorical_statistics
        The list of supported statistics for categorical data
    default_statistics
        The default list of statistics

    See Also
    --------
    pandas.DataFrame.describe
        Basic descriptive statistics
    describe
        A simplified version that returns a DataFrame

    Notes
    -----
    The selectable statistics include:

    * "nobs" - Number of observations
    * "missing" - Number of missing observations
    * "mean" - Mean
    * "std_err" - Standard Error of the mean assuming no correlation
    * "ci" - Confidence interval with coverage (1 - alpha) using the normal or
      t. This option creates two entries in any tables: lower_ci and upper_ci.
    * "std" - Standard Deviation
    * "iqr" - Interquartile range
    * "iqr_normal" - Interquartile range relative to a Normal
    * "mad" - Mean absolute deviation
    * "mad_normal" - Mean absolute deviation relative to a Normal
    * "coef_var" - Coefficient of variation
    * "range" - Range between the maximum and the minimum
    * "max" - The maximum
    * "min" - The minimum
    * "skew" - The skewness defined as the standardized 3rd central moment
    * "kurtosis" - The kurtosis defined as the standardized 4th central moment
    * "jarque_bera" - The Jarque-Bera test statistic for normality based on
      the skewness and kurtosis. This option creates two entries, jarque_bera
      and jarque_beta_pval.
    * "mode" - The mode of the data. This option creates two entries in all tables,
      mode and mode_freq which is the empirical frequency of the modal value.
    * "median" - The median of the data.
    * "percentiles" - The percentiles. Values included depend on the input value of
      ``percentiles``.
    * "distinct" - The number of distinct categories in a categorical.
    * "top" - The mode common categories. Labeled top_n for n in 1, 2, ..., ``ntop``.
    * "freq" - The frequency of the common categories. Labeled freq_n for n in 1,
      2, ..., ``ntop``.
    rj   rk   rv   NT皙?Fr   numericcategoricalalphause_trQ   ntopdatar   r   r   r   r   rQ   r   c          
         |}	t          |t          j        t          j        f          st	          |dd          }	|	j        dk    rt          j        |          }t          |d          }t          |d          }g }
d}|r!|
                    t          j	                   d}|r'|
                    d           ||dk    rd	ndz  }|dz  }|s|st          d
          t          j        |                              |
          | _        | j        j        d         dk    rt          d| d          d | j        j        D             | _        d | j        j        D             | _        |3d |D             }|r%t          d                    |           d          |t%          t&                    nt%          |          | _        t+          |d          | _        d| j        v | _        d| j        v | _        | j        r6| j        dcxk    rt3          | j                  k     rn nt          d          ddgddgddgd t5          d| j        dz             D             d t5          d| j        dz             D             d}|D ]U}|| j        v rJ| j                            |          }| j        d |         ||         z   | j        |dz   d          z   | _        Vt	          |d dd!"          | _        t          j        | j                  | _        t          j        | j                  j        d         | j        j        d         k    rt          d#          t          j        | j        d$k              st          j        | j        dk              rt          d%          tA          |d&          | _!        d|cxk     rdk     sn t          d'          t          |d(          | _"        d S ))Nr   r<   )maxdimr   r   r    categoryzand z4At least one of numeric and categorical must be Truer   z
Selecting z results in an empty DataFramec                 ,    g | ]}t          |          S rz   )r   r}   dts     r   r   z(Description.__init__.<locals>.<listcomp>1  s!    MMMR,R00MMMr   c                 ,    g | ]}t          |          S rz   r	   r   s     r   r   z(Description.__init__.<locals>.<listcomp>2  s.     
 
 
)+ $$
 
 
r   c                 $    g | ]}|t           v|S rz   )DEFAULT_STATISTICSr|   s     r   r   z(Description.__init__.<locals>.<listcomp>7  s#    NNNdt;M/M/MT/M/M/Mr   z, z are not known statisticsr   rw   rx   z"top must be a non-negative integerrt   	mode_frequpper_cilower_cir   jarque_bera_pvalc                     g | ]}d | S top_rz   r}   is     r   r   z(Description.__init__.<locals>.<listcomp>J  s    AAA1J1JJAAAr   c                     g | ]}d | S freq_rz   r   s     r   r   z(Description.__init__.<locals>.<listcomp>K  s    CCCQ[Q[[CCCr   )rt   rm   r   rw   rx   rQ   d)r   r   zpercentiles must be distinctd   z.percentiles must be strictly between 0 and 100r   z&alpha must be strictly between 0 and 1r   )#r   r   Series	DataFramer   ndimr   appendr/   numberrS   select_dtypes_datashapedtypes_is_numeric_is_cat_likejoinlistr   _statsr   _ntop_compute_top_compute_freqr1   rs   index_percentilessortuniqueanyr   _alpha_use_t)selfr   r   r   r   r   r   rQ   r   data_arrinclude	col_typesundefreplacementskeyidxs                   r   __init__zDescription.__init__  sW    $BL 9:: 	:!$q999H=A9T??DGY//];;	 	"NN29%%%!I 	'NN:&&&9??:I&I 	{ 	F   \$''55g>>
:A!##FYFFF   NM4:;LMMM
 
/3z/@
 
 
 NNeNNNE  yy''BBB   ).D#$$$4;; 	 dF++
!T[0#t{2 	Cq!I!I!I!I3t7H3I3I!I!I!I!I!IABBB [)z*)+=>AAaa(@(@AAACC%4:>*B*BCCC
 
   	 	Cdk!!k'',,K%"3'(k#')),-  'q
 
 
 GD$5669T&''-a0D4E4KA4NNN;<<<6$#s*++ 	Orvd6G16L/M/M 	OMNNN 005}}}}1}}}}EFFFw//r   r*   returnc                 @    j         fd| j        D                      S )Nc                 &    g | ]}|j         v |S rz   r   )r}   sr*   s     r   r   z(Description._reorder.<locals>.<listcomp>e  s     ???Qbhqr   )locr   )r   r*   s    `r   _reorderzDescription._reorderd  s'    v????$+???@@r   c                     | j         }| j        }|j        d         dk    r|S |j        d         dk    r|S t          j        ||gd          }|                     || j        j                           S )z
        Descriptive statistics for both numeric and categorical data

        Returns
        -------
        DataFrame
            The statistics
        r   r   r-   )r   r   r   r   concatr   r   columns)r   r   r   r*   s       r   framezDescription.frameg  sx     ,&Q1$$N]1""Y-A666}}R
 23444r   c           	         "#  j         j        dd j        f         }|j        }|j        \  }}|                                }|                                }|                                }||z
                                                                  }|	                                }	|	j        |dk    xx         |j        |dk             dz  z  cc<    j
        r6t          j        |dz
                                d j        dz  z
            }
n*t          j                            d j        dz  z
            }
d }|                    |          j        }|j        dk    rt'          |t(          j                  rHt-          j        |d         t0                    }t-          j        |d         t,          j                  }ng }g }|j        D ]E}|j        |         }|                    |d                    |                    |d                    Ft-          j        |          }t-          j        |          }nt-          j        d          x}}|dk    }t-          j        |j        d         t,          j                  }||         |j        |         z  ||<   |}	 dd	l m!} |	                                }|D ]l} |||         j"                  rT||         #                                $                                r(||         %                    t,          j                  ||<   mn# tL          $ r Y nw xY w|j        d         dk    r,|'                    d
          |'                    d          z
  }n|}d "|                    "fdd          j        }|	                                }t,          j        |j        |dk    <   ||z  }i dt)          j(        t-          j)        |t,          j                  |j        d         z  |          d|j        d         |z
  d|d|	d||
|	z  z   d||
|	z  z
  d|d|d|d|dtU          |          d|+                                d|,                                d|d         d|d          d!|t-          j-        t          j                            dd
g                    z  d"|t-          j.        dt,          j/        z            z  |d         |d         t)          j(        ||          t)          j(        ||          |0                                d#} fd$|1                                D             }t)          j        te          |3                                          |te          |4                                          %          }d& j5        vr|S |j        d         dk    r6|'                     j6        d'z            7                    t0                    }n#t)          j         j6        d'z  t0          (          }t-          j8        t-          j9        d'|j        z            d'|j        z  k              rd) |j        D             |_        nd*}d'}|j        } |rO|d+z  }t-          j9        ||j        z            }t-          j8        t-          j-        |          dk              rd,}|Ot-          j9        || z            |d'z  z  } d-tu          tw          |d'z                      dz
   d.}!d/|! d0##fd1| D             |_         j5        |j        <                                z    _5         =                    t)          j>        ||gd2                    S )3z
        Descriptive statistics for numeric data

        Returns
        -------
        DataFrame
            The statistics of the numeric columns
        Nr   r]   r   g      ?r<   c                    t          | j        t          j                  r| j        n| j        j        }|                                                     |          }t          ri nddi}t          j        |fi |}t          j	        |d                   rt          |d                   |d         fS |d         j        d         dk    rd |D             S t          j        t          j        fS )Nr   keepdimsTr   r   c                 ,    g | ]}t          |          S rz   )float)r}   vals     r   r   z6Description.numeric.<locals>._mode.<locals>.<listcomp>  s    777sc

777r   )r   r   r/   numpy_dtypedropnato_numpyr   r   rt   isscalarr   r   rT   )serr   ser_no_missingkwargsmode_ress        r   _modez"Description.numeric.<locals>._mode  s    !+CIrx!@!@[CIIciF[E ZZ\\222??N#;RR*d);Fz.;;F;;H{8A;'' 7Xa[))8A;66{ #a''77h7777626>!r   r   )is_extension_array_dtypeg      ?g      ?c                     t          j        |           }|j        d         dk     rt           j        fdz  S t	          |          S )Nr   r<      )r/   r^   r   rT   r   )crV   s     r   _safe_jarque_beraz.Description.numeric.<locals>._safe_jarque_bera  s8    
1AwqzA~~y1}$q>>!r   c                 X    t           |                                                     S r   )r   r   )r2   r   s    r   <lambda>z%Description.numeric.<locals>.<lambda>  s#    d,,QXXZZ8899 r   expand)result_typerj   r   rk   rL   rl   r   r   rM   rn   rp   rr   rs   r(   r)   rI   rF      ro   rq   )r   r   rt   r   ru   c                 .    i | ]\  }}|j         v ||S rz   r   r}   kvr   s      r   
<dictcomp>z'Description.numeric.<locals>.<dictcomp>  +    FFF$!QQ$+5E5EA5E5E5Er   )r   r   rQ   r   )r   r   c                 8    g | ]}t          d |z             dS )r   %)intr}   r   s     r   r   z'Description.numeric.<locals>.<listcomp>  s+    EEE3Ss^^...EEEr   Tr    Fz0.fz{0:z}%c                 :    g | ]}                     |          S rz   )format)r}   r   outputs     r   r   z'Description.numeric.<locals>.<listcomp>  s%    >>>&--,,>>>r   r-   )?r   r   r   r   r   rM   countrL   abscopyr   r   tppfr   normapplyTsizer   r   r   r/   r^   r   int64r   r   
atleast_1demptyfullrT   pandas.api.typesr   r   isnullr   fillnaImportErrorquantiler   onesr+   r(   r)   diffsqrtpiru   itemsr   valueskeysr   r   astypeallfloorlenstrtolistr   r   )$r   r*   cols_r   rM   r   rL   rp   rl   qr   mode_valuesrt   mode_countsr   r   r   r   _dfr   colrn   jbnan_meanrr   resultsfinal
results_dfpercdupescaler   fmtr   r   s$   `                                 @@r   r   zDescription.numericz  s     :>!!!T-=*=>zx1ffhh

wwyyDyoo$$&&((**EAI%)EAI"6#"==; 	6	""&&sT[1_'<==AA
sT[1_455A
	" 
	" 
	" hhuoo'a+r|44 9z+a.>>> jQrxHHH  &, / /C%/#.CKKA'''&&s1v....}T** mK88!#!,D;aiGDJqM2622	$S)EIcN:	# 	AAAAAA''))C ; ;++BsGM:: ;3x((,,.. ;#&s8??26#:#:C;  	 	 	D	 8A;??,,t$$s||D'9'99CCC	" 	" 	" XX9999x  
 

 	 99;;&(fX]#>
BI***RXa[8  
 rx{U*	

 D
 w
 q7{*
 q7{*
 3
 3
 3
 
 VBZZ
 26688
 26688
  BqE!
" 1#
$ #
d|(D(D E EE%
& #BE	 2 22'
( a5 "1Id$///9D999iikk1
 
 
4 GFFF'--//FFF\  $d5::<<6H6H
 
 

 ++8A;??<< 1C 788??FFDD<d&7#&=UKKKD6"(3+,,tz1ABCC 	?EE$*EEEDJJDEJE !hutz1226"'#,,*++ ! D	  !
 HUU]++us{;E0s3ucz??++A-000C$C___F>>>>>>>DJ kDJ$5$5$7$77}}RY
D'9BBBCCCs   !B	L+ +
L87L8c                      j         j        ddd  j        D             f         j        d         }j        }fdD             t          j        fdD             t          j                  }i }i }D ]}|         }|j        d          j	        k    r<|j
        d j	                 ||<   t          j        |j        dd                   ||<   \t          |j
                  }|dg j	        t          |          z
  z  z  }|||<   t          |          }	|	t          j        g j	        t          |	          z
  z  z  }	t          j        |	          ||<   d	 t!          d j	        dz             D             }
t          j        |d
|
|          }d t!          d j	        dz             D             }
t          j        |d
|
|          }t          j        t          j        |t          j                  j        d         z  |          j        d                                         z
  |d} fd|                                D             }t          j        t          |                                          |t          |                                          d
          } j        rt          j        ||gd          } j        rt          j        ||gd          }                     |          S )z
        Descriptive statistics for categorical data

        Returns
        -------
        DataFrame
            The statistics of the categorical columns
        Nc                     g | ]}|S rz   rz   r}   r  s     r   r   z+Description.categorical.<locals>.<listcomp>  s    AAAAAAr   r   c                 J    i | ]}||                              d            S )T)	normalize)value_counts)r}   r  r*   s     r   r   z+Description.categorical.<locals>.<dictcomp>  s0    FFFCc2c7''$'77FFFr   c                 8    i | ]}||         j         d          S r   )r   )r}   r  vcs     r   r   z+Description.categorical.<locals>.<dictcomp>  s&    111sS"S'-"111r   r   r   r   c                     g | ]}d | S r   rz   r   s     r   r   z+Description.categorical.<locals>.<listcomp>-  s    >>>>>>r   object)r   r   r   c                     g | ]}d | S r   rz   r   s     r   r   z+Description.categorical.<locals>.<listcomp>/  s    ??????r   r   r   c                 .    i | ]\  }}|j         v ||S rz   r   r   s      r   r   z+Description.categorical.<locals>.<dictcomp>9  r   r   )r   r   r   r-   )r   r   r   r   r   r   r   r/   r   r   r   r^   ilocr   r  rT   rs   r   r	  r   r  r  r  r   r   r   r   )r   r   r  rv   rw   rx   r  singler   freq_valr   top_dffreq_dfr  r   r!  r*   r.  s   `               @@r   r   zDescription.categorical  s    Z^AAAAAt/@AAAABHQKzFFFF2FFF91111b111
 
 
  	1 	1CWF|A$*,,!<$*5CJv{2A277S		6<((vc#hh!677C<<RVH
S]](BCCJx00S		>>U1dj1n%=%=>>>cMMM??eAtzA~&>&>???,t85$OOO I***RXa[8   x{RXXZZ/ 
 
 GFFF'--//FFF\  uzz||$$	
 
 

  	AJ#7a@@@J 	BJ#8qAAAJ}}Z(((r   c                    | j                             t                    }|                                                                                                r|                    d          }d |j        D             }d |j        D             }g }|                                D ]$\  }}|	                    d |D                        %d }t          |||ddd|d	id
gt          |          z            S )z
        Summary table of the descriptive statistics

        Returns
        -------
        SimpleTable
            A table instance supporting export to text, csv and LaTeX
        r   c                 ,    g | ]}t          |          S rz   r  r(  s     r   r   z'Description.summary.<locals>.<listcomp>S  s    ///SC///r   c                 ,    g | ]}t          |          S rz   r:  r   s     r   r   z'Description.summary.<locals>.<listcomp>T  s    ...cS...r   c                     g | ]}|S rz   rz   )r}   r   s     r   r   z'Description.summary.<locals>.<listcomp>W  s    (((q(((r   c                     t          | t                    r| S | dz  | k    rt          t          |                     S | dS )Nr   z0.4g)r   r  r   )r   s    r   
_formatterz'Description.summary.<locals>._formatterY  sB    !S!! #a13q66{{";;r   zDescriptive Statistics	data_fmtsz%s)r   r   r   )headerstubstitletxt_fmt	datatypes)r   r  r0  r  r   r  r   r   iterrowsr   r   r  )r   r*   r  rA  r   r  rowr>  s           r   summaryzDescription.summaryG  s    Zv&&99;;??  "" 	2B//BJ///..RX...kkmm 	* 	*FAsKK((C((())))	 	 	 * dz":":;cCIIo
 
 
 	
r   c                 h    t          |                                                                           S r   )r  rG  as_text)r   s    r   __str__zDescription.__str__i  s$    4<<>>))++,,,r   r   ) __name__
__module____qualname____doc___int_fmtr{   numeric_statisticsCATEGORICAL_STATISTICScategorical_statisticsr   default_statisticsrA   r   r/   ndarrayr   r   r   r   r  boolr   r   r   r   r   r   r   r   r   rG  rJ  rz   r   r   r   r      s       P Pd /..H+3+
  $W0
  3>W0 W0 W0BJ	2<78W0 }W0
 W0 W0 W0 W0 eCJ/0W0 W0 W0 W0 W0rA2< ABL A A A A 5r| 5 5 5 ^5$ PD PD PD PD ^PDd 7)R\ 7) 7) 7) ^7)r 
  
  
  
  
D- - - - - - -r   r   Returnsr   zDescriptive statistics
AttributeszSee Also)zpandas.DataFrame.describeNzBasic descriptive statistics)r   Nz;Descriptive statistics class with additional output optionsTr   Fr   r   r   r   r   r   r   r   rQ   r   r   c          
      :    t          | |||||||          j        S )Nr   )r   r   )r   r   r   r   r   r   rQ   r   s           r   describerY    s8     	 	 	 	r   c                       e Zd ZdZd ZdS )Describez
    Removed.
    c                      t          d          )NzDescribe has been removed)NotImplementedError)r   datasets     r   r   zDescribe.__init__  s    !"=>>>r   N)rK  rL  rM  rN  r   rz   r   r   r[  r[    s-         ? ? ? ? ?r   r[  r-  r   )Estatsmodels.compat.pandasr   r   r   statsmodels.compat.scipyr   typingr   collections.abcr   numpyr/   pandasr   pandas.core.dtypes.commonr
   scipyr   statsmodels.iolib.tabler   statsmodels.stats.stattoolsr   statsmodels.tools.decoratorsr   statsmodels.tools.docstringr   r   statsmodels.tools.validationr   r   r   r   rA   array	QUANTILESr+   r3   r:   r>   r@   rG   rJ   nanmeannanstdr6   r7   nanvarMISSINGrX   r[   ri   r{   rQ  _additionaltupler   r   rN  dsreplace_blockr  rT  r   r   rU  r   r   rY  r[  rz   r   r   <module>rv     sp   I I I I I I I I I I - - - - - -       $ $ $ $ $ $        
 6>>>>>>>6 6 6       / / / / / / 3 3 3 3 3 3 7 7 7 7 7 7 < < < < < < < <            1BH[!!E)	  , , , ,A A A A* * * *9 9 9 9= = = =9 9 9 9
 J9999  
 
 

 
 
, , , ,^ , H  +   (%%*<*<< w- w- w- w- w- w- w- w-t Y{"##   yy{-E,FGG     r " " "    11+,	

 ##JK	
	   
##b''   /:  

BIr|3
4C= 	
    %U
+,  \   .? ? ? ? ? ? ? ? ? ?r   