バケットカウントK-Sテスト相関集約

提供された分布に対して二標本コルモゴロフ–スミルノフテスト(以下「K-Sテスト」と呼ぶ)を実行する兄弟パイプライン集約であり、設定された兄弟集約内のドキュメントカウントによって暗示される分布に対して実行されます。具体的には、あるメトリックについて、メトリックのパーセンタイル区間が事前に知られているか、集約によって計算されていると仮定すると、兄弟の範囲集約を使用して、メトリックとそのメトリックをドキュメントのサブセットに制限した場合の分布の差のp値を計算します。自然な使用ケースは、兄弟集約の範囲集約が用語集約にネストされている場合であり、その場合、メトリックの全体的な分布を各用語への制限と比較します。

パラメータ

  • buckets_path
  • (必須、文字列)相関させる値のセットを含むバケットへのパス。_countパスでなければなりません。構文については、buckets_path構文を参照してください。
  • alternative
  • (オプション、リスト)計算するK-Sテストの代替案を示す文字列値のリスト。有効な値は「greater」、「less」、「two_sided」です。このパラメータは、K-Sテストを計算する際に使用されるK-S統計を決定するための重要な要素です。デフォルト値はすべての可能な代替仮説です。
  • fractions
  • (オプション、リスト)buckets_pathの結果と比較するためのサンプルの分布を示すダブルのリスト。通常の使用では、これは各バケット内のドキュメントの全体的な割合であり、兄弟集約カウントからの各バケットの実際のドキュメント割合と比較されます。デフォルトは、全体のドキュメントがこれらのバケットに均等に分布していると仮定することです。これは、メトリックの等しいパーセンタイルを使用してバケットの端点を定義した場合に当てはまります。
  • sampling_method
  • (オプション、文字列)K-Sテストを計算する際のサンプリング方法論を示します。これは、返された値のサンプリングです。これにより、2つのサンプルを比較する際に使用される累積分布関数(CDF)ポイントが決定されます。デフォルトはupper_tailで、CDFポイントの上端を強調します。有効なオプションは、upper_tailuniform、およびlower_tailです。

構文

  1. #### Js
  2. ``````js
  3. {
  4. "bucket_count_ks_test": {
  5. "buckets_path": "range_values>_count",
  6. "alternative": ["less", "greater", "two_sided"],
  7. "sampling_method": "upper_tail"
  8. }
  9. }
  10. `
テスト対象の値を含むバケット。
計算する代替案。
K-S統計のサンプリング方法。

次のスニペットは、フィールドversionの個々の用語に対して均一分布に対してbucket_count_ks_testを実行します。均一分布はlatencyパーセンタイルバケットを反映しています。latency指標値の事前計算は、パーセンタイル集約を利用して行われたため、表示されていません。

この例では、latencyのデシルのみを使用しています。

Python

  1. resp = client.search(
  2. index="correlate_latency",
  3. size="0",
  4. filter_path="aggregations",
  5. aggs={
  6. "buckets": {
  7. "terms": {
  8. "field": "version",
  9. "size": 2
  10. },
  11. "aggs": {
  12. "latency_ranges": {
  13. "range": {
  14. "field": "latency",
  15. "ranges": [
  16. {
  17. "to": 0
  18. },
  19. {
  20. "from": 0,
  21. "to": 105
  22. },
  23. {
  24. "from": 105,
  25. "to": 225
  26. },
  27. {
  28. "from": 225,
  29. "to": 445
  30. },
  31. {
  32. "from": 445,
  33. "to": 665
  34. },
  35. {
  36. "from": 665,
  37. "to": 885
  38. },
  39. {
  40. "from": 885,
  41. "to": 1115
  42. },
  43. {
  44. "from": 1115,
  45. "to": 1335
  46. },
  47. {
  48. "from": 1335,
  49. "to": 1555
  50. },
  51. {
  52. "from": 1555,
  53. "to": 1775
  54. },
  55. {
  56. "from": 1775
  57. }
  58. ]
  59. }
  60. },
  61. "ks_test": {
  62. "bucket_count_ks_test": {
  63. "buckets_path": "latency_ranges>_count",
  64. "alternative": [
  65. "less",
  66. "greater",
  67. "two_sided"
  68. ]
  69. }
  70. }
  71. }
  72. }
  73. },
  74. )
  75. print(resp)

Js

  1. const response = await client.search({
  2. index: "correlate_latency",
  3. size: 0,
  4. filter_path: "aggregations",
  5. aggs: {
  6. buckets: {
  7. terms: {
  8. field: "version",
  9. size: 2,
  10. },
  11. aggs: {
  12. latency_ranges: {
  13. range: {
  14. field: "latency",
  15. ranges: [
  16. {
  17. to: 0,
  18. },
  19. {
  20. from: 0,
  21. to: 105,
  22. },
  23. {
  24. from: 105,
  25. to: 225,
  26. },
  27. {
  28. from: 225,
  29. to: 445,
  30. },
  31. {
  32. from: 445,
  33. to: 665,
  34. },
  35. {
  36. from: 665,
  37. to: 885,
  38. },
  39. {
  40. from: 885,
  41. to: 1115,
  42. },
  43. {
  44. from: 1115,
  45. to: 1335,
  46. },
  47. {
  48. from: 1335,
  49. to: 1555,
  50. },
  51. {
  52. from: 1555,
  53. to: 1775,
  54. },
  55. {
  56. from: 1775,
  57. },
  58. ],
  59. },
  60. },
  61. ks_test: {
  62. bucket_count_ks_test: {
  63. buckets_path: "latency_ranges>_count",
  64. alternative: ["less", "greater", "two_sided"],
  65. },
  66. },
  67. },
  68. },
  69. },
  70. });
  71. console.log(response);

コンソール

  1. POST correlate_latency/_search?size=0&filter_path=aggregations
  2. {
  3. "aggs": {
  4. "buckets": {
  5. "terms": {
  6. "field": "version",
  7. "size": 2
  8. },
  9. "aggs": {
  10. "latency_ranges": {
  11. "range": {
  12. "field": "latency",
  13. "ranges": [
  14. { "to": 0 },
  15. { "from": 0, "to": 105 },
  16. { "from": 105, "to": 225 },
  17. { "from": 225, "to": 445 },
  18. { "from": 445, "to": 665 },
  19. { "from": 665, "to": 885 },
  20. { "from": 885, "to": 1115 },
  21. { "from": 1115, "to": 1335 },
  22. { "from": 1335, "to": 1555 },
  23. { "from": 1555, "to": 1775 },
  24. { "from": 1775 }
  25. ]
  26. }
  27. },
  28. "ks_test": {
  29. "bucket_count_ks_test": {
  30. "buckets_path": "latency_ranges>_count",
  31. "alternative": ["less", "greater", "two_sided"]
  32. }
  33. }
  34. }
  35. }
  36. }
  37. }
範囲集約とバケット相関集約を含む用語バケット。両方とも、用語値とレイテンシの相関を計算するために利用されます。
レイテンシフィールドの範囲集約。範囲はレイテンシフィールドのパーセンタイルを参照して作成されました。
バケットカウントK-Sテスト集約は、バケットカウントがfractionsと同じ分布から来ているかどうかをテストします;
ここでfractionsは均一分布です。

次のような応答があるかもしれません:

コンソール-結果

  1. {
  2. "aggregations" : {
  3. "buckets" : {
  4. "doc_count_error_upper_bound" : 0,
  5. "sum_other_doc_count" : 0,
  6. "buckets" : [
  7. {
  8. "key" : "1.0",
  9. "doc_count" : 100,
  10. "latency_ranges" : {
  11. "buckets" : [
  12. {
  13. "key" : "*-0.0",
  14. "to" : 0.0,
  15. "doc_count" : 0
  16. },
  17. {
  18. "key" : "0.0-105.0",
  19. "from" : 0.0,
  20. "to" : 105.0,
  21. "doc_count" : 1
  22. },
  23. {
  24. "key" : "105.0-225.0",
  25. "from" : 105.0,
  26. "to" : 225.0,
  27. "doc_count" : 9
  28. },
  29. {
  30. "key" : "225.0-445.0",
  31. "from" : 225.0,
  32. "to" : 445.0,
  33. "doc_count" : 0
  34. },
  35. {
  36. "key" : "445.0-665.0",
  37. "from" : 445.0,
  38. "to" : 665.0,
  39. "doc_count" : 0
  40. },
  41. {
  42. "key" : "665.0-885.0",
  43. "from" : 665.0,
  44. "to" : 885.0,
  45. "doc_count" : 0
  46. },
  47. {
  48. "key" : "885.0-1115.0",
  49. "from" : 885.0,
  50. "to" : 1115.0,
  51. "doc_count" : 10
  52. },
  53. {
  54. "key" : "1115.0-1335.0",
  55. "from" : 1115.0,
  56. "to" : 1335.0,
  57. "doc_count" : 20
  58. },
  59. {
  60. "key" : "1335.0-1555.0",
  61. "from" : 1335.0,
  62. "to" : 1555.0,
  63. "doc_count" : 20
  64. },
  65. {
  66. "key" : "1555.0-1775.0",
  67. "from" : 1555.0,
  68. "to" : 1775.0,
  69. "doc_count" : 20
  70. },
  71. {
  72. "key" : "1775.0-*",
  73. "from" : 1775.0,
  74. "doc_count" : 20
  75. }
  76. ]
  77. },
  78. "ks_test" : {
  79. "less" : 2.248673241788478E-4,
  80. "greater" : 1.0,
  81. "two_sided" : 5.791639181800257E-4
  82. }
  83. },
  84. {
  85. "key" : "2.0",
  86. "doc_count" : 100,
  87. "latency_ranges" : {
  88. "buckets" : [
  89. {
  90. "key" : "*-0.0",
  91. "to" : 0.0,
  92. "doc_count" : 0
  93. },
  94. {
  95. "key" : "0.0-105.0",
  96. "from" : 0.0,
  97. "to" : 105.0,
  98. "doc_count" : 19
  99. },
  100. {
  101. "key" : "105.0-225.0",
  102. "from" : 105.0,
  103. "to" : 225.0,
  104. "doc_count" : 11
  105. },
  106. {
  107. "key" : "225.0-445.0",
  108. "from" : 225.0,
  109. "to" : 445.0,
  110. "doc_count" : 20
  111. },
  112. {
  113. "key" : "445.0-665.0",
  114. "from" : 445.0,
  115. "to" : 665.0,
  116. "doc_count" : 20
  117. },
  118. {
  119. "key" : "665.0-885.0",
  120. "from" : 665.0,
  121. "to" : 885.0,
  122. "doc_count" : 20
  123. },
  124. {
  125. "key" : "885.0-1115.0",
  126. "from" : 885.0,
  127. "to" : 1115.0,
  128. "doc_count" : 10
  129. },
  130. {
  131. "key" : "1115.0-1335.0",
  132. "from" : 1115.0,
  133. "to" : 1335.0,
  134. "doc_count" : 0
  135. },
  136. {
  137. "key" : "1335.0-1555.0",
  138. "from" : 1335.0,
  139. "to" : 1555.0,
  140. "doc_count" : 0
  141. },
  142. {
  143. "key" : "1555.0-1775.0",
  144. "from" : 1555.0,
  145. "to" : 1775.0,
  146. "doc_count" : 0
  147. },
  148. {
  149. "key" : "1775.0-*",
  150. "from" : 1775.0,
  151. "doc_count" : 0
  152. }
  153. ]
  154. },
  155. "ks_test" : {
  156. "less" : 0.9642895789647244,
  157. "greater" : 4.58718174664754E-9,
  158. "two_sided" : 5.916656831139733E-9
  159. }
  160. }
  161. ]
  162. }
  163. }
  164. }