
!Vc           @   s  d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d   Z d   Z d d  Z	 d   Z
 d   Z d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d d  Z d   Z d d  Z d   Z d   Z d   Z d   Z d   Z  d   Z! d   Z" d    Z# d!   Z$ d"   Z% d#   Z& d$   Z' d%   Z( d&   Z) d'   Z* d(   Z+ d)   Z, d S(*   i(   t   divisionNc         C   s   d g | } | d 9} | d 9} | | | } xM |  D]E } | | k r6 | | k  r6 t  | | |  } | | c d 7<q6 q6 W| S(   Ni    g      ?i   (   t   int(   t   farrayt   lot   hit   num_binst   binst   mult   elementt   idx(    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   make_histogram   s    
 
c         C   s   t  j | |  } | d 9} | d 9} | d 9} | d 9} | | | } | | | }	 x |  D]{ \ }
 } |
 | k r] |
 | k  r] | | k r] | | k  r] t |
 | |  } t | | |	  } | | | c d 7<q] q] W| S(   Ng      ?i   (   t	   sackmat_mt   make_zero_matrixR   (   t   xy_pairst   lo_xt   hi_xt
   num_x_binst   lo_yt   hi_yt
   num_y_binsR   t   mul_xt   mul_yt   xt   yt   x_idxt   y_idx(    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   make_histogram2'   s    
 
 
 
0i    c         C   sl   g  } | |  d | } xM t  d |  D]< } | rI |  | d | } n |  | | } | j |  q( W| S(   Ng      ?i    g      ?(   t   ranget   append(   R   R   R   t   centert   listt   deltat   it   label(    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   make_histogram_labels9   s    c         C   s4   |  d } x# |  D] } | | k  r | } q q W| S(   Ni    (    (   R   R   R   (    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   find_minE   s
    
c         C   s4   |  d } x# |  D] } | | k r | } q q W| S(   Ni    (    (   R   R   R   (    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   find_maxM   s
    
c         C   sY   |  d } |  d } x8 |  D]0 } | | k  r6 | } n  | | k r | } q q W| | g S(   Ni    (    (   R   R   R   R   (    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   find_boundsU   s    

	c         C   s/   d } x |  D] } | | 7} q W| t  |   S(   Ng        (   t   len(   R   t   sumR   (    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt	   find_meana   s    c         C   sD   d } x  |  D] } | | | d 7} q Wt  j | t |   d  S(   Ng        i   i   (   t   matht   sqrtR&   (   R   t   meanR'   R   (    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   find_stddevi   s    c         C   s,   t  |  |  } t |   } | t j |  S(   N(   R,   R&   R)   R*   (   R   R+   t   st   n(    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   find_stderrq   s    c         C   s7   d } x  |  D] } | | | d 7} q W| t  |   S(   Ng        i   (   R&   (   t   xsR+   R'   R   (    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   find_popvarauxx   s    c         C   s   t  |  t |    S(   N(   R1   R(   (   R0   (    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   find_popvar~   s    c         C   s;   d } x  |  D] } | | | d 7} q W| t  |   d S(   Ng        i   i   (   R&   (   R0   R+   R'   R   (    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   find_sampvaraux   s    c         C   s   t  |  t |    S(   N(   R3   R(   (   R0   (    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   find_sampvar   s    c         C   s   t  |   t |   S(   N(   R4   R&   (   R0   (    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   find_var_of_sample_mean   s    c         C   s   t  |   } d } d } d } x |  D] } | | 7} q% W| | } x@ |  D]8 } | | } | | } | | }	 | | 7} | |	 7} qJ W| | }
 | | } |
 d k r d Sd | d |
 |
 Sd  S(   Ng        g      ?i   (   R&   (   R   R.   t   sumxt   sumx2t   sumx4R   t   meanxR   t   x2t   x4t   meanx2t   meanx4(    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   find_fourth_order_cumulant   s$    






c         C   sM  t  |   } d } d } d } d } xN |  D]F } | | 7} | | | 7} | | | | 7} | | | | | 7} q+ W| | } | | } | | }	 | |	 }
 | d | | d | | d |	 | | |
 } | | d | | | | | |
 d | | | d | | | d | |	 | } | d k r5d Sd | | d | Sd  S(   Ng        i   i   i   g      ?i   (   R&   (   R   R.   R6   R7   t   sumx3R8   R   t   xbart   xbar2t   xbar3t   xbar4t   numert   denom(    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   find_fourth_order_cumulant_temp   s&    




2Vc         C   sn   t  |   } t |   } t |  } d } x5 t d |  D]$ } | |  | | | | | 7} q: W| | d S(   Ng        i    g      ?(   R&   R(   R   (   R0   t   yst   Nt   mean_xt   mean_yR'   t   k(    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   find_sample_covariance   s    "c         C   s]   t  |   } t |  |  } t |   } t |  } t |  |  } t | |  } | | | S(   N(   R&   RL   R(   R,   (   R0   RG   RH   t   covRI   RJ   t   stddev_xt   stddev_y(    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   find_sample_correlation   s    c         C   s   t  |   } | d k r! | } n  d g | } t |  |  } d } | | d <x3 t d |  D]" } | d | | 7} | | | <q] W| S(   Ni    g        g      ?i   i   (   R&   t   find_sample_autocorrR   (   R0   t   numkRH   t   tauintt   autocorrR'   t   t(    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   find_sample_tauint   s    	
c         C   s  t  |   } d } d } d } x9 t d |  D]( } |  | } | | 7} | | | 7} q. W| } | } d }	 d }
 xt d | d  D]} | | } | d } | } | d k r d } n  | } | | d } |  | } |  | } |  | d } |  | d } | | 8} | | | 8} | | 8} | | | 8} d } x1 t d |  D]  } | |  | |  | | 7} qEW| | } | | } t j | | d | |  } t j | | d | |  } d } | d k r| d k r| | | | | | } n  |	 d | 7}	 | d k  r |	 Sq W|	 S(   Ni   g        i    g      ?i   i   g       @(   R&   R   R)   R*   (   R0   RH   t   minflatt   sumit   sumi2RK   R   t   sumjt   sumj2RS   t   nflatRU   t   winszt   winszm1RE   R    t   jt   xit   xjt   ximt   xjpt   sumijt   meanit   meanjt   stdit   stdjt
   autocorr_t(    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   find_sample_tauint_flat_spot   sT     

 

	 
 
 
 
 
 
c         C   s  t  |   } | d k r! | } n  d g | } | d k sF | | k rm t j d | | f IJt j d  n  d } d } d } d } d } | d }	 xz t | d | d d  D]^ }
 |  | } |  |	 } | | 7} | | d 7} | | 7} | | d 7} | d 7} |	 d 8}	 q Wxt | d d d  D]k}
 |  | } |  |	 } | | 7} | | d 7} | | 7} | | d 7} | |
 } | d } |
 | d k r| d 7} |	 d 8}	 q)n  d } x1 t d |  D]  } | |  | |  | |
 7} qW| | } | | } t j | | d | |  } t j | | d | |  } | d k sU| d k rbd | |
 <n | | | | | | | |
 <| d 7} |	 d 8}	 q)Wd }
 | } | d } |  | d } | | 7} | | d 7} | | } t j | | d | |  } | | | | | | | d <| S(   Ni    g        i   s;   find_sample_autocorr: numk must be > 1 and <= N=%d; got %d.ii   (   R&   t   syst   stderrt   exitR   R)   R*   (   R0   RR   RH   RT   RX   RY   RZ   R[   R    R_   RK   R`   Ra   R]   R^   Rd   t   ellRe   Rf   Rg   Rh   (    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyRQ   Y  sv    	   
!
 

 
 
 
 

 
 
 

 

 

  


c         C   s   t  |   } d g | } x t d | d  D] } |  d | | !} |  | | !} t |  } t |  } t | |  } t | |  }	 d }
 x5 t d | |  D]  } |
 |  | |  | | 7}
 q W|
 | | } | | | | |	 | | <q- W| S(   Ng        i    i   (   R&   R   R(   R,   (   R0   RH   RT   RK   t   window1t   window2t   mean1t   mean2t   std1t   std2t	   cross_sumR    t
   cross_mean(    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   find_sample_autocorr_old1  s    c         C   s   t  |   } t  |  d  } d g | } x< |  D]4 } x+ t d |  D] } | | c | | 7<qF Wq0 Wx+ t d |  D] } | | c d | 9<qx W| S(   Ni    g        g      ?(   R&   R   (   t   varrayRH   R.   R'   t   vectorR_   (    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   find_vector_mean'  s    c         C   s   t  |   } t  |  d  } d g | } xH |  D]@ } x7 t d |  D]& } | | c | | | | d 7<qF Wq0 Wd | d } x2 t d |  D]! } t j | | |  | | <q W| S(   Ni    g        i   g      ?i   (   R&   R   R)   R*   (   Rx   t   vmeanRH   R.   R'   Ry   R_   RE   (    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   find_vector_stddev7  s    (c   	      C   s   t  |   } t  |  d  } t |   } t j | |  } x t d |  D] } x{ t d |  D]j } d } xE t d |  D]4 } | |  | | | | |  | | | | 7} q| W| | d | | | <q` WqJ W| S(   Ni    g        g      ?(   R&   Rz   R   R   R   (	   R0   t   nxt   dimR+   t   QR    R_   R'   RK   (    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   find_sample_covariance_matrix  s    2c         C   s   t  |   } t  |  d  } t |   } t |   } t |  |  } xQ t d |  D]@ } x7 t d |  D]& } | | | c | | | | <qi WqS W| S(   Ni    (   R&   R   Rz   R|   R   (   R0   R}   R~   RM   R{   t   vstddevR    R_   (    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   find_sample_correlation_matrix  s    (c         C   sK  d } d } d } d } t  |   } x[ t d |  D]J } |  | } | | }	 | | 7} | |	 7} | | |	 7} | | | 7} q4 W| | | d }
 | | | | |
 } | | | | |
 } d } x9 t d |  D]( } | | |  | | | | d 7} q W| | } | | |
 } | | |
 } | | t j |  t j |  g S(   Ng        i    i   (   R&   R   R)   R*   (   R0   RG   t   sumxit   sumyit   sumxiyit   sumxi2RH   R    R   R   t   Dt   mt   bt   var_zt   var_mt   var_b(    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   linear_regression  s,    



&
c         C   sa  g  } t  |   } x2 t d |  D]! } | j |  | | | g  q" Wt |  } t j |  \ } } | d } | d }	 t |  }
 t |	  } d } d } |
 | k r | d d } | d d } n6 | |
 }
 } |	 | } }	 | d d } | d d } d } | d k r$d | |
 } n  t |   } t |  } | | } | | | } | | | g S(   Ni    i   g        g      ?(   R&   t   xrangeR   R   R   t   rs_eigensystemt   absR(   (   R0   RG   R   R.   R    R   t   Lt   Vt   lambda1t   lambda2t   abs1t   abs2t   a0t   a1t   qualityt   mut   nuR   R   (    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   linear_regression_pca  s6    


c         C   s   d } d } d } d } d } t  |   } xi t d |  D]X } |  | }	 | | }
 | |	 7} | |
 7} | |	 |
 7} | |	 |	 7} | |
 |
 7} q: W| | | | } | | | d } | | | d } | t j | |  } | S(   Ng        i    i   (   R&   R   R)   R*   (   R0   RG   R   R   R   R   t   sumyi2RH   R    R   R   t   aR   t   ct
   corr_coeff(    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   get_corr_coeff  s&    



c         C   s   d d t  j | |  |  S(   Ng      ?(   R)   t   exp(   R   R   R   (    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   lrpn  s    c         C   s   d d t  j | |  |  S(   Ng      ?(   R)   R   (   R   R   R   (    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   lrqp  s    c   $      C   s  t  |   } d } t } x| sd }	 d }
 d } d } d } x t d |  D] } |  | } | | } t | | |  } t | | |  } |	 | | | 7}	 |
 | | 7}
 | | } | | } | | } | | 8} | | 8} | | 8} qO W| } | } | } | } | | | | } | | } | | } | | } | | } | |	 | |
 } | |	 | |
 }  | | }! | |  }" t j | d |  d  }# |# | k  rt } n  | d 7} | | k rd |  n  |! } |" } q W|! |" g S(   Ni    g        i   i   sN   logistic_regression_aux: Newton-Raphson convergence failed after %d iterations(   R&   t   FalseR   R   R   R)   R*   t   True($   R0   RG   t   m0t   b0t   tolt   maxitsRH   t   itst   donet   dldmt   dldbt   d2ldm2t   d2ldmdbt   d2ldb2R    R`   t   yit   pit   qit   piqit   xipiqit   xi2piqit   hat   hbt   hct   hdR   t   Hinvat   Hinvbt   Hinvct   Hinvdt	   Hinvgradmt	   HinvgradbR   R   t   err(    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   logistic_regression_auxr  sX    	










	

c         C   s   t  |  | d d d d  S(   NgMbPgMb`?g&.>i2   (   R   (   R0   RG   (    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   logistic_regression  s    c         C   s   t  j |   S(   N(   t   normal_mt   invnorm(   R   (    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   zscore  s    c         C   sU   t  |   } g  } x< t d |  D]+ } t d | d |  } | j |  q" W| S(   Ni    g      ?g      ?(   R&   R   R   R   (   t   xarrayR.   t   zarrayR    t   z(    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   get_normal_quantiles_zs  s    c         C   s`   t  j  |   } | j   t |  } t |  } x( t d |  D] } | | G| | GHqA Wd  S(   Ni    (   t   copyt   sortR   R&   R   (   R   R0   t   zsR.   R    (    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   print_normal_quantiles_zx  s    
c         C   sJ   t  |  } d } x) | D]! } | t j |  | |  7} q W| | | S(   Ng        (   R&   R   t	   normalpdf(   R   R   t   hRH   R'   R`   (    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   kernel_density_estimator  s
    c   	      C   s]   | | d | } xD t  d | d  D]/ } | | | } t | |  |  } | G| GHq& Wd  S(   Ng      ?i    i   (   R   R   (	   R   R   t   xlot   xhiR}   t   dxR    R   R   (    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   plot_kde  s
    (-   t
   __future__R    R)   R   R   R   Rk   R
   R   R"   R#   R$   R%   R(   R,   R/   R1   R2   R3   R4   R5   R>   RF   RL   RP   RV   Rj   RQ   Rw   Rz   R|   R   R   R   R   R   R   R   R   R   R   R   R   R   R   (    (    (    sC   /homepages/25/d321765456/htdocs/pub_http_internet/python/stats_m.pyt   <module>   sV   															&		
	^			N		5	!	,	R			^			
		