En fait, il y a une acceptée meilleure façon de Calculation:
http://www.evanmiller.org/how-not-to-sort-by-average-rating.html
Vous devrez peut-être combiner « aime » et « commentaires » dans un score unique, assignant votre propre facteur de pondération à chacun, avant de le brancher dans la formule comme la valeur «vote positif».
à partir du lien ci-dessus:
Score = Limite inférieure de Wilson score de l'intervalle de confiance pour un paramètre Bernoulli
Nous avons besoin d'équilibrer la proportion des avis positifs avec l'incertitude d'un petit nombre d'observations. Heureusement, les maths pour cela ont été élaborés en 1927 par Edwin B. Wilson. Ce que nous voulons demander est: Étant donné les évaluations que j'ai, il y a une chance de 95% que la fraction « réelle » des avis positifs est au moins quoi? Wilson donne la réponse . Considérant que d'avis positifs et négatifs (pas échelle de 5 étoiles), la borne inférieure de la proportion des avis positifs est donnée par:
(Utiliser moins où il est dit plus/moins pour calculer la partie inférieure lié.) ici p̂
est le observé fraction des avis positifs, zα/2
est le (1-α/2)
quantile de la distribution normale, et n
est le nombre total d'évaluations. La même formule mis en œuvre dans Ruby:
require 'statistics2'
def ci_lower_bound(pos, n, confidence)
if n == 0
return 0
end
z = Statistics2.pnormaldist(1-(1-confidence)/2)
phat = 1.0*pos/n
(phat + z*z/(2*n) - z * Math.sqrt((phat*(1-phat)+z*z/(4*n))/n))/(1+z*z/n)
end
pos
est le nombre d'avis positifs, n
est le nombre total de évaluations, et la confiance fait référence au niveau de confiance statistique: prendre 0,95 pour un 95% de chances que votre limite inférieure est correcte, 0,975 pour avoir une chance de 97,5%, etc. Le score z dans cette fonction jamais changements, donc si vous n'avez pas à portée de main un paquet de statistiques ou si performance est un problème vous pouvez toujours coder une valeur ici pour z
. (Utilisez 1,96 pour un niveau de confiance de 0,95.)
La même formule que une requête SQL:
SELECT widget_id, ((positive + 1.9208)/(positive + negative) -
1.96 * SQRT((positive * negative)/(positive + negative) + 0.9604)/
(positive + negative))/(1 + 3.8416/(positive + negative))
AS ci_lower_bound FROM widgets WHERE positive + negative > 0
ORDER BY ci_lower_bound DESC;
Comment évaluez-vous des commentaires positifs vs commentaires négatifs? Les «likeits» devraient-ils être aussi importants que les commentaires? –
nous n'évaluons pas les commentaires positifs vs négatifs. Si "likeits" devrait être aussi important que les commentaires est quelque chose que je jette là-bas. Je suis assez flexible. (peut-être "le plus actif" pourrait être un meilleur terme que "le plus populaire") – paullb