MySQL Math - Is it possible to calculate a correlation in a query?

后端 未结 2 1899
日久生厌
日久生厌 2021-02-06 06:06

In a MySQL (5.1) database table there is data that represents:

  • how long a user takes to perform a task and
  • how many items the user handled during the tas
2条回答
  •  悲哀的现实
    2021-02-06 06:28

    Here's a rough implementation of the sample correlation coefficient as described in:

    Wikipedia - Correlation and Dependence

    create table sample( x float not null, y float not null );
    insert into sample values (1, 10), (2, 4), (3, 5), (6,17);
    
    select @ax := avg(x), 
           @ay := avg(y), 
           @div := (stddev_samp(x) * stddev_samp(y))
    from sample;
    
    select sum( ( x - @ax ) * (y - @ay) ) / ((count(x) -1) * @div) from sample;
    +---------------------------------------------------------+
    | sum( ( x - @ax ) * (y - @ay) ) / ((count(x) -1) * @div) |
    +---------------------------------------------------------+
    |                                       0.700885077729073 |
    +---------------------------------------------------------+
    

提交回复
热议问题