Questions tagged «median»

30
在SQL Server中计算中位数的函数
根据MSDN,Median在Transact-SQL中不能作为聚合函数使用。但是,我想找出是否可以创建此功能(使用创建聚合功能,用户定义的功能或其他方法)。 这样做的最佳方法是什么(如果可能的话)-允许在聚合查询中计算中值(假设数字数据类型)?

8
从整数流中查找运行中位数
可能重复: C语言中的滚动中值算法 假定从数据流中读取整数。查找迄今为止有效读取的元素的中位数。 我已经读过的解决方案:我们可以在左侧使用最大堆表示小于有效中位数的元素,在右侧使用最小堆表示大于有效中位数的元素。 处理传入的元素后,堆中的元素数量最多相差1个元素。当两个堆包含相同数量的元素时,我们发现堆根数据的平均值为有效中位数。当堆不平衡时,我们从包含更多元素的堆根中选择有效中位数。 但是我们将如何构造最大堆和最小堆,即我们如何知道有效中位数?我认为我们将在max-heap中插入1个元素,然后在min-heap中插入下一个1个元素,以此类推。纠正我,如果我在这里错了。
223 algorithm  heap  median 

30
用MySQL计算中位数的简单方法
用MySQL计算中位数的最简单方法(希望不是太慢)是什么?我过去一直AVG(x)在寻找均值,但是我很难找到一种简单的方法来计算中位数。现在,我将所有行返回给PHP,进行排序,然后选择中间行,但是肯定必须有一个简单的方法可以在单个MySQL查询中完成。 示例数据: id | val -------- 1 4 2 7 3 2 4 2 5 9 6 8 7 3 排序val给出2 2 3 4 7 8 9,因此中位数应为4,而SELECT AVG(val)其中== 5。
207 sql  mysql  statistics  median 

23
在Python中查找列表的中位数
您如何在Python中找到列表的中位数?该列表可以是任何大小,并且不能保证数字以任何特定顺序排列。 如果列表包含偶数个元素,则该函数应返回中间两个元素的平均值。 以下是一些示例(排序用于显示目的): median([1]) == 1 median([1, 1]) == 1 median([1, 1, 2, 4]) == 1.5 median([0, 2, 5, 6, 8, 9, 9]) == 6 median([0, 0, 0, 0, 4, 4, 6, 8]) == 2
181 python  list  sorting  median 

12
C语言的滚动中值算法
我目前正在研究一种算法,以在C语言中实现滚动中值过滤器(类似于滚动均值过滤器)。从我对文献的搜索来看,似乎有两种相当有效的方法来实现。首先是对值的初始窗口进行排序,然后执行二进制搜索以插入新值,并在每次迭代时都删除现有值。 第二种方法(来自Hardle和Steiger,1995年,JRSS-C,算法296)构建了一个双端堆结构,一端为maxheap,另一端为minheap,中间为中值。这产生了线性时间算法,而不是O(n log n)。 这是我的问题:实施前者是可行的,但是我需要在数百万个时间序列上运行它,因此效率非常重要。事实证明,后者非常难以实施。我在R的stats软件包的代码的Trunmed.c文件中找到了代码,但这是相当难以理解的。 有人知道线性时间滚动中值算法的编写良好的C实现吗? 编辑:链接到Trunmed.c代码http://google.com/codesearch/p?hl=zh-CN&sa=N&cd=1&ct=rc#mYw3h_Lb_e0/R-2.2.0/src/library/stats/src/Trunmed.c
114 c  algorithm  r  statistics  median 

13
用于估计统计中值,众数,模式,偏度,峰度的“在线”(迭代器)算法?
是否有一种算法可以估计一组值的中值,众数,偏度和/或峰度,但是不需要一次将所有值存储在内存中? 我想计算基本统计数据: 平均值:算术平均值 方差:与平均值的平方偏差的平均值 标准偏差:方差的平方根 中位数:将数字大半部分与小半部分分开的值 模式:集合中最常出现的值 偏度:tl; 博士 峰度:tl; 博士 计算其中任何一个的基本公式是小学算术,我确实知道它们。也有许多实现它们的统计资料库。 我的问题是我正在处理的集合中有大量(十亿个)值:在Python中工作,我不能仅仅创建包含数十亿个元素的列表或哈希。即使我用C编写此代码,十亿个元素的数组也不太实用。 数据未排序。它是由其他过程动态随机产生的。每个集合的大小是高度可变的,并且大小不会事先知道。 我已经弄清楚了如何很好地处理均值和方差,以任意顺序遍历集合中的每个值。(实际上,就我而言,我按它们生成的顺序进行处理。)这是我使用的算法,由http://en.wikipedia.org/wiki/Algorithms_for_calculating_variance#On-line_algorithm提供: 初始化三个变量:count,sum和sum_of_squares 对于每个值: 增量计数。 将值相加。 将值的平方添加到sum_of_squares。 将总和除以计数,并存储为变量均值。 将sum_of_squares除以计数,存储为变量mean_of_squares。 平方均值,存储为square_of_mean。 从mean_of_squares中减去square_of_mean,并存储为方差。 输出均值和方差。 这种“在线”算法具有弱点(例如,由于sum_of_squares迅速增长到大于整数范围或浮点精度的精度问题),但是它基本上满足了我的需要,而不必在每个集合中存储每个值。 但是我不知道是否存在类似的技术来估算其他统计数据(中位数,众数,偏度,峰度)。只要处理N个值所需的内存大大小于O(N),我就可以使用有偏估计器,甚至可以使用在某种程度上损害准确性的方法。 如果该库具有“在线”计算这些操作中的一项或多项的功能,则将我指向现有的统计信息库也将有所帮助。

4
numpy.median.reduceat的快速替代方案
关于此答案,是否存在一种快速方法来计算具有不等数量元素的组的数组的中值? 例如: data = [1.00, 1.05, 1.30, 1.20, 1.06, 1.54, 1.33, 1.87, 1.67, ... ] index = [0, 0, 1, 1, 1, 1, 2, 3, 3, ... ] 然后,我想计算数量与每组中位数之间的差(例如,组的中位数0为1.025,则第一个结果为1.00 - 1.025 = -0.025)。因此,对于上面的数组,结果将显示为: result = [-0.025, 0.025, 0.05, -0.05, -0.19, 0.29, 0.00, 0.10, -0.10, ...] 既然np.median.reduceat还不存在,还有另一种快速的方法来实现这一目标吗?我的数组将包含数百万行,因此速度至关重要! 可以假定索引是连续且有序的(如果不是,则很容易对其进行转换)。 性能比较的示例数据: import numpy …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.