php - 分发评分数据以增加标准偏差

标签 php mysql statistics rating rating-system

给定一个项目表,每个项目的评分都在 0 到 100 之间。为了相对于彼此更“均匀”地分配值,我需要研究什么术语或方法?我意识到我正在寻求增加标准偏差值。

我相信这一定是评级系统的一个普遍问题。数据库中约 90% 的项目集中在相似的“评级”周围,使得该值的意义不大。理想情况下,我想要一个解决方案,其中给定项目的评级在某种程度上相对于表中的所有其他项目。

最终,我希望直接在 SQL (MySQL) 中或在必要时使用 PHP 来实现这一点。

下面的例子...

id  |  rating

01  |  98 
02  |  92 
03  |  85 
04  |  80 
05  |  75 
06  |  71 
07  |  69 
08  |  66 
09  |  64
10  |  62     //Data starts to 'cluster' around here
11  |  61 
12  |  61 
13  |  61 
14  |  60 
15  |  59
16  |  58
17  |  56
18  |  53
19  |  50
20  |  45
21  |  38
22  |  30
23  |  20
24  |  5

最佳答案

这可以在 MySQL 中完成,但需要一些计算。首先,您需要平均数和标准差。两者都是 MySQL 函数。那么,与均值相差多少标准差才算一个有效值?我假设它是 2,因为这很常见。现在,Mean-(2*StdDev) 是最小值,Mean+(2*StdDev) 是最大值。假设您编写了一个查询(请注意,这些天我 100% 的时间都在使用 Oracle,因此我的语法可能有点像 Oracle):

select avg(value)-2*stddev(value) minval,
avg(value)+2*stddev(value) maxval
from mytable

您可以使它成为一个子查询并加入它。然后,您可以计算 min 和 max val 之间的百分比:

select (value-mival)/(maxval-minval) pctval
from mytable
join (
    select avg(value)-2*stddev(value) minval,
    avg(value)+2*stddev(value) maxval
    from mytable
)

结果将是从 minval 到 maxval 的百分比。您可以将其乘以 100 以获得 0 到 100 的值(异常值将有 <0 和 >100 的值)。

关于php - 分发评分数据以增加标准偏差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29302930/

相关文章:

php - Angularjs - Mysql - CRUD 操作和安全

php - 调用 PHP explode 并访问第一个元素?

java - 在Android中创建JSON ArrayList/JSON对象并发送到PHP

mysql - 两个程序共享同一个 mysql 数据库 - 每个程序都创建了哪些表?

mysql - 无法查询总和并将该总和与 mysql 查询中的另一个总计进行比较

algorithm - 从向量历史预测二进制占用向量

php include 内容未加载,可能的哈希标签/地址问题

mysql - 为什么这个 SQL INNER JOIN 有效而这个无效?

r - 来 self 的数据集的有条件分组的直方图

r - 统计数据::疯了?