【问题标题】:How to check if sample data fit uniform distribution in sql如何检查样本数据是否符合sql中的均匀分布
【发布时间】:2017-12-16 08:09:55
【问题描述】:

我在 SQL 数据库中有一个 x,y 数据表,例如

12.5,26.3
12.5,26.4
12.6,26.3
12.6,26.4
...

如何判断数据集是否均匀分布

【问题讨论】:

  • 如果您想获得有意义的答案,您确实应该提供更多详细信息。比如你有一个分布范围还是应该也适合?你有多少数据点? “确定”到底是什么意思?统计测试只能给你概率,随机来源没有确定性。
  • @SergGr 感谢您的回复,总样本量超过 7,000,000 条记录,范围为 gps (+90.0000, -90.0000) , (+180.0000,-180.0000),以及我的糟糕英语“确定”它的意思是“所有样本数据的分布就像......均匀分布,好像由均匀分布函数生成一样”
  • 在统计中没有确定性,只有置信度。即使是真正公平的硬币也可以连续出现 100 次正面。这是非常不可能的。无论如何,到目前为止你尝试过什么?您是否尝试过Pearson's chi-squared testPearson correlation coefficient 之类的基本操作?你的问题到底出在哪里?
  • @SergGr 再次感谢“皮尔逊卡方检验”的建议,我自己找到了解决方案,并在下面发布了答案。
  • 很高兴它有帮助。我不确定您的真正目标是什么,但取决于它,您可能还需要检查相关性。例如,生成为latitude = random(-90; 90)longitude = 2 * latitude 的值很难被视为真正随机的,尽管latitudelongitude 这样的独立值可以通过任何随机性测试。

标签: sql math distribution


【解决方案1】:

回答我自己的问题:

  1. 按经纬度分组并在地图上创建一些矩形(纬度和经度的精度为 0.01)

创建表 tbl_to_check_if_of_uniform_distribution 为 SELECT cast(lat*100 as int) as lat100, cast(lon*100 as int) as lon100, count(1) as latlon100cnt from tbl_some_lat_and_lon_as_double group by cast(lat*100 as int), cast(lon*100 as int) ;

  1. 检查矩形是否可以描述为更大矩形内的“均匀分布”(Pearson 卡方检验)

我使用 python 绘制了这些点,并查看latlon100cnt 在更大的矩形区域中是否都相同,并按 cast(lat*10 as int)、cast(lon*10 as int) 分组以查看是否方差和最大值(latlon100cnt)-min(latlon100cnt)之类的东西

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 2012-10-24
    • 1970-01-01
    • 2021-03-10
    相关资源
    最近更新 更多