nfTlWNl rn Ѻq$³*%yNk9S maq.m>`iY v=78@?7 ~ CѶͫ\]*uQlf^ZL~`^ǥ_ 6E~/6._#1Iķխ}`[W">/m6@/yzk Ѻq$³*%yNk9Sz 敊m恑8֝ ~_wk<93֔|4W٤D̲#øևh?m]jpUЭ,j_ Ѻq$³*%yNk9S maqwIԄkSy G+,~oݔriU`WNN7hi6^`F#ZTH^c.w H93N2PUٺʚ@lwWN͕y$I tfjM*I"@dZ6=R (,z(x =VoIN7³;sh?fu+Y˙oy'J[2mN+K@ TtB1/?{ `3ĴJ{ up*v<D2]B}, ³½kkT)@ &:f+8 Hv%p* G׻&HN)/Rɲ)C3YJuuQ9^gtCTW[<~n tZέ# b9hmtNNf= VV TjxGB 7Lʒ6 ]5&:8iM9 c=2AjPp"Bpja5ML)j,' \ g<;1i1WA ~CLEqf[zsqAC ^Vhѿ,CW*g|lj eD&U-Ӛ>Oߕ&3 I]C63O3tQ%`ߌ;뱎0_C&A[lJs`}XF#Jph1Z0אe=ECjD¯hZ{A l'2v"uvB~, jː̧09Mv-r%)JgLY|_N D0;ykPo2 [8x=lxьuD~ȁU!+[r%IDMHzXP_ 1cAuk4zACB3&K5}Hټu13Vh.T*]X3{;FSI'ttYy"gsTKDZ?UܶQiω L ̭eߗ 55#5^UMX;D%  ->:N>7a>b2Ѐ幵'8 , !1hN.P%Yv&36k:픱};l*9Lc1} m!/(,$F;Z.zMP{AO` lN|-` Xviɾi_qK z( p7J=ڸ!~uO$xD9w.WGT\֡l%Д.(lXwvDA 'Bf~LTcB -! ޏ(ILY^~rJB=AhƑ9ڬ]Xvr$cl&N OGV3Zb7A˕~DiL^]qUq5*w!{JFM,]BR'~ڨ:FH!wT#G~eO{r (,&Ju\.wvs0o/2Z&>{LXmmZ~*lLaƾZGI| _hG7f P|̇EłMC' .Q&3 I]C63O3tQ%`ߌ;뱎0_C&A[lJs`}XF#Jph1Z0אe=ECjD¯hZ{A l'2v"uvB~, jː̧09Mv-r%)JgLY|_N D0;ykPo2 [8x=lxьuD~ȁU!+[r%IDMHzXP_ 1cAuk4zACB3&K5}Hټu13Vh.T*]X3{i̫<9eM[eߗ 55#d[R,#r~P7XLgbM즌t=NJ Eoc k(uA*byߦJqS)8[5;-޲<䈻S2*it*dM]دQL2Xق6nT_TT7 '~S`jx`w=*Y5j~V?۫i +S2 rjPwl2/Uɳ Bk0|ѮT^wAK ĢQ$3L:[$Fec$ B2h]#J xONNo7|x,&mХ3ŧ+m^So}UP[\!ڃ  w:يպ@9*ߋ<3nڲC☐)1Mhgsgexx,s՗! qȮ cnΟ(&4uI$Y*ڨKA,Y/R&zxAhƑ9ڬ]Xv[zsB7t c(/,_$`WS7'`יfug`3f)evP{E`,Ja'4^-\G|{Xڇ1.^pO ۳H\8/( ;2G [r{ae2:b1-ZXywP qy6ĕ6 CŜ6wj69}g A \}ABǯ`vϛG(|z&UhK^Iq ͯ3^ &A:U*G^zsmhNJҨPG SU쎢M:6R return self::evaluateSingleArgumentArray([self::class, __FUNCTION__], $value); } if (!is_numeric($value)) { return ExcelError::VALUE(); } /** @var float */ $dist = self::distribution($value, true); return $dist - 0.5; } /** * ZTEST. * * Returns the one-tailed P-value of a z-test. * * For a given hypothesized population mean, x, Z.TEST returns the probability that the sample mean would be * greater than the average of observations in the data set (array) — that is, the observed sample mean. * * @param mixed $dataSet The dataset should be an array of float values for the observations * @param mixed $m0 Alpha Parameter * Or can be an array of values * @param mixed $sigma A null or float value for the Beta (Standard Deviation) Parameter; * if null, we use the standard deviation of the dataset * Or can be an array of values * * @return array|float|string (string if result is an error) * If an array of numbers is passed as an argument, then the returned result will also be an array * with the same dimensions */ public static function zTest($dataSet, $m0, $sigma = null) { if (is_array($m0) || is_array($sigma)) { return self::evaluateArrayArgumentsSubsetFrom([self::class, __FUNCTION__], 1, $dataSet, $m0, $sigma); } $dataSet = Functions::flattenArrayIndexed($dataSet); if (!is_numeric($m0) || ($sigma !== null && !is_numeric($sigma))) { return ExcelError::VALUE(); } if ($sigma === null) { /** @var float */ $sigma = StandardDeviations::STDEV($dataSet); } $n = count($dataSet); $sub1 = Averages::average($dataSet); return is_numeric($sub1) ? (1 - self::cumulative(($sub1 - $m0) / ($sigma / sqrt($n)))) : $sub1; } }