Abstract:
In a method for acquiring statistical information from data, an initial cumulative distribution function (CDF) that characterizes an initial set of data is acquired. The acquisition of this CDF comprises acquiring a set of quantile endpoints that define the CDF. At least one additional CDF, which characterizes a further set of data, is also acquired. Information that describes the initial CDF is combined with information that describes one or more additional CDFs, and the result is used to obtain a composite CDF that describes a combined set of data that includes the initial data set and the one or more further data sets. Then, a new set of quantile endpoints is determined, that defines the composite CDF. The sequence of steps described above is repeated at least once more. The previously obtained composite CDF is used as the initial CDF for each repetition of this sequence.

Description:
FIELD OF THE INVENTION  
         [0001]    This invention relates to methods for deriving statistical information from a stream of data, and for updating that information.  
         ART BACKGROUND  
         [0002]    There are many practical problems of data collection in which it is useful to summarize large volumes of data in a fast and reliable manner, while preserving as much information as possible. One class of problems of that kind relates to the collection of data that reflect the performance of a communication network. One example from that class of problems is the problem of collecting and summarizing the length of time to complete each of a sequence of transactions that take place on a network. In the case, e.g., of e-mail transaction times, the problem is made more difficult by the fact that the data arrive in small increments at random times, and because it is often desirable to reserve for processing and storing the data an amount of memory that is small relative to the volume of data to be processed.  
           [0003]    Those of skill in the art have long been acquainted with the histogram as a means for summarizing statistical data. To create a histogram, the practitioner marks off endpoints along an axis that corresponds to the incoming data; i.e., to the measured values of the statistic that is to be characterized. Below, we will refer to the incoming measured values as scores, and to the corresponding axis as the data axis. Accordingly, the endpoints referred to above are marked off along the score axis. Each pair of successive endpoints defines an interval. The height of the histogram within each interval, measured along a probability axis perpendicular to the data axis, is proportional to the number of scores that fall within that interval. Below, we will find it convenient to refer to each such interval as a bucket.  
           [0004]    When a histogram is based on an exhaustive set of data, it can dependably represent the statistical distribution of those data. However, if the histogram is based on only a partial set of data, it might not dependably represent the full population from which that partial set was taken. In particular, a histogram based on an initial portion of a stream of data might differ substantially from a histogram based on a longer initial portion or on a subsequent portion of the data stream.  
           [0005]    When a stream of data arrives over time, it is often most convenient to characterize the arriving data by taking an initial sequence of data values, creating a histogram, and then updating the histogram using further data values taken from subsequently arriving data. Such a procedure is especially useful when the amount of computer memory available for processing and storing the data is limited.  
           [0006]    The quality of a histogram depends on its ability to model the population of data that it is based on, and on its ability to preserve statistical information about that population. In both of these aspects, the quality of a histogram is affected by the setting of the endpoints that define the respective buckets, and also by the procedure used to update the histogram using later-arriving data.  
           [0007]    In the statistical study of network performance, among other fields, there has been a recognized need for methods of processing data streams to characterize the data more reliably without sacrificing useful statistical information.  
         SUMMARY OF THE INVENTION  
         [0008]    We have invented an improved method for acquiring statistical information from data, which may, e.g., be already accumulated data or data that are arriving as a data stream. According to the inventive method, an initial cumulative distribution function (CDF) that characterizes an initial set of data is acquired. The acquisition of this CDF comprises acquiring a set of quantile endpoints that define the CDF. The quantile endpoints are endpoints that could be marked off along the data axis in such a way that a defined fraction of the sampled scores would lie within each corresponding bucket.  
           [0009]    At least one additional CDF, which characterizes a further set of data, is also acquired. Information that describes the initial CDF is combined with information that describes one or more additional CDFs, and the result is used to obtain a composite CDF that describes a combined set of data that includes the initial data set and the one or more further data sets. Then, a new set of quantile endpoints is determined, that defines the composite CDF. The sequence of steps described above is repeated at least once more. The previously obtained composite CDF is used as the initial CDF for each repetition of this sequence. 
       
    
    
     BRIEF DESCRIPTION OF THE DRAWING  
       [0010]    [0010]FIG. 1 is an example of a typical cumulative distribution function, presented here for pedagogical purposes.  
         [0011]    [0011]FIG. 2 is an example of a typical histogram, presented here for pedagogical purposes.  
         [0012]    [0012]FIG. 3 is an example of a histogram produced by a procedure alternative to that which produced the histogram of FIG. 2. FIG. 3 is presented here for pedagogical purposes.  
         [0013]    [0013]FIG. 4 is a histogram of an actual set of e-mail transaction times. FIG. 4 is presented here to illustrate the potential complexity of statistical data that have practical significance in fields such as communications.  
         [0014]    [0014]FIG. 5 is a symbolic representation of a pair of buffers useful for practicing the invention in an exemplary embodiment.  
         [0015]    [0015]FIG. 6 is a flowchart of the invention in an illustrative embodiment.  
         [0016]    [0016]FIG. 7 illustrates exemplary procedures, useful for practicing the invention in some embodiments, for constructing a provisional cumulative distribution function (CDF) by linear interpolation, construting an empirical CDF, and averaging the provisional and empirical CDFs to form a composite CDF.  
         [0017]    [0017]FIG. 8 is a symbolic representation of a pair of agent records useful for practicing the invention in certain embodiments, including the embodiment of FIG. 9.  
         [0018]    [0018]FIG. 9 is a flowchart of a method for merging agent records, according to the invention in a further illustrative embodiment.  
         [0019]    [0019]FIG. 10 is a flowchart illustrating a procedure for generating output records. The illustrated procedure is useful in the practice of the invention in some embodiments, including the embodiment of FIG. 9.  
     
    
     DETAILED DESCRIPTION  
       [0020]    [0020]FIGS. 1 and 2 are, respectively, a cumulative distribution function (CDF) and a histogram representing a set of data having a roughly bell-shaped distribution. The histogram of FIG. 2 is the most common type of histogram, in which the buckets are all of equal width, and the bucket endpoints are fixed.  
         [0021]    [0021]FIG. 3 illustrates an alternative procedure for creating a histogram, in which the bucket endpoints are not fixed, but instead are adjusted in accordance with the data being characterized. Each bucket endpoint in the histogram of FIG. 3 corresponds to a defined quantile level on the CDF of FIG. 1. Thus, in the example illustrated by FIG. 3, the intervals are chosen corresponding to quantiles spaced by 0.25. The procedure chooses x 2  so that 25% of the scores are less than x2. Similarly, x 3  is chosen so that 25% of the scores are between x 2  and x 3 , and x 4  is chosen so that 25% of the scores are between x 3  and x 4 . The values x 1  and x 5  are chosen so that all the scores are greater than x 1  and no scores are greater than x 5 . It will be clear that as the data are accumulated, the endpoints will shift along the data axis in order to keep the appropriate fraction of all the data within each respective bucket.  
         [0022]    It should be noted that in practice, the ratio of the number of scores in each interval to the total number of scores might not be precisely equal across all intervals. However, it will suffice, in general, to choose the intervals in such a way that shifting any one of them will shift at least one such ratio farther from the chosen value.  
         [0023]    If the defined quantile levels are equally spaced along the probability axis, the resulting filled buckets will all be of equal probability, because each interval between quantiles will represent an equal fraction of all of the accumulated data. That is the case illustrated in FIG. 3. It should be noted, however, that in practice there are often good reasons to space the defined quantile levels unequally along the probability axis. In such cases, the buckets will not all be of equal probability.  
         [0024]    [0024]FIG. 4 is a histogram of a set of e-mail transaction times that we acquired from a network. It will be clear that the data represented in FIG. 4 have a complicated distribution, including multiple peaks, a short left tail that ends at 1 ms, and a right tail extending from about 300 ms to times beyond 900 ms. In fact, the data from which the histogram of FIG. 4 was generated, which consisted of 1779 measured transaction times, included scores extending out to 34,000 ms. Thus, the right tail is extremely long, and only a small portion of it is shown in the figure.  
         [0025]    We have found that for characterizing data such as those of FIG. 4, a quantile-based histogram is preferable to a fixed-length histogram, because the quantile-based histogram generally preserves more information about the distribution of data. For that reason, among others, the method that we are about to describe is based on the use of quantile endpoints to partition the data—i.e., the raw scores—into buckets.  
         [0026]    [0026]FIG. 5 is a symbolic representation of a pair of buffers useful for practicing the invention in an exemplary embodiment. The buffer denoted the “D Buffer” in the figure holds, at a given time, N scores X 1 , . . . , X N  sampled from the incoming data stream. The buffer denoted the “Q Buffer” holds, at a given time, M values Q 1 , . . . , Q M , each of which is an endpoint value for a respective, defined quantile. Generally, Q 1  is the endpoint for the 0.00 quantile level, and Q M  is the endpoint for the 1.00 level. The Q Buffer also contains the positive integer T, which represents the total number of scores that have entered into the computation of the present values of Q 1 , . . . , Q M . As will be described in detail below, the scores temporarily stored in the D Buffer will be used to update the endpoint values in the Q Buffer. The D Buffer will then be cleared and filled with a new sample of data, and the process will repeat. On the initial application of the method with a new data stream, T is zero. This has the effect that only the data in the D Buffer is used.  
         [0027]    [0027]FIG. 6 is a flowchart of our method, in an exemplary embodiment. The object of the procedure represented in FIG. 6 is to update a set of endpoint values stored in the Q Buffer. As noted above, each endpoint value corresponds to a probability level, here denoted p m , for one of the M desired quantiles. At block  10 , the probability levels p m , m=1, . . . , M, for the defined quantiles are read. At block  20 , the corresponding endpoints Q 1 , . . . , Q M  are read from the Q Buffer. We refer to these values as approximate quantile endpoints, because they are based on an initial portion of the incoming data stream, and are to be updated. At block  30 . the weight Tis read from the Q Buffer. T is the total number of scores that have been taken into consideration in computing the endpoint values currently stored in the Q Buffer.  
         [0028]    At block  40 , the total number N of scores currently stored in the D Buffer is read. At block  50 , the raw scores X 1 , . . . , X N  are read from the D Buffer.  
         [0029]    At block  60 , a function F Q (x), referred to here as the “provisional CDF,” is defined. The variable x runs along the data axis. F Q (x) is defined with reference to the probability levels p m  and the endpoints Q m  according to the following rules:  
         [0030]    For x=Q m , m=1, . . . , M, F Q (x)=p m .  
         [0031]    For intermediate values of x, i.e., for values of x between Q m−1  and Q m , the value of F Q (x) is determined by interpolating between the value at Q m−1  and the value at Q m .  
         [0032]    [0032]FIG. 7 includes an example A of a provisional CDF constructed by linear interpolation between the endpoints Q m  It should be noted that in at least some cases, especially when the distribution of data has a long right tail, accuracy will be improved by using nonlinear interpolation instead of linear interpolation. By way of example, we have advantageously applied to the probability scale p the following nonlinear transformation g(p) prior to interpolation:  
         g        (   p   )       =     {               log   (       p   /     (     1   -   p     )       ,       if                 p     &gt;   0.5                     p   -   0.5     ,       if                 p     ≤   0.5                             
            g     -   1            (   x   )         =     {                 (     1   +     exp        (     -   x     )         )       -   1       ,       if                 x     &gt;   0                   max        (     0   ,     x   +   5       )       ,       if                 x     ≤   0             .                                 
 
         [0033]    The expression “max(0, x+5) in the preceding formula is present because it is assumed that g −1 (x) is defined for all real x. Interpolation is then done linearly with respect to g(p m )  
         [0034]    At block  70 , a function F x (x) is computed from the raw scores in the D Buffer. The function F x (x) approximates the statistical distribution of the data from the data stream during the period between the previous update and the present update. In the absence of other information, F x (x) will be computed as the empirical cumulative distribution according to well-known statistical procedures. However, it should be noted that our method is also advantageously practiced using alternative methods for estimating F x (x). For example, the estimate of F x (x) could be based on knowledge of the changing nature of the data stream. Such knowledge can be incorporated, for example, when F x (x) is estimated as a parametric distribution described by a set of updateable parameters.  
         [0035]    In the illustrative embodiment described here, F x (x) is the empirical cumulative distribution. Accordingly, in the following discussion, F x (x) will be referred to for convenience as the “empirical CDF.” However, the use of that term does not limit the scope of the possible alternative forms and definitions that F x (x) might take.  
         [0036]    F x (x) is defined, for a given x, as the total number of scores X n  that are less than or equal to x. An example B of an empirical CDF F x (x) is included in FIG. 7. It will be apparent from FIG. 7 that F x (x) is typically a piecewise constant function, with the endpoints of each constant piece defined by successive, distinct scores X n .  
         [0037]    At block  80 , a further CDF, denoted F(x), is computed as a weighted average of the provisional CDF and the empirical CDF. The weight given to the provisional CDF is proportional to T, and the weight given to the empirical CDF is proportional to N. That is, F(x) is defined by:  
         F        (   x   )       =           T   ·       F   Q          (   x   )         +     N   ·       F   x          (   x   )             T   +   N       .                           
 
         [0038]    The above averaging procedure is illustrated in FIG. 7. FIG. 7 includes an example C of a CDF obtained by taking the weighted average of provisional CDF A and empirical CDF B.  
         [0039]    At block  90 , the Q buffer is updated with new quantile endpoints, and T is incremented by N to reflect the fact that N more scores have entered into the computation of the current set of quantile endpoints. The new quantile endpoints are computed from the weighted average CDF F(x) according to the following rule: 
           Q   m   new =the smallest  x  such that  F ( x )≧ p   m . 
         [0040]    It will be appreciated that the method described above processes incoming data block-by-block, where each block is one filling of the D Buffer. Such a method is not limited to the processing of a single stream of data that arrive sequentially in time. On the contrary, methods of the kind described above are readily adaptable for, e.g., merging short-term data records, such as daily records, into longer-term records, such as weekly records. Methods of the kind described above are also readily adaptable for merging records acquired by a collection of independent agents into a single, master record. The agents need not have operated sequentially, but instead, e.g., may have carried out concurrent data acquisition.  
         [0041]    According to one possible scenario, each of a collection of K agents acquires data, and sends the data to a central location in a record of length I+1. Two examples of agent records are provided in FIG. 8. Agent record  100  contains T k  scores, where T k ≦I, and the record also contains the weight T k . Where record  100  is the k′th of K records, the scores that it contains are denoted X k,1 , . . . , X k,T     k   . Agent record  110  is used when the agent has already computed a provisional CDF as described above, and from the provisional CDF together with a set of defined quantile probability levels has computed quantile endpoints R k,I , . . . , R k,I . In that case, agent record  110  contains the I computed endpoints, and also contains the weight T k , which is now the total number of scores taken into consideration in computing the current set of quantile endpoints R k,I , i=1, . . . , I .  
         [0042]    Whether the agent sends a record of the type  100  or the type  110  will typically depend on the volume of data being processed by the agent. If in a particular iteration the agent is required to process more scores than can fit on its D Buffer, or if the agent&#39;s Q Buffer is already full, the agent will typically update the Q Buffer as described above in connection with FIG. 6, and will send a record of the type  110 . Otherwise, the agent will send a record of the type  100 .  
         [0043]    [0043]FIG. 9 is a flowchart of a method for merging agent records, according to the invention in another exemplary embodiment. We first note that three different sets of quantiles, may be defined: one set for the Q Buffer at the central processing location, one set for the agent records, and one set for the output record that represents the merged data. Accordingly, at block  120  of FIG. 9, a set of quantile probability levels is read for use in the Q Buffer at the central processing location. This set consists of M quantile probability levels p m   Q , m=1, . . . , M. At block  130 , a set of quantile probability levels is read for use in the agent records. This set consists of I probability levels p i   R , i=1, . . . , I.  
         [0044]    The generation of an output record is discussed below in connection with FIG. 10. At block  300  of FIG. 10, as will be seen, a set of quantile probability levels is read for use in the output record that characterizes the merged data. This set consists of J probability levels p j   s , j=1, . . . , J.  
         [0045]    At block  150 , the current approximate quantile endpoints Q 1 , . . . , Q M  are read from the Q Buffer at the central processing location. As noted above, T is zero in the initial application of the method. As a consequence, the contents of the Q Buffer are not used.  
         [0046]    At block  160 , the approximate quantile endpoints are used to define a provisional CDF F Q (x) as explained above in connection with FIG. 6. As indicated at block  170 , agent record k is now obtained. If this is the first iteration, then record k is the first agent record; otherwise, it is the next agent record in sequence. As indicated at block  180 , the treatment of agent record k depends on whether or not the record holds quantiles; i.e., on whether it is a record of the type  110  or a record of the type  100 . If the record contains quantiles, control passes to block  190 , to be described below. Otherwise, control passes to block  220 , to be described below.  
         [0047]    If control has passed to block  190 , agent record k contains quantiles. Accordingly, at block  190 , the quantile endpoints R k,I , . . . , R k,I  are read from the agent record. The weight T k , indicative of the total number of scores taken into consideration in computing the quantile endpoints, is also read.  
         [0048]    At block  200 , a provisional CDF F k (x) is defined using the quantile endpoints from agent record k and the probability levels p i   R  for the agent records. That is, for x=R k,I , F k (x)=p i   R . For values of x that fall between the endpoints R k,i , interpolation is used as described above. At block  230 , a representation of the resulting provisional CDF F k (x) is stored, together with the weight T k .  
         [0049]    If control has passed to block  220 , agent record k does not contain quantiles, but instead contains raw scores X k I , . . . , X k,T     k   . At block  220 , these raw scores are read from the agent record into the D Buffer at the central processing location, and T k  is read. Additionally, the CDF F k (x) is constructed at block  220 , as an empirical CDF, from the raw scores that have been read into the D Buffer at the central processing location. In FIG. 9, these scores are denoted X I , . . . , X N . The construction of an empirical CDF is as described earlier with reference to FIG. 6.  
         [0050]    At block  220 , the raw scores from any number of individual agent records are optionally pooled and treated as a single data set, with T k  adjusted to reflect the total weight of the pooled scores.  
         [0051]    As noted above, the term “empirical CDF” has been adopted for convenience, and should not be understood as limiting the possible forms that the agent CDF might take. Instead, like the method described with reference to FIG. 6, the method described here remains valid if F k (x) is chosen as any appropriate estimate for the distribution of the incoming data. The empirical CDF, in the strict sense of that term, is the typical choice in the absence of other information.  
         [0052]    At block  230 , T k  and the CDF F k (x) are stored at the central processing location.  
         [0053]    If the current agent record is not the last agent record, control now returns to block  170  for a further iteration. Otherwise, control passes to block  240 .  
         [0054]    At block  240 , a new CDF, denoted F merged  (x) in FIG. 9, is exemplarily constructed by computing a weighted average of: the provisional CDF F Q (x) related to the Q Buffer at the central processing location, and each of the provisional or empirical CDFs F k (x) related to the respective agent records. Specifically, F merged  (x) is defined by:  
           F   merged          (   x   )       =             TF   Q          (   x   )       +       ∑   k            T   k            F   k          (   x   )               T   +       ∑   k          T   k           .                           
 
         [0055]    The summations in the preceding expression are carried out over all agent records.  
         [0056]    It will be appreciated that the preceding formula for the merged CDF gives equal weight to each score. This formula is readily generalized by permitting each of the agent weights T k  to be freely adjustable. For example, setting each of the agent weights to unity results in a merged CDF in which each agent, rather than each score, has equal weight.  
         [0057]    It should be noted that arithmetic averaging is only one of various methods for updating a merged CDF, all of which lie within the scope of the present invention. For example, the merged CDF may be defined by a set of parameters, and the updating of the merged CDF may be performed by updating the parameters so that they reflect knowledge both of the previous merged CDF and of the agent records.  
         [0058]    At block  250 , new quantile endpoints Q m   new  are computed for storage in the Q Buffer at the central processing location according to: 
           Q   m   new =the smallest  x  such that F merged ( x )≧ p   m   Q . 
         [0059]    At block  260 , the weight factor T is updated by adding to it the total of all agent weight factors T k . That is,  
       T   ←     T   +       ∑   k            T   k     .                               
 
         [0060]    Output records may be produced at any time, using the current CDF F merged  (X). As noted above, a set of quantile probability levels is read at block  300  of FIG. 10 for use in the output record that characterizes the merged data. This set consists of J probability levels p j   S , j=1, . . . , J.  
         [0061]    At block  310  of FIG. 10, the output record is prepared by setting new quantile endpoints S J , j=1, . . . , J . These endpoints, denoted “output record quantile endpoints” in FIG. 10, are prepared from the CDF F merged  (x) and from the probability levels p J   S  that were read in block  300 . Specifically, the endpoints S i  are defined by: 
           S   j =the smallest  x  such that  F   merged  ( x )≧ p   J   S   , j =1 , . . . ,J.   
         [0062]    It should be noted that when merging, e.g., hourly records into daily records. it is convenient to start the Q Buffer and the D Buffer at the beginning of each new hourly period. However, there are at least some circumstances, e.g. in the analysis of network performance data, when data from one reporting period (such as an hourly period) are relevant to performance in the next reporting period. Under such circumstances, it may be advantageous to start the Q Buffer, at the beginning of the next, e.g., hour, in its final state from the previous hour, but with a scaled-down weight factor.