【问题标题】:R's qunif vs Python's stats.uniform.ppf (different results)R 的 qunif 与 Python 的 stats.uniform.ppf(不同的结果)
【发布时间】:2020-04-02 19:10:36
【问题描述】:

我有一个数组(分布),我想在 ab 的某个范围内进行分布,这是在 R 中使用函数 qunif 完成的,我想在 Python 中完成它给出不同的结果:

R

a <- c(0.012701112, 0.131852757, 0.230918602, 0.382584686, 0.422162992,
       0.553339539, 0.64807742, 0.735555988, 0.813598841, 0.975585224)
b <- qunif(a, -4, 4)

b
# -3.8983911 -2.9451779 -2.1526512 -0.9393225 -0.6226961 
# 0.4267163  1.1846194  1.8844479  2.5087907  3.8046818

Python

import scipy.stats as stats

a = [0.012701112, 0.131852757, 0.230918602, 0.382584686, 0.422162992,
     0.553339539, 0.64807742, 0.735555988, 0.813598841, 0.975585224]
b = stats.uniform.ppf(a, -4, 4)

b
# [-3.94919555 -3.47258897 -3.07632559 -2.46966126 -2.31134803 
#  -1.78664184 -1.40769032 -1.05777605 -0.74560464 -0.0976591 ]

我看到here这两个功能是等价的。

【问题讨论】:

  • 请注意,qunif(p, m, M) 只不过是m + (M-m)*p

标签: python r scipy statistics


【解决方案1】:

The SciPy stats.uniformlocscale 参数化,而R 函数由minmax 参数化。等效的 SciPy 将是

b = stats.uniform.ppf(a, loc=-4, scale=8)
b
# array([-3.8983911 , -2.94517794, -2.15265118, -0.93932251, -0.62269606,
#        0.42671631,  1.18461936,  1.8844479 ,  2.50879073,  3.80468179])

【讨论】:

    猜你喜欢
    • 2020-08-30
    • 2021-04-19
    • 2017-06-05
    • 1970-01-01
    • 2021-04-02
    • 2015-07-30
    • 2018-09-14
    • 1970-01-01
    • 2015-01-19
    相关资源
    最近更新 更多