首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择“相似”组-从概率开始?

选择“相似”组-从概率开始?
EN

Stack Overflow用户
提问于 2011-07-13 18:39:16
回答 3查看 220关注 0票数 3

假设我有一个包含10.000行(代表10.000个人)和以下列的表:

代码语言:javascript
复制
id    qualification    gender    age    income

当我选择所有具有特定资质的人(比如“水管工”)时,我得到了100行,具有特定的性别、年龄和收入分布。

我现在想做的是选择某种类型的测试组来检查收入是否受到资质或其他属性分布的影响。

这意味着(现在我来讨论我的问题)我希望获得另一组100行,具有相同的性别和年龄分布(但资格值不同)。当然,这100行应该是随机选择的。

我的主要问题是,当我选择随机行时,我不知道如何编写一个SQL命令来处理分布(当然,在这个上下文中,这些分布可以而且可能应该被视为概率)。

提前谢谢你!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-14 09:19:52

您似乎正在尝试解决与this extremely thorny problem紧密相关的问题。

维基页面描述了许多在数据库中检测相关性的方法,包括对以前的pg-hacker讨论(here's another)的引用,各种(被拒绝的)补丁建议,以及讨论该主题的科学论文。

如果这听起来太棘手,我会赞同Catcall的pl/r建议。或另一个可应用的pl。

顺便说一句,你可能会发现pg-kmeans也很有用:

http://pgxn.org/dist/kmeans/doc/kmeans.html

以及PostStat (我自己从未尝试过):

http://poststat.projects.postgresql.org/

票数 2
EN

Stack Overflow用户

发布于 2011-07-13 19:03:19

stats.stackexchange.com上可能会更好。

选择随机行很容易,但匹配分布却很难。

您可以编写一个存储过程,

  • 重复随机选择100行,
  • 计算统计数据,
  • 并在找到100行时返回。

但这看起来很像在海滩上踢死鲸鱼。而且,根据您的数据,它可能永远不会返回。

在花费大量时间尝试在SQL中实现这一点之前,请考虑花一点时间看看使用R等统计软件实现这一点有多难(或有多容易)。

后来的

刚刚发现有一个名为pl/R的包。

PL/R是一种可加载的过程语言,使您能够用R编程语言编写PostgreSQL函数和触发器。PL/R提供了R语言中函数编写器所具有的大部分(如果不是全部)功能。

Google postgresql +statistics +r +pl,获取论文和教程的其他链接。

票数 1
EN

Stack Overflow用户

发布于 2011-07-13 18:50:46

代码语言:javascript
复制
SELECT * from Table1 order by random() limit 100;

random()对PostgreSql有效。对于MySql,您可以使用RAND()代替Random()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6677603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档