标签: quantile

什么是熊猫系列的分位数函数的反转?

分位数函数给出了给定的大熊猫系列分位数,

例如

s.quantile(0.9)是4.2

是否存在反函数(即累积分布),它找到值x

s.quantile(X)= 4

谢谢

python quantile pandas

31
推荐指数
6
解决办法
1万
查看次数

r仅从quantile()函数获取值

对于可能是个愚蠢的问题我很抱歉.当我做:

> quantile(df$column, .75) #get 3rd quartile
Run Code Online (Sandbox Code Playgroud)

我得到类似的东西

75% 
1234.5 
Run Code Online (Sandbox Code Playgroud)

有没有办法获得没有描述性"75%"字符串的值(1234.5)?非常感谢你.

r quantile

28
推荐指数
3
解决办法
3万
查看次数

Pandas Dataframe groupby 描述 8x ~比单独计算慢

以下代码使用两种不同的方法汇总数字数据。

一种方法使用 Dataframe().describe() 并传递一些特定的额外百分位数。

第二种方法是分别计算的摘要统计(平均值,标准,N),它堆叠,计算相同的位数,然后由索引追加两个和排序所以结果是基本相同的第一种方法。

有一些细微的命名差异,我们可以清理后记,因为汇总数据很小,所以速度非常快。

事实证明,在这个例子中,使用 describe 函数大约慢了 8 倍。

我正在寻找原因以及可能会进一步加快速度的任何其他方法的建议(过滤器、组、值)都从 UI 传递到龙卷风服务 - 所以速度很重要,因为用户正在等待结果,并且数据可能比这个例子更大。

    import pandas as pd
    import numpy as np
    from datetime import datetime

    def make_data (n):
        
        ts = datetime.now().timestamp() + abs(np.random.normal(60, 30, n)).cumsum()
        
        df = pd.DataFrame({
            'c1': np.random.choice(list('ABCDEFGH'), n),
            'c2': np.random.choice(list('ABCDEFGH'), n),
            'c3': np.random.choice(list('ABCDEFGH'), n),
            't1': np.random.randint(1, 20, n),
            't2': pd.to_datetime(ts, unit='s'),
            'x1': np.random.randn(n),
            'x2': np.random.randn(n),
            'x3': np.random.randn(n)
            })
        
        return df
    
    def summarize_numeric_1 (df, mask, groups, values, quantiles): 
        
        dfg = df[mask].groupby(groups)[values] …
Run Code Online (Sandbox Code Playgroud)

python describe percentile quantile pandas

16
推荐指数
1
解决办法
857
查看次数

非参数分位数回归曲线到散点图

我创建了一个散点图(多组GRP)用IV=time,DV=concentration.我想在(0.025,0.05,0.5,0.95,0.975)我的情节中添加分位数回归曲线.

顺便说一句,这就是我创建散点图的方法:

attach(E)  ## E is the name I gave to my data
## Change Group to factor so that may work with levels in the legend
Group<-as.character(Group)
Group<-as.factor(Group)

## Make the colored scatter-plot
mycolors = c('red','orange','green','cornflowerblue')
plot(Time,Concentration,main="Template",xlab="Time",ylab="Concentration",pch=18,col=mycolors[Group])

## This also works identically
## with(E,plot(Time,Concentration,col=mycolors[Group],main="Template",xlab="Time",ylab="Concentration",pch=18))

## Use identify to identify each point by group number (to check)
## identify(Time,Concentration,col=mycolors[Group],labels=Group)
## Press Esc or press Stop to stop identify function

## Create legend
## Use …
Run Code Online (Sandbox Code Playgroud)

regression r scatter-plot quantile

14
推荐指数
2
解决办法
3182
查看次数

Numpy 函数获取与给定值对应的分位数

我看到很多类似 R 的问题,但我找不到专门针对 Python 的问题,最好使用 numpy。

假设我有一组观察结果存储在x. q * 100我可以获得人口累计百分比的值。

# Import numpy
import numpy as np

# Get 75th percentile
np.quantile(a=x, q=0.75)
Run Code Online (Sandbox Code Playgroud)

但是,我想知道是否有一个函数可以实现相反的功能。也就是说,一个 numpy 函数将一个值作为输入并返回q

为了进一步扩展这一点,scipy 分发对象有一个ppf方法可以让我做到这一点。我正在寻找 numpy 中类似的东西。它存在吗?

python numpy quantile

14
推荐指数
2
解决办法
1万
查看次数

boost中的分位数函数(C++)

从文档提升来看,似乎为正态分布和伽玛分布提供了分位数函数(逆cdf函数),但我不清楚如何实际使用它们.有人可以贴一个例子吗?

c++ boost quantile

10
推荐指数
1
解决办法
1万
查看次数

R,基于方差截止的滤波器矩阵

请参阅下面的编辑 使用R,我想过滤矩阵(基因表达数据)并仅保留具有高方差值的行(基因/探针).例如,我只想保留具有底部和顶部百分位数值的行(例如,低于20%且高于80%).我想将我的研究仅限于下游分析的高变异基因.R中有基因过滤的常用方法吗?

我的矩阵有18个样本(列)和47000个探针(行),其值为log2变换和标准化.我知道该quantile()功能可以识别每个样品列中的20%和80%截止值.我无法弄清楚如何为整个矩阵找到这些值,然后将原始矩阵子集化以删除所有"非变化"行.

示例矩阵的平均值为5.97,因此最后三行应该被删除,因为它们包含20%和80%截止值之间的值:

> m

                sample1 sample2 sample3 sample4 sample5 sample6
ILMN_1762337    7.86    5.05    4.89    5.74    6.78    6.41
ILMN_2055271    5.72    4.29    4.64    5.00    6.30    8.02
ILMN_1736007    3.82    6.48    6.06    7.13    8.20    4.06
ILMN_2383229    6.34    4.34    6.12    6.83    4.82    5.57
ILMN_1806310    6.15    6.37    5.54    5.22    4.59    6.28
ILMN_1653355    7.01    4.73    6.62    6.27    4.77    6.12
ILMN_1705025    6.09    6.68    6.80    6.85    8.35    4.15
ILMN_1814316    5.77    5.17    5.94    6.51    7.12    7.20
ILMN_1814317    5.97    5.97    5.97    5.97    5.97    5.97
ILMN_1814318    5.97    5.97 …
Run Code Online (Sandbox Code Playgroud)

r subset variance quantile

10
推荐指数
2
解决办法
9127
查看次数

增量计算大量数据的分位数的方法

我需要计算大量数据的分位数.

假设我们只能通过某些部分(即大矩阵的一行)获取数据.要计算Q3分位数,需要获取数据的所有部分并将其存储在某处,然后对其进行排序并计算分位数:

List<double> allData = new List<double>();
// This is only an example; the portions of data are not really rows of some matrix
foreach(var row in matrix) 
{
    allData.AddRange(row);
}

allData.Sort();
double p = 0.75 * allData.Count;
int idQ3 = (int)Math.Ceiling(p) - 1;
double Q3 = allData[idQ3];
Run Code Online (Sandbox Code Playgroud)

我想找到一种获得分位数的方法,而不将数据存储在中间变量中.最好的解决方案是计算第一行中间结果的一些参数,然后逐步调整下一行.

注意:

  • 这些数据集非常大(每行约5000个元素)
  • 可以估计Q3,它不必是精确值.
  • 我将数据部分称为"行",但它们可以有不同的长度!通常它变化不大(+/-几百个样本),但它会有所不同!

这个问题类似于"在线"(迭代器)算法,用于估计统计中位数,模式,偏度,峰度,但我需要计算分位数.

此外,本主题中的文章很少,即:

在尝试实现这些方法之前,我想知道是否有其他更快的方法来计算0.25/0.75分位数?

algorithm statistics numerical-methods quantile

9
推荐指数
1
解决办法
2200
查看次数

可靠地检索分位数函数的反函数

我已经阅读了其他文章(例如here),以获得分位数的“反向”-即,获得与一系列值中的某个值相对应的百分位数。

但是,对于相同的数据序列,答案并不能为我提供与分位数相同的值。

我还研究了分位数提供9种不同的算法来计算百分位数。

所以我的问题是:是否有可靠的方法来获得分位数函数的反函数?ecdf没有采用“类型”参数,因此似乎无法确保它们使用相同的方法。

可重现的示例:

# Simple data
x = 0:10
pcntile = 0.5


# Get value corresponding to a percentile using quantile
(pcntile_value <- quantile(x, pcntile))     

# 50%    
# 5               # returns 5 as expected for 50% percentile     



# Get percentile corresponding to a value using ecdf function
(pcntile_rev <- ecdf(x)(5))                


# [1] 0.5454545   #returns 54.54% as the percentile for the value 5


# Not the same answer as quantile produces
Run Code Online (Sandbox Code Playgroud)

r percentile quantile ecdf

9
推荐指数
1
解决办法
157
查看次数

如何通过data.table中的十分位数组计算统计数据

我有一个data.table,并希望按组计算统计数据.

R) set.seed(1)
R) DT=data.table(a=rnorm(100),b=rnorm(100))
Run Code Online (Sandbox Code Playgroud)

这些群体应该由

R) quantile(DT$a,probs=seq(.1,.9,.1))
           10%            20%            30%            40%            50%            60%            70%            80%            90% 
-1.05265747329 -0.61386923071 -0.37534201964 -0.07670312896  0.11390916079  0.37707993057  0.58121734252  0.77125359976  1.18106507751 
Run Code Online (Sandbox Code Playgroud)

我如何计算出每箱的平均值b,比如b=-.5我是否[-0.61386923071,-0.37534201964]在bin中3

r quantile data.table

8
推荐指数
1
解决办法
3171
查看次数