私のサイトでユーザーが作成した投稿の下に、Amazonのような評価システムがあります。
Was this review helpful to you: Yes | No
投票がある場合は、その行の上に次のように結果を表示します。
5 of 8 people found this reply helpful.
これらのランキングに基づいて投稿を並べ替えたいと思います。最も役に立ったものから最も役に立たなかったものへとランク付けした場合、次の投稿をどのように注文しますか?
a) 1/1 = 100% helpful
b) 2/2 = 100% helpful
c) 999/1000 = 99.9% helpful
b) 3/4 = 75% helpful
e) 299/400 = 74.8% helpful
明らかに、役に立った割合だけで並べ替えるのは正しくありません。どういうわけか、総投票数を考慮に入れる必要があります。これを行う標準的な方法はありますか?
アップデート:
Charlesの式を使用して、Agresti-Coullの下限範囲を計算し、それを並べ替えると、上記の例では次のように並べ替えられます。
1) 999/1000 (99.9%) = 95% likely to fall in 'helpfulness' range of 99.2% to 100%
2) 299/400 (74.8%) = 95% likely to fall in 'helpfulness' range of 69.6% to 79.3%
3) 3/4 (75%) = 95% likely to fall in 'helpfulness' range of 24.7% to 97.5%
4) 2/2 (100%) = 95% likely to fall in 'helpfulness' range of 23.7% to 100%
5) 1/1 (100%) = 95% likely to fall in 'helpfulness' range of 13.3% to 100%
直感的には、これは正しいと感じます。
更新2:
アプリケーションの観点からは、投稿のリストを表示するたびにこれらの計算を実行したくありません。Agresti-Coullの下限を更新して、通常のcron主導のスケジュールで保存するか(前回の実行以降に投票を受け取った投稿のみを更新する)、新しい投票を受け取るたびに更新することを考えています。 。