バケットカウント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_tail
、uniform
、およびlower_tail
です。
構文
#### Js
``````js
{
"bucket_count_ks_test": {
"buckets_path": "range_values>_count",
"alternative": ["less", "greater", "two_sided"],
"sampling_method": "upper_tail"
}
}
`
テスト対象の値を含むバケット。 | |
計算する代替案。 | |
K-S統計のサンプリング方法。 |
例
次のスニペットは、フィールドversion
の個々の用語に対して均一分布に対してbucket_count_ks_test
を実行します。均一分布はlatency
パーセンタイルバケットを反映しています。latency
指標値の事前計算は、パーセンタイル集約を利用して行われたため、表示されていません。
この例では、latency
のデシルのみを使用しています。
Python
resp = client.search(
index="correlate_latency",
size="0",
filter_path="aggregations",
aggs={
"buckets": {
"terms": {
"field": "version",
"size": 2
},
"aggs": {
"latency_ranges": {
"range": {
"field": "latency",
"ranges": [
{
"to": 0
},
{
"from": 0,
"to": 105
},
{
"from": 105,
"to": 225
},
{
"from": 225,
"to": 445
},
{
"from": 445,
"to": 665
},
{
"from": 665,
"to": 885
},
{
"from": 885,
"to": 1115
},
{
"from": 1115,
"to": 1335
},
{
"from": 1335,
"to": 1555
},
{
"from": 1555,
"to": 1775
},
{
"from": 1775
}
]
}
},
"ks_test": {
"bucket_count_ks_test": {
"buckets_path": "latency_ranges>_count",
"alternative": [
"less",
"greater",
"two_sided"
]
}
}
}
}
},
)
print(resp)
Js
const response = await client.search({
index: "correlate_latency",
size: 0,
filter_path: "aggregations",
aggs: {
buckets: {
terms: {
field: "version",
size: 2,
},
aggs: {
latency_ranges: {
range: {
field: "latency",
ranges: [
{
to: 0,
},
{
from: 0,
to: 105,
},
{
from: 105,
to: 225,
},
{
from: 225,
to: 445,
},
{
from: 445,
to: 665,
},
{
from: 665,
to: 885,
},
{
from: 885,
to: 1115,
},
{
from: 1115,
to: 1335,
},
{
from: 1335,
to: 1555,
},
{
from: 1555,
to: 1775,
},
{
from: 1775,
},
],
},
},
ks_test: {
bucket_count_ks_test: {
buckets_path: "latency_ranges>_count",
alternative: ["less", "greater", "two_sided"],
},
},
},
},
},
});
console.log(response);
コンソール
POST correlate_latency/_search?size=0&filter_path=aggregations
{
"aggs": {
"buckets": {
"terms": {
"field": "version",
"size": 2
},
"aggs": {
"latency_ranges": {
"range": {
"field": "latency",
"ranges": [
{ "to": 0 },
{ "from": 0, "to": 105 },
{ "from": 105, "to": 225 },
{ "from": 225, "to": 445 },
{ "from": 445, "to": 665 },
{ "from": 665, "to": 885 },
{ "from": 885, "to": 1115 },
{ "from": 1115, "to": 1335 },
{ "from": 1335, "to": 1555 },
{ "from": 1555, "to": 1775 },
{ "from": 1775 }
]
}
},
"ks_test": {
"bucket_count_ks_test": {
"buckets_path": "latency_ranges>_count",
"alternative": ["less", "greater", "two_sided"]
}
}
}
}
}
}
範囲集約とバケット相関集約を含む用語バケット。両方とも、用語値とレイテンシの相関を計算するために利用されます。 | |
レイテンシフィールドの範囲集約。範囲はレイテンシフィールドのパーセンタイルを参照して作成されました。 | |
バケットカウントK-Sテスト集約は、バケットカウントがfractions と同じ分布から来ているかどうかをテストします;ここで fractions は均一分布です。 |
コンソール-結果
{
"aggregations" : {
"buckets" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "1.0",
"doc_count" : 100,
"latency_ranges" : {
"buckets" : [
{
"key" : "*-0.0",
"to" : 0.0,
"doc_count" : 0
},
{
"key" : "0.0-105.0",
"from" : 0.0,
"to" : 105.0,
"doc_count" : 1
},
{
"key" : "105.0-225.0",
"from" : 105.0,
"to" : 225.0,
"doc_count" : 9
},
{
"key" : "225.0-445.0",
"from" : 225.0,
"to" : 445.0,
"doc_count" : 0
},
{
"key" : "445.0-665.0",
"from" : 445.0,
"to" : 665.0,
"doc_count" : 0
},
{
"key" : "665.0-885.0",
"from" : 665.0,
"to" : 885.0,
"doc_count" : 0
},
{
"key" : "885.0-1115.0",
"from" : 885.0,
"to" : 1115.0,
"doc_count" : 10
},
{
"key" : "1115.0-1335.0",
"from" : 1115.0,
"to" : 1335.0,
"doc_count" : 20
},
{
"key" : "1335.0-1555.0",
"from" : 1335.0,
"to" : 1555.0,
"doc_count" : 20
},
{
"key" : "1555.0-1775.0",
"from" : 1555.0,
"to" : 1775.0,
"doc_count" : 20
},
{
"key" : "1775.0-*",
"from" : 1775.0,
"doc_count" : 20
}
]
},
"ks_test" : {
"less" : 2.248673241788478E-4,
"greater" : 1.0,
"two_sided" : 5.791639181800257E-4
}
},
{
"key" : "2.0",
"doc_count" : 100,
"latency_ranges" : {
"buckets" : [
{
"key" : "*-0.0",
"to" : 0.0,
"doc_count" : 0
},
{
"key" : "0.0-105.0",
"from" : 0.0,
"to" : 105.0,
"doc_count" : 19
},
{
"key" : "105.0-225.0",
"from" : 105.0,
"to" : 225.0,
"doc_count" : 11
},
{
"key" : "225.0-445.0",
"from" : 225.0,
"to" : 445.0,
"doc_count" : 20
},
{
"key" : "445.0-665.0",
"from" : 445.0,
"to" : 665.0,
"doc_count" : 20
},
{
"key" : "665.0-885.0",
"from" : 665.0,
"to" : 885.0,
"doc_count" : 20
},
{
"key" : "885.0-1115.0",
"from" : 885.0,
"to" : 1115.0,
"doc_count" : 10
},
{
"key" : "1115.0-1335.0",
"from" : 1115.0,
"to" : 1335.0,
"doc_count" : 0
},
{
"key" : "1335.0-1555.0",
"from" : 1335.0,
"to" : 1555.0,
"doc_count" : 0
},
{
"key" : "1555.0-1775.0",
"from" : 1555.0,
"to" : 1775.0,
"doc_count" : 0
},
{
"key" : "1775.0-*",
"from" : 1775.0,
"doc_count" : 0
}
]
},
"ks_test" : {
"less" : 0.9642895789647244,
"greater" : 4.58718174664754E-9,
"two_sided" : 5.916656831139733E-9
}
}
]
}
}
}