分数 = MongoDB 中伯努利参数的 Wilson 分数置信区间的下限
Score = Lower bound of Wilson score confidence interval for a Bernoulli parameter in MongoDB
我的文档有很多 正面 和 总 条评论。
如何使用 ” How not to sort by average rating”?
中解释的“ 伯努利参数的 Wilson 分数置信区间的下限 ” 来计算分数
下面是当前文档的样子:
{
"name": "Hotel A",
"positive_reviews": 2,
"negative_reviews": 1,
"total_reviews": 3
},{
"name": "Hotel B",
"positive_reviews": 3,
"negative_reviews": 3,
"total_reviews": 6
}
我希望计算后的输出如下:
{
"name": "Hotel A",
"positive_reviews": 2,
"negative_reviews": 1,
"total_reviews": 3
"scores": 0.34
},{
"name": "Hotel B",
"positive_reviews": 3,
"negative_reviews": 3,
"total_reviews": 6
"scores": 0,19
}
我应用了如下公式:
((positive + 1.9208) / (positive + negative) -
1.96 * SQRT((positive * negative) / (positive + negative) + 0.9604) /
(positive + negative)) / (1 + 3.8416 / (positive + negative))
这里是 MongoDB 查询:
db.collection.aggregate([
{
$project: {
name:1,
positive_reviews:1,
negative_reviews:1,
total_reviews:1,
scores: {
$divide: [
{
$subtract: [
{
$divide: [
{ $add: ["$positive_reviews",1.9208] },
{ $add: ["$positive_reviews","$negative_reviews"] }
],
},
{
$multiply: [
1.96,
{
$divide: [
{
$sqrt: {
$add: [
{
$divide: [
{
$multiply: ["$positive_reviews","$negative_reviews"]
},
{
$add: ["$positive_reviews","$negative_reviews"]
}
]
},
0.9604
]
}
},
{
$add: ["$positive_reviews","$negative_reviews"]
}
]
}
]
},
]
},
{
$add: [
{
$divide: [ 3.8416, {$add: ["$positive_reviews","$negative_reviews"]} ]
},
1
]
}
]
},
}
}
])
我的结果如下:
/* 1 createdAt:26/04/2019, 00:16:16*/
{
"_id" : ObjectId("5cc200785d13d8232aff6e98"),
"name" : "Hotel A",
"positive_reviews" : 2,
"negative_reviews" : 1,
"total_reviews" : 3,
"scores" : 0.20765495512648788
},
/* 2 createdAt:26/04/2019, 00:16:16*/
{
"_id" : ObjectId("5cc200785d13d8232aff6e99"),
"name" : "Hotel B",
"positive_reviews" : 3,
"negative_reviews" : 3,
"total_reviews" : 6,
"scores" : 0.18761280689940865
}
我的文档有很多 正面 和 总 条评论。 如何使用 ” How not to sort by average rating”?
中解释的“ 伯努利参数的 Wilson 分数置信区间的下限 ” 来计算分数下面是当前文档的样子:
{
"name": "Hotel A",
"positive_reviews": 2,
"negative_reviews": 1,
"total_reviews": 3
},{
"name": "Hotel B",
"positive_reviews": 3,
"negative_reviews": 3,
"total_reviews": 6
}
我希望计算后的输出如下:
{
"name": "Hotel A",
"positive_reviews": 2,
"negative_reviews": 1,
"total_reviews": 3
"scores": 0.34
},{
"name": "Hotel B",
"positive_reviews": 3,
"negative_reviews": 3,
"total_reviews": 6
"scores": 0,19
}
我应用了如下公式:
((positive + 1.9208) / (positive + negative) -
1.96 * SQRT((positive * negative) / (positive + negative) + 0.9604) /
(positive + negative)) / (1 + 3.8416 / (positive + negative))
这里是 MongoDB 查询:
db.collection.aggregate([
{
$project: {
name:1,
positive_reviews:1,
negative_reviews:1,
total_reviews:1,
scores: {
$divide: [
{
$subtract: [
{
$divide: [
{ $add: ["$positive_reviews",1.9208] },
{ $add: ["$positive_reviews","$negative_reviews"] }
],
},
{
$multiply: [
1.96,
{
$divide: [
{
$sqrt: {
$add: [
{
$divide: [
{
$multiply: ["$positive_reviews","$negative_reviews"]
},
{
$add: ["$positive_reviews","$negative_reviews"]
}
]
},
0.9604
]
}
},
{
$add: ["$positive_reviews","$negative_reviews"]
}
]
}
]
},
]
},
{
$add: [
{
$divide: [ 3.8416, {$add: ["$positive_reviews","$negative_reviews"]} ]
},
1
]
}
]
},
}
}
])
我的结果如下:
/* 1 createdAt:26/04/2019, 00:16:16*/
{
"_id" : ObjectId("5cc200785d13d8232aff6e98"),
"name" : "Hotel A",
"positive_reviews" : 2,
"negative_reviews" : 1,
"total_reviews" : 3,
"scores" : 0.20765495512648788
},
/* 2 createdAt:26/04/2019, 00:16:16*/
{
"_id" : ObjectId("5cc200785d13d8232aff6e99"),
"name" : "Hotel B",
"positive_reviews" : 3,
"negative_reviews" : 3,
"total_reviews" : 6,
"scores" : 0.18761280689940865
}