我正在尝试绘制一些分布曲线,并且我使用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
中有一个功能,这使我无法做到这一点。
答案 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'