
    M/Ph                     .   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          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datazutf-8)encoding
c                 6    g | ]}|                                 S  split.0lines     r/var/www/html/test/jupyter/venv/lib/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catyr3   R2resstddfbndfwnprobs                    r   getnistrE      s   7??8$$DGOOBGLLvx@@AAE	eg	&	&	& ("''))//$''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 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   4(B((B,/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_catdatarG   dotr.   rI   r2   r   r3   r4   sqrtr   )r=   r>   seqyrvsxrvsrG   meangvarg
xdevmeangrcountgsswnssbnnobsncatrB   rC   msbmswr3   rD   r@   rA   rK   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,   rP   	mse_resid)r=   r>   Xress       r   	anova_olsrh   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   
filenamelirE   r^   rh   __name__printfnr=   r>   certr;   r?   rg   getrj   testingassert_allcloser5   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   