
p7]c        =   @   sr  d  Z  d d l Z d d l m Z m Z m Z d d l m Z m	 Z	 m
 Z
 m Z d d l m Z e j d j   e  j d d  Z e d d  d d  f Z d	 d
 d g d	 d d	 g d	 d d g g Z e j d
 d
 d
 d
 d
 d
 g d d d d d d g d d d d d d g d d d d d d g d d d d
 d
 d
 g d d d d d d g d d d d d d g d d d d d d
 g d d d
 d
 d
 d
 g d d d d d d g d d
 d
 d
 d
 d
 g d d d
 d
 d
 d
 g d d d d d d g d d
 d
 d
 d
 d
 g d d d
 d
 d
 d g d d d d d d g d d d d
 d d g d d d d d d g d d d
 d
 d
 d
 g d d d d d d g d d d d d d g d d
 d
 d
 d
 d
 g d d d
 d d d g d d d
 d
 d
 d
 g d d
 d
 d
 d
 d g d d d d d d
 g d d d d d d g d d d
 d
 d
 d
 g d d d d d d g d d d d d d g g  Z d d d d d d d d d d d d d d d d d d  d! d" d# d$ d% d& d' d( d) d* d+ d, g Z d- d. d/ d0 d1 d2 g Z d3   Z d4   Z d5 e f d6     YZ d7 e f d8     YZ d9 e f d:     YZ d;   Z e j d d d d
 d d d d d d d d< d d d d d d d
 d d d< d
 d< d d
 d d
 d d d d d d d d d d d d
 d d d
 d
 d d d d< d d d d d d d d d d d d g<  j d= d d> d? Z  d d d d d d d d d d d d d d d d d d  d! d" g Z! d- d. d/ g Z" d@   Z# dA   Z$ dB   Z% dC   Z& d S(D   s>   

Created on Mon Dec 10 09:18:14 2012

Author: Josef Perktold
iN(   t   assert_almost_equalt   assert_equalt   assert_allclose(   t   fleiss_kappat   cohens_kappat   to_tablet   aggregate_raters(   t   Holders   1 	0 	0 	0 	0 	14 	1.000
2 	0 	2 	6 	4 	2 	0.253
3 	0 	0 	3 	5 	6 	0.308
4 	0 	3 	9 	2 	0 	0.440
5 	2 	2 	8 	1 	1 	0.330
6 	7 	7 	0 	0 	0 	0.462
7 	3 	2 	6 	3 	0 	0.242
8 	2 	5 	3 	2 	2 	0.176
9 	6 	5 	2 	1 	0 	0.286
10 	0 	2 	2 	3 	7 	0.286i
   i   i    i   i   i   i   i   t   1t   2t   3t   4t   5t   6t   7t   8t   9t   10t   11t   12t   13t   14t   15t   16t   17t   18t   19t   20t   21t   22t   23t   24t   25t   26t   27t   28t   29t   30t   rater1t   rater2t   rater3t   rater4t   rater5t   rater6c          C   s#   d }  t  t t  |  d d d  S(   NgzG?t   decimali   (   R    R   t   table1(   t   kappa_wp(    (    sG   lib/python2.7/site-packages/statsmodels/stats/tests/test_inter_rater.pyt   test_fleiss_kappaG   s    c          C   su  d d g d d g g }  t  t |  d d d  d d g d d g g }  t t |   d d	 d
 t t |  d d d d	 d
 d d g d d g g }  t t |  d d d d	 d
 t t |  d d d d	 d
 d d g d d g g }  t t |   d  t t |  d d d  d d d g d d d g g }  t t |   d d	 d
 t t |  d d d d	 d
 d  S(   Ni   i    t   methodt   unifi   g(\@g{Gz?gtE)!XUſt   atolgTqs*>gVBw?i   i   t   fleissgaM?t   randolphg@m?t   uniformi   g?t   randgL$?(   R   R   R   (   t   table(    (    sG   lib/python2.7/site-packages/statsmodels/stats/tests/test_inter_rater.pyt   test_fleis_randolphM   s    t   CheckCohensc           B   s   e  Z d    Z RS(   c         C   su   |  j  } |  j } | j | j | j | j | j | j | j | j	 g } t
 | | d d t t |  |  j  d  S(   NR,   i   (   t   rest   res2t   kappat	   std_kappat	   kappa_lowt	   kappa_uppt
   std_kappa0t   z_valuet   pvalue_one_sidedt   pvalue_two_sidedR    R   t   strt
   res_string(   t   selfR:   R;   t   res_(    (    sG   lib/python2.7/site-packages/statsmodels/stats/tests/test_inter_rater.pyt   test_resultsr   s    		(   t   __name__t
   __module__RH   (    (    (    sG   lib/python2.7/site-packages/statsmodels/stats/tests/test_inter_rater.pyR9   p   s   t   UnweightedCohensc           B   s    e  Z e d     Z d   Z RS(   c         C   sQ   t  t  |  _ d d d d g } d d d d g } | | |  _ d	 d
 |  _ d  S(   NgH.!?gDl?gݓZ?gQI&?g\m?go_
@ga2U0*C?g/nR?s                    Simple Kappa Coefficient
              --------------------------------
              Kappa                     0.4842
              ASE                       0.1380
              95% Lower Conf Limit      0.2137
              95% Upper Conf Limit      0.7547

                 Test of H0: Simple Kappa = 0

              ASE under H0              0.1484
              Z                         3.2626
              One-sided Pr >  Z         0.0006
              Two-sided Pr > |Z|        0.0011s   
(   R   t   table10R:   R;   RE   (   t   clst	   res10_sast   res10_sash0(    (    sG   lib/python2.7/site-packages/statsmodels/stats/tests/test_inter_rater.pyt   setup_class   s
    c         C   s0   t  t d t } t | |  j d d d d  S(   Nt   return_resultsi    R,   i   (   R   RL   t   FalseR    R;   (   RF   R<   (    (    sG   lib/python2.7/site-packages/statsmodels/stats/tests/test_inter_rater.pyt   test_option   s    (   RI   RJ   t   classmethodRP   RS   (    (    (    sG   lib/python2.7/site-packages/statsmodels/stats/tests/test_inter_rater.pyRK   }   s   t   TestWeightedCohensc           B   s    e  Z e d     Z d   Z RS(   c         C   s`   t  t d d d d g |  _ d d d d g } d	 d
 d d g } | | |  _ d d |  _ d  S(   Nt   weightsi    i   i   g_vO?gJ{/L?gV-?g:#J{/?gm4@?g!u`
@gMb@?gMbP?s                    Weighted Kappa Coefficient
              --------------------------------
              Kappa                     0.4701
              ASE                       0.1457
              95% Lower Conf Limit      0.1845
              95% Upper Conf Limit      0.7558

                 Test of H0: Weighted Kappa = 0

              ASE under H0              0.1426
              Z                         3.2971
              One-sided Pr >  Z         0.0005
              Two-sided Pr > |Z|        0.0010s   
(   R   RL   R:   R;   RE   (   RM   t
   res10w_sast   res10w_sash0(    (    sG   lib/python2.7/site-packages/statsmodels/stats/tests/test_inter_rater.pyRP      s
    c         C   s?   t  t d d d d g d t } t | |  j d d d d  S(   NRV   i    i   i   RQ   R,   i   (   R   RL   RR   R    R;   (   RF   R<   (    (    sG   lib/python2.7/site-packages/statsmodels/stats/tests/test_inter_rater.pyRS      s    !(   RI   RJ   RT   RP   RS   (    (    (    sG   lib/python2.7/site-packages/statsmodels/stats/tests/test_inter_rater.pyRU      s   c          C   s  t  j j d  t  j j d d d d d t  j d  }  t  j d d d d d g d d d d d g g  } t  j t  j | |   | j  } t |  d t  j	 d  d k d	 d
 } t | d t  j	 d  d	 d
 } t
 | j | j d d t
 | j | j d d t |  d d t  j	 d  d	 d
 } t |  d d t  j	 d  d	 d } t |  d | j d d	 d } t |  d | j } t
 | j | j d d t
 | j | j d d t
 | j | j d d t
 | j | j d d t
 | j | j d d t
 | j | j d d t |  d d t  j	 d  d d	 d } t |  d d t  j	 d  d	 d } t
 | j | j d d t
 | j | j d d d  S(   Ni> i    i
   t   sizei   i   RV   i   t   wtt   linearR,   i   t   toeplitzt	   quadratic(   i   i   (   t   npt   randomt   seedt   randintt   eyet   arrayt   dott   TR   t   arangeR    R<   t	   var_kappaRV   (   R7   t   matt	   table_aggt   res1R;   t   res3t   res4(    (    sG   lib/python2.7/site-packages/statsmodels/stats/tests/test_inter_rater.pyt   test_cohenskappa_weights   s,    ,3!'!%%)%i   i   t   ordert   Fc          C   s  t    }  t    } d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d | _ d | _ d | _ d | _ d	 | _ d
 | _ t    } t    } t    }  t    } d | _ d | _ d | _ d | _ d | _ d | _ d | _ d | _ d | _ d | _ d | _ d | _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d | _ d | _ d | _ d | _ d | _ d | _ | d  d  f | d  d f | t j	 d  d  f | t j	 d  d f |  d  d f |  t j	 d  d d f |  d  t j	 d  d d f | d! d! d" d" d g d f g } t j
 t d  d   d" d   f d" d d# d  d$ d% g d" d d# d  d$ d% g f  } x | D] \ } } } t |  t |  }	 t | d! d& | d' | }
 t |
 j | j d( d$ d) |	 t |
 j | j d( d d) |	 t |
 j | j d( d$ d) |	 qxWd  S(*   Ns1   Cohen's Kappa for 2 Raters (Weights: 0,0,0,1,1,1)t   Kappag`	Z7?t   zg18@?gpO?s1   Cohen's Kappa for 2 Raters (Weights: 0,0,1,1,2,2)gR ?gY?g٢?s0   Cohen's Kappa for 2 Raters (Weights: unweighted)gHByg+'끠gygu?s+   Cohen's Kappa for 2 Raters (Weights: equal)g^?gG \?g?s-   Cohen's Kappa for 2 Raters (Weights: squared)gAL!?gӣ?g,;͆F?s/   Cohen's Kappa for 2 Raters (Weights: 0,0,1,1,2)g\/ӛ?g_Pj?gٛsK?R[   i   R\   R]   i   i   i    i   i   i   i   RV   RZ   R,   t   err_msg(   R   R0   t   irr_namet   valuet	   stat_namet	   statistict   p_valuet   NoneR^   Rf   t   histogramddt   anxietyt   reprR   R    R<   RA   RC   (   t   ck_w3t   ck_w4t   ck_w1t   ck_w2t	   all_casest   rR;   t   wRZ   t   msgRj   (    (    sG   lib/python2.7/site-packages/statsmodels/stats/tests/test_inter_rater.pyt   test_cohens_kappa_irr   sr    																																										!Rc          C   su   t    }  d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ t t  d } t	 |  } t
 | |  j d d d  S(	   Ns   Fleiss' Kappa for m RatersRp   g*2: ?Rq   g;Tަ1@i    R,   i   (   R   R0   Rs   Rt   Ru   Rv   Rw   R   t	   diagnosesR   R    (   R3   t   data_t
   res1_kappa(    (    sG   lib/python2.7/site-packages/statsmodels/stats/tests/test_inter_rater.pyt   test_fleiss_kappa_irr7  s    							c    
   	   C   s  t  }  t |  d  d   d  d  f d d  } t j g  t d  D]Z } g  t d  D]A } |  d  d   d  d  f d | | g k j d  j   ^ qU ^ qB  } t | d |  t |  d  d   d  d  f  } t | d |  d d d d d	 d
 g } t |  d  d   d  d  f |  } t | d |  t |  d  d   d  d  f d d d d d d d d	 g } t |  d  d   d  d  f d d d }	 t | d j d  |  t |	 d j d  |  d  S(   Ni   i   i   i    g      ?g      ?g      @g      @g      @g      @i   t   binsg      i(   R   R   R^   t   asarrayt   ranget   allt   sumR   (
   t   dataRj   t   it   jt   res0R;   R   Rk   Rl   t   res5(    (    sG   lib/python2.7/site-packages/statsmodels/stats/tests/test_inter_rater.pyt   test_to_tableE  s    )	m"%>,c          C   sN   t  }  t |   } t j d d d d d g  } t | d j d  |  d  S(   Ni   i   i7   i+   i    (   R   R   R^   Rc   R   R   (   R   t   resft   colsum(    (    sG   lib/python2.7/site-packages/statsmodels/stats/tests/test_inter_rater.pyt   test_aggregate_raters[  s    ('   t   __doc__t   numpyR^   t   numpy.testingR    R   R   t   statsmodels.stats.inter_raterR   R   R   R   t   statsmodels.tools.testingR   R   t   splitt   floatt   reshapet   table0R-   RL   Rc   R   t   diagnoses_rownamest   diagnoses_colnamesR/   R8   t   objectR9   RK   RU   Rm   Rz   t   anxiety_rownamest   anxiety_colnamesR   R   R   R   (    (    (    sG   lib/python2.7/site-packages/statsmodels/stats/tests/test_inter_rater.pyt   <module>   sv   "
`		#	#EE3B	S		