朱莉娅相当于R的qnorm()?

问题描述 投票:1回答:2

我试图将这些行从R翻译成Julia:

n <- 100
mean <- 0
sd <- 1
x <- qnorm(seq(1 / n, 1 - 1 / n, length.out = n), mean, sd)

但是,我在使用qnorm函数时遇到了麻烦。我搜索了“分位数函数”并找到了quantile()函数。但是,R的版本返回长度为100的向量,而Julia的版本返回长度为5的向量。

这是我的尝试:

import Distributions
n = 100
x = Distributions.quantile(collect(range(1/n, stop=1-1/n, length=n))) 
r julia distribution normal-distribution quantile
2个回答
5
投票

在Julia 1.1下你应该像这样广播对quantile的调用:

quantile.(Normal(0, 1), range(1/n, 1-1/n, length = n))

2
投票

尝试

using Distributions
n = 100
qs = range(1/n, stop=1-1/n, length=n) # no need to collect it
d = Normal() # default is mean = 0, std = 1
result = [quantile(d, q) for q in qs]

Julia使用多个调度为给定的分布选择合适的quantile方法,与R似乎有前缀的R相对应。根据documentation,第一个参数应该是分布,第二个参数是你要评估逆cdf的点。

奇怪的是,当我尝试做quantile.(d, qs)(广播分位数调用)时,我收到错误。更新:在这种情况下,请参阅Bogumil的答案。在我的基准测试中,两种方法都具有相同的速度。

© www.soinside.com 2019 - 2024. All rights reserved.