首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用百分位点数定义分布

使用百分位点数定义分布
EN

Stack Overflow用户
提问于 2016-03-04 13:40:08
回答 1查看 1.5K关注 0票数 3

在@Risk和水晶球中,我们可以使用百分位数数据定义概率分布。例如,我们只需输入3个数据点,例如P10、P50和P90估计,就可以定义日志正态分布。然后,该软件将推出PDF的分布。这到底是怎么做到的?例如,在Matlab中,Excel或Mathematica就可以了。

在文档中,没有明确说明软件是如何做到的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-05 11:34:40

从对数正态分布开始,由平均值=1和标准差= 0.5的正态分布导出,计算第10、50和90百分位数。

代码语言:javascript
复制
μ = 1;
σ = 0.5;

p[n_] := Quantile[LogNormalDistribution[μ, σ], n]

p10 = p[0.1]

1.43222

代码语言:javascript
复制
p50 = p[0.5]

2.71828

代码语言:javascript
复制
p90 = p[0.9]

5.15917

代码语言:javascript
复制
Show[
  Plot[PDF[LogNormalDistribution[μ, σ], x], {x, 0, 12}],
  Plot[PDF[LogNormalDistribution[μ, σ], x], {x, 0, #},
    PlotStyle -> None, Filling -> Axis] & /@ {p10, p50, p90},
  Epilog -> MapThread[Inset[#1, {#2, 0.025}] &,
   {{"p10", "p50", "p90"}, {p10, p50, p90}}]]

现在,根据OP的问题,只从百分位数反算μσ

代码语言:javascript
复制
Clear[μ, σ]

sol = Quiet@First@Solve[{
     Quantile[LogNormalDistribution[μ, σ], 0.1] == p10,
     Quantile[LogNormalDistribution[μ, σ], 0.5] == p50, 
     Quantile[LogNormalDistribution[μ, σ], 0.9] == p90}, {μ, σ}]

{ -> 1.,σ-> 0.5}

对数-正常均值和方差:

代码语言:javascript
复制
Mean[LogNormalDistribution[μ, σ]] /. sol

3.08022

代码语言:javascript
复制
Variance[LogNormalDistribution[μ, σ]] /. sol

2.69476

检查符号的评估和定义,以了解计算。

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

https://stackoverflow.com/questions/35797549

复制
相关文章

相似问题

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