gnuplot和octave:具有倾斜的分布曲线

时间:2015-12-31 12:43:14

标签: gnuplot octave

我正在尝试绘制一些分布曲线,并且我使用octave获得了以下内容:

  • 意味着
  • 中值
  • 标准差
  • 方差
  • 偏度

AFAIK,经过长时间搜索互联网,我只找到了正常/高斯分布曲线的例子:

std=0.1674766919608221
mean=0.6058016666666665
normal(x, mu, sd) = (1/(sd*sqrt(2*pi)))*exp(-(x-mu)**2/(2*sd**2))
plot normal(x,mean,std) with lines

绘制了一条漂亮的曲线。 但是,我试图绘制一个偏斜的,根据均值,中位数和偏度的差异来判断,例如shown here

如何画出gnuplot这样的曲线? gnuplot示例显示了非常相似的at the bottom example,但他们并没有解释他们如何绘制/绘制它。

修改

为了计算实际功能并查找其参数,我在math.stackexchange询问了哪里得到了彻底的答复。 我现在意识到这是两个问题,但似乎我需要的是使用octave来获取我的数据的PDF,然后获得CDF。 Cristoph与skew normal distribution的维基百科链接表明我需要的是:

f(x) = 2*stdnormal_pdf(x)*stdnormal_cdf(a*x)

当然我错了。 获取形状的 alpha 不清楚(我的math post建议首先使用求解 delta ,然后使用 alpha 这似乎非常复杂为了我)。 我愿意打赌octave中有一个功能,这使我无法做到这一点。

1 个答案:

答案 0 :(得分:1)

Skew normal distribution用于函数定义。然后,您可以使用

绘制偏斜正态分布的概率密度函数
normal(x) = 1.0 / sqrt(2*pi) * exp(-(x**2)/2.0)
cdf(x) = 0.5 * (1 + erf(x / sqrt(2)))
skewed_normal(x, x0, sigma, alpha) = (2.0 / sigma) * normal((x - x0) / sigma) * cdf(alpha * (x - x0) / sigma)

set xrange [-4:4]
plot skewed_normal(x, 0, 1, -4) title 'α = -4',\
     skewed_normal(x, 0, 1, -1) title 'α = -1',\
     skewed_normal(x, 0, 1, 0) title 'α = 0',\
     skewed_normal(x, 0, 1, 1) title 'α = 1',\
     skewed_normal(x, 0, 1, 4) title 'α = 4'

enter image description here