请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 15517|回复: 1

用sql实现相关系数的计算

[复制链接]

新浪微博达人勋

发表于 2018-5-25 13:04:54 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 静言_GRMC 于 2018-5-25 13:07 编辑

平时工作中要用到好多统计查询功能,一直用sql比较顺手,最近需要做相关系数方面的统计,发现除了Oracle自带了函数外,ms sql和mysql都没有自带计算的函数,因此根据相关系数的公式,编写了sql来实现直接从数据库计算,简单又方便。
(当然用excel,matlab之类的一个函数搞定,但数据存在数据库里面,用其他的方式还得把数据导出来才行,通过sql可以直接在数据库计算,更加的方便)
TIM截图20180525130616.png
MySQL计算相关关系示例代码:
create table sample( xfloat 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) ) * @div) from sample;
+---------------------------------------------------------+
| sum( ( x - @ax ) * (y -@ay) ) / ((count(x) ) * @div) |
+---------------------------------------------------------+
|                                      0.700885077729073 |
+---------------------------------------------------------+

Oracle有自带相关系数的函数CORR 可以直接计算。

此外还可以计算平均误差ME,平均绝对误差MAE,均方根误差RMSE
select Sum(X-Y)/COUNT(X) as ME,Sum(abs(X-Y))/COUNT(X) as MAE,SQRT(sum(POWER(X-Y,2))/COUNT(X)) as RMSE FROM TABLE

是不是也很方便呢


密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-5-29 07:43:54 | 显示全部楼层
学习了,非常感谢
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表