gnuplot和倍频程:一条有倾斜的分布曲线
我正在尝试绘制一些分布曲线,我使用gnuplot和倍频程:一条有倾斜的分布曲线,gnuplot,octave,Gnuplot,Octave,我正在尝试绘制一些分布曲线,我使用倍频程获得了以下结果: 卑鄙 中间带 标准差 差异 偏斜 经过长时间的互联网搜索,我只找到了正态/高斯分布曲线的例子: 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 这画了一条漂亮的曲线。 然而,我试图画一个偏
倍频程
获得了以下结果:
- 卑鄙
- 中间带
- 标准差
- 差异
- 偏斜
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
这画了一条漂亮的曲线。
然而,我试图画一个偏斜的,通过均值,中值和偏斜度的差异来判断,比如
我怎样才能画出这样一条曲线?
gnuplot示例显示了一些非常类似的内容,但他们没有解释如何绘制/绘制它
编辑
为了计算实际的函数并找到它的参数,我问了在哪里我得到了一个彻底的答复。
我现在意识到这是两个问题,但似乎我需要的是使用octave
获取数据的PDF,然后获取CDF。
Cristoph的维基百科链接表明我需要的是:
f(x) = 2*stdnormal_pdf(x)*stdnormal_cdf(a*x)
当然,我可能错了。
获取形状的alpha是不清楚的(我建议先对delta进行求解,然后对alpha进行求解,这对我来说非常复杂)。
我敢打赌,八度音程中有一个函数,我无法做到这一点。函数定义。然后,您可以使用
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'
嗨,非常感谢你的回答。我问math.stackexchange如何计算实际公式。我猜我只需要计算数据的sigma和alpha,然后使用你定义的函数?