マトリックス統計集約
matrix_stats
集約は、ドキュメントフィールドのセットに対して以下の統計を計算する数値集約です:
count |
計算に含まれるフィールドごとのサンプル数。 |
mean |
各フィールドの平均値。 |
variance |
平均からのサンプルのばらつきを示すフィールドごとの測定。 |
skewness |
平均周辺の非対称分布を定量化するフィールドごとの測定。 |
kurtosis |
分布の形状を定量化するフィールドごとの測定。 |
covariance |
一つのフィールドの変化が他のフィールドとどのように関連しているかを定量的に説明する行列。 |
correlation |
-1から1の範囲にスケーリングされた共分散行列。フィールドの分布間の関係を説明します。 |
他のメトリック集約とは異なり、matrix_stats
集約はスクリプトをサポートしていません。
以下の例は、収入と貧困の関係を説明するためにマトリックス統計を使用する方法を示しています。
Python
resp = client.search(
aggs={
"statistics": {
"matrix_stats": {
"fields": [
"poverty",
"income"
]
}
}
},
)
print(resp)
Ruby
response = client.search(
body: {
aggregations: {
statistics: {
matrix_stats: {
fields: [
'poverty',
'income'
]
}
}
}
}
)
puts response
Js
const response = await client.search({
aggs: {
statistics: {
matrix_stats: {
fields: ["poverty", "income"],
},
},
},
});
console.log(response);
コンソール
GET /_search
{
"aggs": {
"statistics": {
"matrix_stats": {
"fields": [ "poverty", "income" ]
}
}
}
}
集約タイプは matrix_stats
で、fields
設定は統計を計算するためのフィールドのセット(配列として)を定義します。上記のリクエストは以下のレスポンスを返します:
コンソール-結果
{
...
"aggregations": {
"statistics": {
"doc_count": 50,
"fields": [ {
"name": "income",
"count": 50,
"mean": 51985.1,
"variance": 7.383377037755103E7,
"skewness": 0.5595114003506483,
"kurtosis": 2.5692365287787124,
"covariance": {
"income": 7.383377037755103E7,
"poverty": -21093.65836734694
},
"correlation": {
"income": 1.0,
"poverty": -0.8352655256272504
}
}, {
"name": "poverty",
"count": 50,
"mean": 12.732000000000001,
"variance": 8.637730612244896,
"skewness": 0.4516049811903419,
"kurtosis": 2.8615929677997767,
"covariance": {
"income": -21093.65836734694,
"poverty": 8.637730612244896
},
"correlation": {
"income": -0.8352655256272504,
"poverty": 1.0
}
} ]
}
}
}
doc_count
フィールドは、統計の計算に関与するドキュメントの数を示します。
マルチバリューフィールド
matrix_stats
集約は、各ドキュメントフィールドを独立したサンプルとして扱います。mode
パラメータは、集約が配列またはマルチバリューのフィールドに対して使用する配列値を制御します。このパラメータは次のいずれかを取ることができます:
avg |
(デフォルト)すべての値の平均を使用します。 |
min |
最低値を選択します。 |
max |
最高値を選択します。 |
sum |
すべての値の合計を使用します。 |
median |
すべての値の中央値を使用します。 |
欠損値
missing
パラメータは、値が欠けているドキュメントがどのように扱われるべきかを定義します。デフォルトでは無視されますが、値があるかのように扱うことも可能です。これは、フィールドごとのデフォルト値を指定するためにフィールド名:値のマッピングを追加することで行います。
Python
resp = client.search(
aggs={
"matrixstats": {
"matrix_stats": {
"fields": [
"poverty",
"income"
],
"missing": {
"income": 50000
}
}
}
},
)
print(resp)
Js
const response = await client.search({
aggs: {
matrixstats: {
matrix_stats: {
fields: ["poverty", "income"],
missing: {
income: 50000,
},
},
},
},
});
console.log(response);
コンソール
GET /_search
{
"aggs": {
"matrixstats": {
"matrix_stats": {
"fields": [ "poverty", "income" ],
"missing": { "income": 50000 }
}
}
}
}
income フィールドに値がないドキュメントは、デフォルト値 50000 を持ちます。 |