
    Vfd                     .   d Z ddlmZ ddlZddlZddlmZ ddlm	Z	 ddl
mZ ddlmZ g d	Zd
 ZddZd Zedk    rU ed            ed           eD ]oZ ee            ee          \  ZZZZZ eee          Zdddd                    ed          Zej                             ej        e          ee           p ed           eD ]XZ ee            ee          \  ZZZZZd eD             Z  ej!        e  Z e ej        e          edd         z
             Y ed            ed           edd         D ]HZ ee            ee          \  ZZZZZ eee          Z e ej        e          ez
             GdS dS )zcalculating anova and verifying with NIST test data

compares my implementations, stats.f_oneway and anova using statsmodels.OLS
    )lmapN)stats)add_constant)OLS   )
data2dummy)z
SiRstv.datz
SmLs01.datz
SmLs02.datz
SmLs03.datzAtmWtAg.datz
SmLs04.datz
SmLs05.datz
SmLs06.dat
SmLs07.dat
SmLs08.dat
SmLs09.datc                    t           j                            t                    }t           j                            t           j                            |d|                     }t          |dd          5 }|                                                    d          }d d d            n# 1 swxY w Y   d |dd          D             }d |d	d
         D             }t          j
        |d          }|j        \  }}	|                    t                    }t          j        |          }
t          |d         d                   }t          |d         d                   }t          |d         d                   }t          |d         d                   }t          |d         d                   }t           j                            |||          }||	t          j        ||||g          ||
fS )Ndatarzutf-8)encoding
c                 6    g | ]}|                                 S  split.0lines     Rlib/python3.11/site-packages/statsmodels/sandbox/regression/anova_nistcertified.py
<listcomp>zgetnist.<locals>.<listcomp>   s     222TDJJLL222    <   c                 :    g | ]}||                                 S r   r   r   s     r   r   zgetnist.<locals>.<listcomp>   s%    AAA$DAAAAr   (   0   )skiprowsr         r   )ospathdirname__file__abspathjoinopenreadr   nploadtxtTastypeintuniquefloatr   fsfarray)filenameherefnamefdcontentr   	certifieddatafyxcatyr4   R2resstddfbndfwnprobs                    r   getnistrF      s   7??8$$DGOOBGLLvx@@AAE	eS7	+	+	+ (r''))//$''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 32WRSS\222DAA'"R%.AAAIJur***E
'CAa	A9Q<<Dil2A	y|B	 	 B9Q<#$$Fy|B  Dy|B  D7::aT""Da1dB/00)TAAs   5(B))B-0B-c                    | d d t           j        f         }|d d t           j        f         |                                z
  }ddlm}  ||d d d df         |d d d df                   \  }}}}	t          j        |j        |          }
t          j        ||                                z
  dz  |	j                  }|j        d         }|j        d         }|dz
  }||z
  }|t          |          z  }|
t          |          z  }||z  }t          j
                            |||          }||
|z   z  }t          j        |          }d }t          |||||f          \  }}}}||||fS )Nr   )groupsstats_dummyr!   r   c                 F    t          j        |           dk    r| d         S | S )N)r   r   )r   r   )r-   shape)zs    r   _fix2scalarz!anova_oneway.<locals>._fix2scalarK   s#    8A;;&  T7NHr   )r-   newaxismeantry_catdatarH   dotr/   rJ   r3   r   r4   r5   sqrtr   )r>   r?   seqyrvsxrvsrH   meangvarg
xdevmeangrcountgsswnssbnnobsncatrC   rD   msbmswr4   rE   rA   rB   rL   s                          r   anova_onewayr_   0   s    QQQrz\?DQQQrz\?QVVXX%D......&7&7QQQU8<QQQU'E 'E#E4V
 6*,z**D65$q(&(33D:a=D;q>D!8D$;D
uT{{
C
uT{{
CCA7::aT""D
T	
BWS\\F  
 {Qb&,ABBAtRdBr   c                     t          t          |          d          }t          | |                                          }|j        |j        |j        t          j        |j	                  fS )NF)prepend)
r   r   r   fitfvaluef_pvaluersquaredr-   rQ   	mse_resid)r>   r?   Xress       r   	anova_olsri   T   sP    Z]]E222A
a))--//C:s|S\273=3I3IIIr   __main__z
 using new ANOVA anova_onewayzf, prob, R2, resstdgS㥛?g_Q[?g-C6?)r
   r	   r   gHz>)rtolz
 using stats ANOVA f_onewayc                 :    g | ]}t           t          |k             S r   )r?   r>   )r   iis     r   r   r   o   s     )))b1b5)))r   r!   z
 using statsmodels.OLS)r   )"__doc__statsmodels.compat.pythonr   r%   numpyr-   scipyr   statsmodels.tools.toolsr   #statsmodels.regression.linear_modelr   try_ols_anovar   
filenamelirF   r_   ri   __name__printfnr>   r?   certr<   r@   rh   getrk   testingassert_allcloser6   xlistf_onewayr   r   r   <module>r      s    + * * * * * 				           0 0 0 0 0 0 3 3 3 3 3 3 % % % % % %  
B B B0! ! ! !HJ J J z	E
+,,,	E
    C Cb			&-gbkk#1dItl1a    
 
 #b$--	 	
 	
""828C==$T"BBBB	E
)*** ( (b			&-gbkk#1dIt))D)))ene$hbhsmmd2A2h&''''	E
$%%%	E
   m $ $b			&-gbkk#1dIti1oohbhsmmd"####= 4$ $r   