
    !g                        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(  r7 ed        ed       eD ]e  Z ee        ee      \  ZZZZZ eee      Zddddj7                  ed      Zej:                  j=                   ej>                  e      ee       g  ed       eD ][  Z ee        ee      \  ZZZZZeD  cg c]
  } ee| k(      c} Z  ejB                  e  Z e ej>                  e      edd z
         ]  ed        ed       edd D ]<  Z ee        ee      \  ZZZZZ eee      Z e ej>                  e      ez
         > yyc c} w )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                  j                  t              }t         j                  j	                  t         j                  j                  |d|             }t        |d      5 }|j                         j                  d      }d d d        dd  D cg c]  }|j                          }}|dd D cg c]  }|s|j                          }}t        j                  |d      }|j                  \  }	}
|	j                  t              }	t        j                  |	      }t        |d	   d
         }t        |d   d
         }t        |d   d
         }t        |d	   d         }t        |d   d         }t         j"                  j%                  |||      }|	|
t        j&                  ||||g      ||fS # 1 sw Y   1xY wc c}w c c}w )Ndatazutf-8)encoding
<   (   0   )skiprowsr         r   )ospathdirname__file__abspathjoinopenreadsplitnploadtxtTastypeintuniquefloatr   fsfarray)filenameherefnamefdcontentliner   	certifieddatafyxcatyr)   R2resstddfbndfwnprobs                     o/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/sandbox/regression/anova_nistcertified.pygetnistr=      s   77??8$DGGOOBGGLLvx@AE	eg	& ("'')//$'( &-RS\2TDJJL2D2*1"R.A$DAIAJJur*E
''CAa	A99Q<Dil2A	y|B	 B9Q<#$Fy|B Dy|B D77::aT"Da1dB/0)TAA( ( 3As   / F>G>GG>Gc                    | d d t         j                  f   }|d d t         j                  f   |j                         z
  }ddlm}  ||d d d df   |d d d df         \  }}}}	t        j
                  |j                  |      }
t        j
                  ||j                         z
  dz  |	j                        }|j                  d   }|j                  d   }|dz
  }||z
  }|t        |      z  }|
t        |      z  }||z  }t        j                  j                  |||      }||
|z   z  }t        j                  |      }d }t        |||||f      \  }}}}||||fS )Nr   )groupsstats_dummyr   r   c                 @    t        j                  |       dk(  r| d   S | S )N)r   r   )r   r   )r"   shape)zs    r<   _fix2scalarz!anova_oneway.<locals>._fix2scalarK   s     88A;& T7NH    )r"   newaxismeantry_catdatar?   dotr$   rA   r(   r   r)   r*   sqrtr   )r4   r5   seqyrvsxrvsr?   meangvarg
xdevmeangrcountgsswnssbnnobsncatr9   r:   msbmswr)   r;   r7   r8   rC   s                          r<   anova_onewayrW   0   sU    Qrzz\?DQrzz\?QVVX%D.&7QU8<QU'E#E4V
 66*,,z*D665$q(&((3D::a=D;;q>D!8D$;D
uT{
C
uT{
CCA77::aT"D
T	
BWWS\F
 {Qb&,ABAtRdBrD   c                     t        t        |      d      }t        | |      j                         }|j                  |j
                  |j                  t        j                  |j                        fS )NF)prepend)
r   r   r   fitfvaluef_pvaluersquaredr"   rI   	mse_resid)r4   r5   Xress       r<   	anova_olsra   T   sK    Z]E2A
a)--/C::s||S\\2773==3IIIrD   __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_onewayr   z
 using statsmodels.OLS)r   )"__doc__statsmodels.compat.pythonr   r   numpyr"   scipyr   statsmodels.tools.toolsr   #statsmodels.regression.linear_modelr   try_ols_anovar   
filenamelir=   rW   ra   __name__printfnr4   r5   certr2   r6   r`   getrc   testingassert_allcloser+   xlistf_oneway)iis   0r<   <module>rv      s   + 	   0 3 %
B0!HJ z	
+,	
  Cb	&-bk#1dIt1a   
 #b$-	 	
 	

""8288C=$T"BC 

)* (b	&-bk#1dIt$()b1b5)enne$hbhhsmd2Ah&'( 

$%	
 m $b	&-bk#1dIt1ohbhhsmd"#	$5 ( *s   E5