回复: [chrony-users] question about the val ues in critical_runs array

邹林志08963 <[email protected]> Tue, 9 Jul 2024 11:34:04 +0000
Newsgroups gmane.comp.time.chrony.user
Message-ID <ZQ0PR01MB095123080BB9203182FD3EDCB6DB2@ZQ0PR01MB0951.CHNPR01.prod.partner.outlook.cn>
> > >     where are the values in array critical_runs come from ?
> > >     for example, when there are total 50 sample points, if the total runs value is larger than 19, then the value of a and b is reliable.
> > >
> > >     the comment is "Critical value for number of runs of residuals with same sign. 5% critical region for now."
> > >     what is the formula or method to get the runs value of 19 for 50 samples?
> >
> > It's the Wald-Wolfowitz runs test with the assumption that n1==n2.
> >
> > The table is calculated like this:
> > - for i < 8 it's 0
> > - for i >= 8 it's mu - sqrt(var) * z where:
> >   mu = 2.0 * (i / 2.0) * (i / 2.0) / i + 1.0
> >   var = (mu - 1.0) * (mu - 2.0) / (i - 1)
> >   z = 1.65
>
> I examed this formula with i up to 129, and the result is same with critical_runs array !
> thanks very much!

I found a formula on the web:

      Z = [ r - E(r) ] / sigma

      E(r) = ( 2 * n1 * n2 ) / ( n1 + n2 ) + 1,

      sigma = sqrt{ [ 2 * n1 * n2 * (  2 * n1 * n2 - n1 - n2 ) ] / [ ( n1 + n2 ) *  ( n1 + n2 ) * ( n1 + n2 -1 ) ] }

if Z is z ,  r is runs , E(r) is mu ,  sigma is sqrt(var),   then r = Z * sigma + E(r).

should  runs be   "mu + sqrt(var)"  or  "mu -sqrt(var)" ?